数据库原理实验作业
数据库原理 实验
实验二
1 | -- 创建数据库 |
SNo | SN | SEX | MC | BT | PhoneNo | BD |
---|---|---|---|---|---|---|
0433 | 张艳 | 女 | 生物 04 | 1986-9-13 | 1986-09-13 | |
0496 | 李越 | 男 | 电子 04 | 1984-2-23 | 1381290xxxx | 1984-02-23 |
0529 | 赵欣 | 男 | 会计 05 | 1984-1-27 | 1350222xxxx | 1984-01-27 |
0531 | 张志国 | 男 | 生物 05 | 1986-9-10 | 1331256xxxx | 1986-09-10 |
0538 | 于兰兰 | 女 | 生物 05 | 1984-2-20 | 1331200xxxx | 1984-02-20 |
0591 | 王丽丽 | 女 | 电子 05 | 1984-3-20 | 1332080xxxx | 1984-03-20 |
0592 | 王海强 | 男 | 电子 05 | 1986-11-1 | 1986-11-01 |
1 | -- 创建学生表 |
实验三
- 查询学生学号、班级和姓名
1 | SELECT SNo, MC, SN FROM 学生表 |
2.
1
SELECT CNo, CN, CREDITS, SP, TN FROM 课程表
3.
1
SELECT MC FROM 学生表
4.
1
2SELECT CNo, CN, CREDITS, SP,TN FROM 课程表
WHERE (SP>60)5.
1
2SELECT SNo, SN, BT FROM 学生表
WHERE BT LIKE '1986%'6.
1
2SELECT SNo, CNo FROM 学生作业表
WHERE (G1 >= 80) AND (G2 >= 80) AND (G3 >= 80)7.
1
2SELECT SNo, SN, MC FROM 学生表
WHERE SN LIKE N'张%'8.
1
2SELECT SNo, SN, SEX, MC, BT, PhoneNo FROM 学生表
WHERE (SEX = N'男') AND (MC LIKE '___05')9.
1
2SELECT SNo, CNo FROM 学生作业表
WHERE ( G1 IS NULL) OR (G2 IS NULL) OR (G3 IS NULL)10.
1
2SELECT SUM(G1) AS 总分 FROM 学生作业表
WHERE (SNo = '0538')
11.
1
2SELECT COUNT(SNo) AS 人数 FROM 学生作业表
WHERE (CNo = 'K001')12.
1
SELECT COUNT(MC) AS 班级数 FROM 学生表
13.
1
2
3
4
5
6
7SELECT SNo,
CAST(AVG(G1*1.0) AS DECIMAL(3,1)) 作业1平均分,
CAST(AVG(G2*1.0) AS DECIMAL(3,1)) 作业2平均分,
CAST(AVG(G3*1.0) AS DECIMAL(3,1)) 作业3平均分
FROM 学生作业表
GROUP BY SNo
HAVING (COUNT(*) >=3)- 查询于兰兰的选课信息,列出学号、姓名、课程名(两种连接查询方法)。
1 | /* 内连接查询*/ |
1 | /* (2). 外连接查询 */ |
实验四
- 1(1). 查询与张国志同班级的学生信息
1
2
3
4/* 自连接查询 */
SELECT S2.SNo, S2.SN, S2.SEX, S2.MC, S2.BT, S2.PhoneNo
FROM 学生表 AS S1 ,学生表 AS S2
WHERE S1.SN = N'张志国' AND S2.MC = S1.MC
1 | /* 子查询 */ |
- 1.(2)
1
2
3
4/* 自连接查询 */
SELECT C2.CNo, C2.CN, C2.CREDITS, C2.SP, C2.TN
FROM 课程表 AS C1, 课程表 AS C2
WHERE C1.CN = N'计算机应用基础' AND C2.SP > C1.SP
1 | /* 普通子查询 */ |
- 1.(3)
1
2
3/* 连接查询 */
SELECT 学生表.SNo, SN FROM 学生表,学生作业表
WHERE 学生表.SNo = 学生作业表.SNo AND 学生作业表.CNo = 'K002'
1 | /* 普通子查询 */ |
1 | /* 相关子查询 */ |
1 | /* 使用exists关键字的相关子查询 */ |
- 1.(4)
1
2
3
4SELECT SNo, CNo, G1, G2, G3
FROM 学生作业表
WHERE (CNo <> ALL (SELECT CNo FROM 学生作业表
WHERE CNo = 'K001' OR CNo = 'M001'))
2.(1)
1
2
3INSERT INTO 学生表 (SNo, SN, SEX, MC)
VALUES ('0593',N'张乐', N'男', N'电子 05')
SELECT SNo, SN, SEX, MC, BT, PhoneNo FROM 学生表2.(2)
1
2
3UPDATE 课程表
SET CREDITS = CREDITS * 2
SELECT CNo, CN, CREDITS, SP, TN FROM 课程表2.(3)
1 | DELETE FROM 学生表 |
实验五
- 创建电子05的学生视图
1
2
3
4CREATE VIEW Sub_DZ05
AS SELECT SNo, SN, SEX, MC, BT
FROM 学生表
WHERE MC = N'电子 05'
- 创建电子05的学生视图
显示结果1
2
3/* 查询视图 Sub_DZ05 */
SELECT SNo,SN,SEX,MC,BT
FROM Sub_DZ05
- 创建生物05的学生作业情况视图
1
2
3
4
5
6CREATE VIEW ZY_SW05
AS SELECT 学生表.SNo, SN, CN, G1, G2, G3
from 学生表, 课程表, 学生作业表
WHERE 学生表.SNo = 学生作业表.SNo AND
课程表.CNo = 学生作业表.CNo AND
学生表.MC = N'生物 05'
- 创建生物05的学生作业情况视图
显示结果1
2
3/* 查询视图 ZY_SW05 */
SELECT SNo, SN, CN, G1, G2, G3
FROM ZY_SW05
- 创建学生作业平均成绩视图
1
2
3
4CREATE VIEW AVGGRADE(SNo, A1, A2, A3)
AS SELECT 学生作业表.SNo, AVG(G1), AVG(G2), AVG(G3)
FROM 学生作业表
GROUP BY SNo
- 创建学生作业平均成绩视图
显示结果1
2
3/* 查询视图 AVGGRADE */
SELECT SNo, A1, A2, A3
FROM AVGGRADE
- 修改第2题中生物05的学生作业情况视图,去掉作业2,3的成绩
1
2
3
4
5
6ALTER VIEW ZY_SW05
AS SELECT 学生表.SNo, SN, CN, G1
from 学生表, 课程表, 学生作业表
WHERE 学生表.SNo = 学生作业表.SNo AND
课程表.CNo = 学生作业表.CNo AND
学生表.MC = N'生物 05'
- 修改第2题中生物05的学生作业情况视图,去掉作业2,3的成绩
显示结果1
2
3/* 查询更改后视图 ZY_SW05 */
SELECT SNo, SN, CN, G1
FROM ZY_SW05
1
2INSERT INTO Sub_DZ05 (SNo, SN, SEX, MC, BT)
VALUES ('0596',N'赵亦',N'男',N'电子 05','1986-6-8')
显示结果1
2
3/* 查询更新后视图 Sub_DZ05 */
SELECT SNo,SN,SEX,MC,BT
FROM Sub_DZ05
6.
1
2
3UPDATE Sub_DZ05
SET SEX = N'女'
WHERE SN = N'赵亦'显示结果
1
2
3/* 查询更新后视图 Sub_DZ05 */
SELECT SNo,SN,SEX,MC,BT
FROM Sub_DZ057.
1 | DELETE FROM Sub_DZ05 |
显示结果1
2
3/* 查询更新后视图 Sub_DZ05 */
SELECT SNo,SN,SEX,MC,BT
FROM Sub_DZ05
- 8.
1
DROP VIEW Sub_DZ05