【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《sql查询练习》,欢迎阅读!
1. 查询全体学生的学号和姓名.
select 学号,姓名from 学生
2. 查询全体学生的姓名,学号,所在系.
select 学号,姓名,系from 学生 3. 查询全体学生的详细记录
select * from 学生
4. 查询全体学生的姓名及其出生年份
select 姓名,2006-年龄 from 学生 [意思是2008减年龄] 5. 查询选修了课程的学生学号
select distinct学号 from 选课 6. 查询2系全体学生的名单.
select 姓名 from 学生 where 系=”2”
7. 查询所有年龄在20岁以下的学生姓名及年龄.
select 姓名,年龄 from 学生 where 年龄<=20 8. 查询考试成绩有不及格的学生的学号.
select distinct 学号 from 选课 where 成绩<60
9. 查询年龄在20~~23岁(包括20和23岁)之间的的学生的姓名,系别,年龄.
select 姓名,系,年龄from 学生 where 年龄 between 20 and 23 10. 查询1系,2系,3系的学生的姓名和性别
select 姓名,性别 from 学生 where 系别 in (“1”,”2”,”3”) [in 实际上是多个or 运算符的缩写]。 我们也可以写成这样:
select 姓名,性别 from 学生 where 系=’1’or 系=’2’or 系=’3’ 11. 查询既不是1系,2系也不是3系的学生的姓名和性别.
select 姓名,性别 from 学生 where 系 not in (“1”,”2”,”3”) 12. 查询学号为s3的学生的详细情况.
select * from 学生 where 学号 like “s3”)或者(select * from 学生 where 学号=”s3” 13. 查询所有的姓刘的学生的姓名,学号和性别.
select 姓名,学号,性别 from 学生 where 姓名 like ‘刘%’ 14. 查询姓”欧阳”且全名为三个字的学生的姓名.
select 姓名 from 学生 where 姓名 like “欧阳_ ” 15. 查询名字中第二个字为”阳”字的学生的姓名和学号.
select 姓名,学号 from 学生 where 姓名 like “ _阳%”
16. 某些学生选修课程后没有参加考试,所以有选课记录,但是没有考试成绩.查询缺少成
绩的学生的学号和相应的课程号
select 学号,课程号 from 选课 where 成绩 is null 17. 查询所有有成绩的学生学号和课程号.
select 学号,课程号 from 选课 where 成绩 is not null 18. (多重条件查询)查询1系年龄在20岁以下的学生姓名.
select 姓名 from 学生 where 系=’1’and 年龄<20
19. (对查询结果进行排序)查询选修了3号课程的学生的学号及其成绩,查询结果按分数的
降序排列.
select 学号,成绩,from 选课 where 课程号=’3’ order by 成绩 desc
20. 查询全体学生情况,查询结果按所在系的系号升序排列,同一个系的学生按年龄降序排
列.
select * from 学生 order by 系, 年龄 desc 21. (使用集函数)查询学生总人数.
select count(*) from 学生 [count的功能是计数] 22. 查询选修了课程的学生的总人数.
select count (distinct 学号) from 选课 23. 计算1号课程的学生的平均成绩.
select avg(成绩) from 选课 where 课程号=’1’ 24. 查询选修1号课程的学生最高分数.
select max(成绩) from 选课 where 课程号=’1’ 25. 求各个课程号及相应的选课人数.
select 课程号,count(学号) from 选课 group by 课程号 26. 查询选修了3门以上课程的学生的学号.
select 学号 from 选课 group by 学号 having count(*)>3
[这里先用group by 子句按学号分组,再用集函数count 对每一组计数.having 短语指定选择组的条件,只有满足条件(即元组的个数>3,表示此学生选修的课程超过3门)的组才会被选出来.where 子句与having 短语的区别在于作用的对象不同.where子句作用于基本表或视图,从中选择满足条件的元组.having 短语作用于组,从中选择满足条件的组.]
27. 查询每个学生及其选修课程的情况。
Sele 学生.*,选课.* from 学生,选课 where 学生.学号=选课.学号
[学生情况放在学生表里,学生选课情况放在选课表中,所以本查询实际上涉及到学生和选课两个表,这两个表之间的联系是通过公共属性学号实现的。] 28. 查询每一门课的间接先修课。
Sele f.学号,s.先修课号 from 课程 f, 课程 s where f.选修课号=s.学号
[(自身连接)在课程表关系中,只有每门课的直接先修课信息。而没有先修课的先修课。要得到这个信息,必须对一门课找到其先修课,而按此先修课的课程号,查找它的先修课。这就要将课程表与其自身连接。].
29. 查询选修2号课程且成绩在90分以上的所有学生。
Sele 学生.学号,姓名 from 学生,选课 where 学生.学号=选课.学号 and 选课.学号=’2’,and 选课.成绩>90.
30. 查询每个学生的学号,姓名,选课的课程名及成绩。
Sele 学生.学号, 姓名,课程名,成绩 from 学生,课程,选课 where 学生.学号=选课.学号 and 选课.课程号=课程.课程号.
31. 查询与”张洋”在同一个系学习的学生.
Sele 学号,姓名,系 from 学生 where 系 in (sele 系 from 学生 where 姓名=”张洋”) [in在这里可以用=号代替,因为一个学生只能在一个系里学习].
(嵌套查询)分步做, 确定张洋所在的系名.查找所有在2系学习的学生. 32. 查询选修了课程名为”数据结构”的学生学号和姓名.
Sele 学号,姓名 from 学生 where 学号 in (sele 学号 from 选课 where 课程号 in (sele 课程号 from 课程 where 课程名=”数据结构”)) 或者写成连接查询:
sele 学号,姓名 from 学生,选课,课程 where 学生.学号=选课.学号 and 选课.课程号=课程.课程号 and 课程.课程名=”数据结构”
33. (带有any 和 all 的子查询)查询其他系中比’2’系某一个学生年龄小的学生姓名和年龄.
Sele 姓名,年龄 from 学生 where 年龄< any (sele 年龄 from 学生 where 系=’2’) and 系!=’2’ (注意这个and后的语句是父查询的限制条件)。
[这个题也可以用集函数做.首先用子查询找出2系中年龄最大的,然后在父查询中查看所有非2系且年龄小于2系最大年龄的学生姓名和年龄.]
Sele 姓名,年龄 from 学生 where 年龄< (sele max(年龄) from 学生 where 系=’2’) and 系!=’2’.
34. 查询其他系中比2系所有学生年龄都小的学生姓名及年龄.
Sele 姓名,年龄 from 学生 where 年龄 < all (sele 年龄 from 学生 where 系=’2’) and 系!=’2’。 或者用集函数:
Sele 姓名,年龄 from 学生 where 年龄< (sele min(年龄) from 学生 where 系=’2’) and 系!=’2’
35. (带有exists 的子查询)查询所有选修了c3课程的学生姓名.
本题涉及学生和选课两个表,我们可以在学生表中依次取每个元组的学号值,用此值去检查选课关系,若选课中存在这样的这样的元组,其学号值等于此学生表的学号的值,并且其课程号是c3,则取学生表的学生姓名送入结果表.
Sele 姓名 from 学生 where exists (sele * from 选课 where 学号=学生.学号 and 课程号=’c3’).
36. 查询没有选修’c3’号课程的学生姓名.
Sele 姓名 from 学生 where not exists (sele * from 选课 where 学号=学生.学号 and 课程号=’c3’)
37. 查询与”张洋”在同一个系学习的学生.
Sele 学号,姓名,系 from 学生 s1 where exists (sele * from 学生 s2 where s2.系=s1.系 and s2.姓名=’张洋’).
*38. 查询选修了全部课程的学生姓名.(没有能表示全部的,那么我们可以将题目的意思转
换成等价的存在的含义,比如,查询这样的学生,没有一门课程是他不选修的)
Sele 姓名 from 学生 where not exists (sele * from 课程 where not exists (sele * from
选课 where 学号=学生.学号 and 课程号=课程.课程号)) 39. (集合查询)查询1系的学生及年龄不大于19岁的学生.
Sele * from 学生 where 系=’1’ union sele * from 学生 where 年龄<=19 40. 查询选修了课程c1或者课程c2的学生
Sele 学号 from 选课 where 课程号=’c1’ union sele 学号 from 选课 where 课程号=’c2’
本文来源:https://www.wddqxz.cn/204eda3d4935eefdc8d376eeaeaad1f3469311e6.html