《2022年sql查询练习 .pdf》由会员分享,可在线阅读,更多相关《2022年sql查询练习 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、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 学生wher
2、e 年龄 =20 8.查询考试成绩有不及格的学生的学号. select distinct 学号from 选课where 成绩 60 9.查询年龄在2023 岁 (包括 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 系=?
3、 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.查询姓 ” 欧阳 ” 且全名为三个字的学生的姓名. se
4、lect 姓名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 姓
5、名from 学生where 系=?1?and 年龄 3 这里先用group by 子句按学号分组,再用集函数count 对每一组计数.having 短语指定选择组的条件,只有满足条件 (即元组的个数 3,表示此学生选修的课程超过3 门)的组才会被选出来.where 子句与 having 短语的区别在于作用的对象不同.where 子句作用于基本表或视图,从中选择满足条件的元组.having 短语作用于组,从中选择满足条件的组 . 27. 查询每个学生及其选修课程的情况。Sele 学生 .*, 选课 .* from 学生 ,选课where 学生 .学号 =选课 .学号学生情况放在学生表里,学生选课
6、情况放在选课表中,所以本查询实际上涉及到学生和选课两个表,这两个表之间的联系是通过公共属性学号实现的。 28. 查询每一门课的间接先修课。Sele f.学号 ,s.先修课号from 课程f, 课程 s where f.选修课号 =s.学号(自身连接)在课程表关系中,只有每门课的直接先修课信息。而没有先修课的先修课。要得到这个信息,必须对一门课找到其先修课,而按此先修课的课程号,查找它的先修课。这就要将课程表与其自身连接。. 29. 查询选修2 号课程且成绩在90 分以上的所有学生。Sele 学生 .学号,姓名from 学生,选课where 学生 .学号 =选课 .学号and 选课 .学号=?
7、2? ,and 选课 .成绩 90. 30. 查询每个学生的学号,姓名,选课的课程名及成绩。Sele 学生 .学号 , 姓名 ,课程名 ,成绩from 学生 ,课程 ,选课where 学生 .学号 =选课 .学号and 选课 .课程号 =课程 .课程号 . 31. 查询与 ” 张洋 ” 在同一个系学习的学生. Sele 学号 ,姓名 ,系 from 学生where 系 in (sele 系from 学生where 姓名 =” 张洋 ” ) in 在这里可以用=号代替 ,因为一个学生只能在一个系里学习. (嵌套查询 )分步做 , 确定张洋所在的系名.查找所有在2 系学习的学生 . 32. 查询选
8、修了课程名为” 数据结构 ” 的学生学号和姓名. Sele 学号 ,姓名from 学生where 学号in (sele 学号from 选课where 课程号in (sele 课程号from 课程where 课程名 =” 数据结构 ” ) 或者写成连接查询: sele 学号 ,姓名from 学生 ,选课 ,课程where 学生 .学号 =选课 .学号and 选课 .课程号 =课程 .课程号and 课程 .课程名 =” 数据结构 ”33. (带有 any 和 all 的子查询 )查询其他系中比? 2? 系某一个学生年龄小的学生姓名和年龄. 名师资料总结 - - -精品资料欢迎下载 - - - -
9、- - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - Sele 姓名 ,年龄from 学生where 年龄 any (sele 年龄from 学生where 系=? 2? ) and 系!=?2?(注意这个and后的语句是父查询的限制条件)。这个题也可以用集函数做.首先用子查询找出2 系中年龄最大的,然后在父查询中查看所有非 2 系且年龄小于2 系最大年龄的学生姓名和年龄. Sele 姓名 ,年龄from 学生where 年龄 (sele max(年龄 ) from 学生where 系=?
10、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 课程的学生姓名. 本题涉及学生和选课两个表,我们可以在学生表中依次取每个元组的学号值,用此值去检查选课关系,若选课中存在这样的这样的元
11、组,其学号值等于此学生表的学号的值,并且其课程号是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
12、 学生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?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -