数据库:SQL数据查询(详细、全面)

以下题目中加粗字体为重点哦~
一、查询指定列、全部列
1.查询全体学生的学号和姓名
SELECT SNO, SN
FROM S
2.查询全部列
SELECT *
FROM S

二、查询经过计算的值
3. 查询全体学生的姓名、出生年份
SELECT SN, 2020-AGE
FROM S
4. 查村全体学生的姓名、出生年份和系名(要求用小写字母表示系名)
SELECT SN, 2020-AGE as BIRTHYEAR, lower(DEPT)
FROM S
注:大写字母表示 upper()

三、消除重复
5. 查询所有选修过课的学生学号
SELECT DISTINCT SNO
FROM SC

四、比较运算符
6. 查询计算机系所有学生的名单
SELECT SN
FROM S
WHERE DEPT = ‘计算机’
7. 查询所有年龄在20岁以下的学生姓名及其年龄
SELECT SN, AGE
FROM S
WHERE AGE<20
或者
SELECT SN, AGE
FROM S
WHERE NOT AGE>=20
8. 查询考试成绩有不及格的学生的学号
SELECT DISTINCT SNO
FROM SC
WEHRE SCORE<60

五、确定范围
9. 查询年龄在20~30岁的学生的姓名、系别、年龄
SELECT SN, DEPT, AGE
FROM S
WHERE AGE BETWEEN 20 AND 30
10. 查询年龄不在20~30岁的学生的姓名、系别、年龄
SELECT SN, DEPT, AGE
FROM S
WHERE AGE NOT BETWEEN 20 AND 30

六、确定集合
11. 查询信息系、自动化系、计算机系的学生的姓名和性别
SELECT SN, SEX
FROM S
WHERE DEPT IN (‘信息’,‘自动化’,‘计算机’)
12. 查询不是信息系、自动化系、计算机系的学生的姓名和性别
SELECT SN, SEX
FROM S
WHERE DEPT NOT IN (‘信息’,‘自动化’,‘计算机’)

七、字符匹配
13. 查询所有姓刘的学生的姓名、学号、性别
SELECT SN, SNO, SEX
FROM S
WHERE SN LIKE ‘刘%’
14. 查询所有姓欧阳且全名为3个汉字的学生的姓名
SELECT SN
FROM S
WHERE SX LIKE ‘欧阳_’
15. 查询名字中第二字为‘阳’字的学生的姓名和学号
SELECT SN, SNO
FROM S
WHERE SN LIKE '_阳%'
16. 查询所有不姓吴的学生姓名
SELECT SN
FROM S
WHERE SN NOT LIKE ‘吴%’
17. 查询DB_Design 课程的课程号和学分
SELECT CNO, CT
FROM C
WHERE CN LIKE ‘DB╲_Design’ ESCAPE '╲’

八、涉及空值的查询
18. 查询缺少成绩的学生的学号和相应的课程号
SELECT SNO, CNO
FROM SC
WHERE SCORE IS NULL
19. 查询有成绩的学生的学号和相应的课程号
SELECT SNO, CNO
FROM SC
WHERE SCORE IS NOT NULL

九、多重条件查询
20. 查询计算机系年龄在20岁以下的学生姓名
SELECT SN
FRON S
WHERE DEPT = ‘计算机’ AND AGE<20
21. 查询信息系、自动化系、计算机系的学生的姓名和性别(11题)
SELECT SN, SEX
FROM S
WHERE DEPT = ‘信息’ OR DEPT = ‘自动化’ OR DEPT = ‘计算机’

十、集函数 - 统计汇总查询
22. 查询学生总人数
SELECT COUNT(*)
FROM S
23. 查询选修了课程的学生人数
SELECT COUNT( DISTINCT SNO )
FROM SC
24. 程序C1课程的学生人数、最高成绩、最低成绩、平均成绩
SELECT COUNT(SNO), MAX(SCORE), MIN(SCORE), AVG(SCORE)
FROM SC
WHERE CNO=‘C1’

十一、分组查询
25. 查询各个课程号与相应的选课人数
SELECT CNO, COUNT(SNO)
FROM SC
GROUP BY CNO
26. 查询有3人以上学生(包括3人)选修的课程的课程号及选修人数
SELECT CNO, COUNT( SNO )
FROM SC
GROUP BY CNO
HAVING COUNT(*) >=3

十二、查询的排序
27. 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列
SELECT SNO, SCORE
FROM SC
WHERE CNO=‘C3’
ORDER BY SCORE DESC
28. 查询全体学生情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列
SELECT *
FROM S
ORDER BY DEPT ASC , AGE DESC

十三、连接查询
29. 等值连接,查询每个学生及其选修课程的情况
SELECT *
FROM S,SC
WHERE S.SNO = SC.SNO
30. 自然连接表S 和 SC
SELECT S.SNO,SN,SEX,AGE,DEPT,CNO,SCORE
FROM S,SC
WHERE S.SNO = SC.SNO
31. 自身连接,查询比李涛年龄大的学生的姓名、年龄和李涛的年龄
SELECT X.SN AS 姓名, X.AGE AS 年龄, Y.AGE AS 李涛的年龄
FROM S AS X, S AS Y
WHERE X.AGE > Y.AGE AND Y.SN = ‘李涛’
31. 外连接,改编30题(S表中的学生,及时美没有选课,依旧显示其对应行信息 )
SELECT S.SNO,SN,SEX,AGE,DEPT,CNO,SCORE
FROM S LEFT JOIN SC
WHERE S.SNO = SC.SNO
注:左外连接 LETFT JOIN; 右外连接 RIGHT JOIN; 全外连接 FULL JOIN;交叉连接(广义笛卡尔积连接) CROSS JOIN;

十四、合并查询
32. 从SC数据表中查询出学号为“S1”的同学的学号和总分,再从SC数据表中查询出学号为“S5”的同学的学号和总分,然后将两个查询结果合并成一个结果集。
SELECT SNO AS 学号, SUM( SCORE ) AS 总分
FROM SC
WHERE SNO = ‘S1’
UNION
SELECT SNO AS 学号, SUM( SCORE ) AS 总分
FROM SC
WHERE SNO = ‘S5’

十五、嵌套查询
33. 查询与“王林”在同一个系学习的学生的学号、姓名和所在系
SELECT SNO, SN, DEPT
FROM S
WHERE DEPT IN
( SELECT DEPT
FROM S
WHERE SN = ‘王林’ )
34. 查询与“王林”在同一个系学习的学生的学号、姓名和所在系(一个学生只可能在一个系学习)
SELECT SNO, SN, DEPT
FROM S
WHERE DEPT =
( SELECT DEPT
FROM S
WHERE SN = ‘王林’ )
35. 查询其他系中比信息系所有学生年龄小的学生的姓名及年龄
SELECT SN, AGE
FROM S
WHERE AGE < ALL
( SELECT AGE
FROM S
WHERE DEPT = ‘信息’ ) AND DEPT != ‘信息’
36. 查询所有选修了C1号课程的学生姓名
SELECT SN
FROM S
WHERE EXISTS
( SELECT *
FROM SC
WHERE SNO = S.SNO AND CNO = ‘C1’ )
37. 查询所有未选修 C1号课程的学生姓名
SELECT SN
FROM S
WHERE NOT EXISTS
( SELECT *
FROM SC
WHERE SNO=S.SNO AND CNO = ‘C1’ )
38. 查询选修了全部课程的学生姓名
在这里插入图片描述
39. 查询选修课程中包含了“S08”学生所选修课程 的学生学号
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章