没有合适的资源?快使用搜索试试~ 我知道了~
sql常用语句,经过测试的答案,使用版本2005 sql习题集及标准答案
资源推荐
资源详情
资源评论
1. 5 第一题:
问题描述:
为管理岗位业务培训信息,建立 3 个表:
S (S_ID,SN,SD,SA);S_ID,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年
龄
C (C_ID,CN );C_ID,CN 分别代表课程编号、课程名称
SC ( S_ID,C_ID,G );S_ID,C_ID,G 分别代表学号、所选修的课程编号、学习成绩
要求实现如下 5 个处理:
1 使用标准 SQL 嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
select S_ID,SN
FROM S
WHERE S_ID IN
(
SELECT S_ID
FROM SC
WHERE C_ID IN
(
SELECT C_ID
FROM C
WHERE CN='税收基础'
)
)
2 使用标准 SQL 嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
SELECT SN,SD
FROM S
WHERE S_ID IN
(
SELECT S_ID
FROM SC
WHERE C_ID='C2'
)
3 使用标准 SQL 嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
SELECT SN,SD
FROM S
WHERE S_ID NOT IN
(
SELECT S_ID
FROM SC
WHERE C_ID ='C5'
)
4 使用标准 SQL 嵌套语句查询选修全部课程的学员姓名和所属单位
SELECT SN,SD
FROM S
WHERE NOT EXISTS
(
SELECT *
FROM C
WHERE NOT EXISTS
(
SELECT *
FROM SC
WHERE S_ID=S.S_ID AND C_ID=C.C_ID
)
)
5 查询选修了课程的学员人数
SELECT COUNT(DISTINCT S_ID) AS NUM
FROM SC
6 查询选修课程超过 5 门的学员学号和所属单位
SELECT S_ID,SD
FROM S
WHERE S_ID IN
(
SELECT S_ID
FROM SC
GROUP BY S_ID
HAVING COUNT(DISTINCT C_ID)>5
)
2. 第二题
问题描述:
已知关系模式:
S(SNO,SNAME)学生关系。SNO 为学号,SNAME 为姓名
C(CNO,CNAME,CTEACHER) 课 程 关 系 。 CNO 为 课 程 号 , CNAME 为 课 程 名 ,
CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE)选课关系。SCGRADE 为成绩
要求实现如下 5 个处理:
1 找出没有选修过“李明”老师讲授课程的所有学生姓名
SELECT SNAME
FROM S
WHERE SNO NOT IN
(
SELECT SNO
FROM SC
WHERE CNO IN
(
SELECT CNO
FROM C
WHERE CTEACHER='李明'
)
)
2 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
SELECT S.SNAME,AVG(SC.SCGRADE) AS 平均成绩
FROM S,SC,(
SELECT SNO
FROM SC
Where SCGRADE<60
GROUP BY SNO
HAVING COUNT(DISTINCT CNO)>=2
) A
Where S.SNO=A.SNO AND SC.SNO=A.SNO
GROUP BY S.SNAME
3 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
SELECT SNAME FROM(
SELECT SNAME,COUNT(SNAME) AS DDD
FROM S,SC
WHERE S.SNO=SC.SNO AND SC.CNO IN('1','2')
GROUP BY SNAME
) B
WHERE
B.DDD =2
4 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
Select SNO
FROM(
SELECT SNO,SCGRADE
FROM SC
WHERE CNO='1') A,
(
SELECT SCGRADE
FROM SC
WHERE SNO='2'AND CNO='1'
) B
Where A.SCGRADE>B.SCGRADE
5 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
SELECT C.SNO,A.SCGRADE AS 成绩,B.SCGRADE AS 成绩
FROM
(
SELECT SNO
FROM SC
WHERE SC.CNO IN('01','02')
GROUP BY SNO
HAVING (COUNT(SNO))=2
) C,
(
SELECT SNO,SCGRADE
FROM SC
WHERE CNO='01'
) A,
(
SELECT SNO,SCGRADE
FROM SC
WHERE CNO='02'
) B
WHERE A.SCGRADE>B.SCGRADE AND C.SNO=A.SNO AND A.SNO=B.SNO
3. 第三题
问题描述:
本题用到下面三个关系表:
CARD 借书卡。CNO 卡号,NAME 姓名,CLASS 班级
BOOKS 图书。BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY
库存册数
BORROW 借书记录。CNO 借书卡号,BNO 书号,RDATE 还书日期
备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。
要求实现如下 15 个处理:
1 写出建立 BORROW 表的 SQL 语句,要求定义主码完整性约束和引用完整性约束。
CREATE TABLE BORROW
(
CNO VARCHAR (20) NOT NULL,
BNO VARCHAR (20) NOT NULL,
RDATE DATETIME
PRIMARY KEY(CNO,BNO)
CONSTRAINT FK_CND FOREIGN KEY(CNO) REFERENCES CARD(CNO),
CONSTRAINT FK_BND FOREIGN KEY (BNO) REFERENCES BOOKS(BNO)
)
2 找出借书超过 5 本的读者,输出借书卡号及所借图书册数。
SELECT CARD.CNO,COUNT(BNO) AS 册数
FROM CARD,BORROW
WHERE CARD.CNO=BORROW.CNO
GROUP BY CARD.CNO
HAVING COUNT(BNO)>5
3 查询借阅了"水浒"一书的读者,输出姓名及班级。
SELECT CARD.NAME,CARD.CLASS
FROM CARD,BORROW,BOOKS
WHERE CARD.CNO=BORROW.CNO
AND BORROW.BNO=BOOKS.BNO
AND BOOKS.BNAME='水浒'
4 查询过期未还图书,输出借阅者(卡号)、书号及还书日期。
SELECT A.CNO,B.BNO,C.RDATE
FROM CARD A, BOOKS B,BORROW C
WHERE A.CNO=C.CNO
AND C.BNO=B.BNO
AND GETDATE()>C.RDATE
剩余23页未读,继续阅读
资源评论
WL774331981
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功