没有合适的资源?快使用搜索试试~ 我知道了~
整理的sql练习,很经典,可以帮助学习,包含数据库的查询,统计,分组,也包含一些高级sql特性
资源推荐
资源详情
资源评论
设教学数据库 Education 有三个关系:
学生关系 S(SNO,SNAME,AGE,SEX,SDEPT);学习关
系 SC ( SNO , CNO , GRADE ) ; 课 程 关 系
C(CNO,CNAME,CDEPT,TNAME)
查询问题:
(1)检索计算机系的全体学生的学号,姓名和性别;
(2)检索学习课程号为 C2 的学生学号与姓名;
(3)检索选修课程名为“DS”的学生学号与姓名;
(4)检索选修课程号为 C2 或 C4 的学生学号;
(5)检索至少选修课程号为 C2 和 C4 的学生学号;
(6)检索不学 C2 课的学生姓名和年龄;
(7)检索学习全部课程的学生姓名;
(8)查询所学课程包含学生 S3 所学课程的学生学号。
(1)检索计算机系的全体学生的学号,姓名和性别;
SELECT Sno,Sname,Sex
FROM S
WHERE Sdept =’CS’;
(2)检索学习课程号为 C2 的学生学号与姓名;
(3)检索选修课程名为“DS”的学生学号与姓名
本查询涉及到学号、姓名和课程名三个属性,分别存放在 S
和 C 表中,但 S 和 C 表没有直接联系,必须通过 SC 表建立它们
二者的联系。 C → SC → S
基本思路:
(1)首先在 C 表中找出“DS”课程的课程号 Cno;
(2)然后在 SC 表中找出 Cno 等于第一步给出的 Cno 集合中
的某个元素 Cno;
(3)最后在 S 关系中选出 Sno 等于第二步中 Sno 集合中某个
元素的元组,取出 Sno 和 Sname 送入结果表列。
SELECT Sno,Sname
FROM S
WHERE Sno IN
(SELECT Sno
FROM SC
WHERE Cno IN
(SELECT Cno
FROM C
WHERE Cname=‘DS’));
(4)检索选修课程号为 C2 或 C4 的学生学号;
SELECT Sno
FROM SC
WHERE Cno=‘C2’ OR Cno=‘C4’;
(5)检索至少选修课程号为 C2 和 C4 的学生学号;
SELECT Sno
FROM SC X,SC Y
WHERE X.Sno=Y.Sno AND X.Cno=‘C2’ AND
Y.Cno=‘C4’ ;
(6)检索不学 C2 课的学生姓名和年龄;
(7)检索学习全部课程的学生姓名;
在表 S 中找学生,要求这个学生学了全部课程。换言之,在 S
表中找学生,在 C 中不存在一门课程,这个学生没有学。
SELECT Sname
FROM S
WHERE NOT EXISTS
(SELECT *
FROM C
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE SC.Sno=S.Sno AND SC.Cno=C.Cno));
(8)查询所学课程包含学生 S3 所学课程的学生学号。
分析:不存在这样的课程 Y,学生 S3 选了 Y,而学生 X 没有选。
SELECT DISTINCT Sno
FROM SC X
WHERE NOT EXISTS
(SELECT *
FROM SC Y
WHERE Y.Sno=‘S3’ AND NOT EXISTS
(SELECT *
2.SELECT
S.Sno,Sname
FROM S,SC
WHERE
S.Sno=SC.Sno
AND SC.Cno=‘C2’;
1.SELECT
Sno,Sname
FROM S
WHERE Sno IN
( SELECT Sno
FROM SC
WHERE
1.SELECT Sname
FROM S
WHERE Sno NOT IN
( SELECT Sno
FROM SC
WHERE
2.SELECT
Sname,Sage
FROM S
WHERE NOT EXISTS
( SELECT *
FROM SC
WHERE
SC.Sno=S.Sno
资源评论
qq_38007894
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功