SQL查询习题.docx
- 文档编号:3385119
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:13
- 大小:50.31KB
SQL查询习题.docx
《SQL查询习题.docx》由会员分享,可在线阅读,更多相关《SQL查询习题.docx(13页珍藏版)》请在冰点文库上搜索。
SQL查询习题
SQL查询习题
一、单表查询练习
1、查询<学生信息表>,查询学生"张三"的全部基本信息
select*
fromxsb
wherexm='张三'
2、查询<学生信息表>,查询学生"张三"和”张四”的基本信息
select*
fromxsb
wherexm='张三'orxm='张四'
3、查询<学生信息表>,查询姓"张"学生的基本信息
select*
fromxsb
wherexmlike'张%'
4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息
select*
fromxsb
wherexmlike'%四%'
5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
select*
fromxsb
wherexmlike'李_强'
6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。
select*
fromxsb
wherexmlike'张%'orxm='李%'
7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息
select*
fromxsb
wherexmlike'张%'andjg='北京'
8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息
select*
fromxsb
select*
fromxsb
orderbyxb,jg,bj
11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份
selectdistinctjg
fromxsb
12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩
selectxh,kch,cj
fromcjb
wherecjisnull
13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序
select*
fromcjb
wherecjisnotnull
orderbycjdesc
14、找出两个姓张的同学信息,只显示对应学生的姓名,性别和班级
Selecttop2xm,xb,bj
Fromxsb
Wherexmlike'张%'
二、聚合函数练习
1、统计<学生信息表>,统计共有多少个学生
selectcount(*)
fromxsb
2、统计<学生信息表>,统计年龄大于20岁的学生有多少个
selectcount(*)
fromxsb
wherenl>='20'
or
selectcount(*)
fromxsb
whereyear(getdate())-year(csrq)>20
3、统计<学生信息表>,统计入学时间在1998年至2000年的学生人数
selectcount(*)
fromxsb
whererxrq>='1998-1-1'andrxrq<='2000-12-31'
whererxrqbetween‘1998-1-1’and‘2000-12-31’
4、统计<学生选修信息表>,统计学号为"S001"的学生的平均成绩
selectAVG(cj)
fromcjb
wherexh='1'
OR
selectCONVERT(DECIMAL(18,2),AVG(cj))||保留小数点两位
fromcjb
wherexh='1'
5、统计<学生选修信息表>,统计学号为"S001"的学生的总成绩
selectsum(cj)
fromcjb
wherexh='1'
6、统计<学生选修信息表>,查询课程号为”C001”的课程的最高成绩
selectmax(cj)
fromcjb
wherekch='23'
7、统计<学生信息表>,查询所有学生中的最大年龄是多少
selectmax(nl)
fromxsb
三、分组查询练习
1、统计<学生选修信息表>,统计每个课程的选修人数
selectkch,count(*)
fromcjb
groupbykch
2、统计<学生选修信息表>,统计每个同学的总成绩
selectsum(cj)
fromcjb
groupbyxh
3、统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序
selectbj,xb,count(*)
fromxsb
groupbybj,xb
4、统计<学生选修信息表>,统计每门课程的平均成绩,并按照平均成绩降序排序
selectkch,AVG(cj)
fromcjb
groupbykch
orderbyAVG(cj)desc
5、统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号
selectxh
fromcjb
wherecj<'60'
groupbyxh
havingcount(*)>='2'分组后的条件判断
6、统计<学生信息表>,统计每个班级中的最大年龄是多少
selectbj,SUM(nl)
fromxsb
groupbybj
四、嵌套查询练习
1、用子查询实现,查询选修“高等数学”课的全部学生的总成绩
1.课程表查课程号
2.查所有高数成绩
SelectSum(cj)
fromcjb
wherekch=(Selectkch
fromkcb
wherekcm='高等数学'
)
2、用子查询实现,统计<学生选修信息表>,显示学号为"S001"的学生在其各科成绩中,最高分成绩所对应的课程
思考:
如果该学号学生有两个课程分数都为最高的100分,查询会有什么结果
学号一最高分
最高分对应的课程号
课程号对应课程名
Selectmax(cj)
Fromcjb
Wherexh='1'
Selectkch
Fromkcb
Wherecj=(selectmax(cj)fromcjb)andxh=’1’
Selectkcm
Fromkcb
Wherekchin(Selectkch
Fromkcb
Wherecj=(selectmax(cj)fromcjb)andxh=’1’
)
3、用子查询实现,查询2班选修"数据库技术"课的所有学生的成绩之和
1.班级二班学生
Selectxh
Fromxsb
Wherebj=’2’
2.课程表里查课程号
Selectkch
Fromkcb
Wherekcm=’数据库技术’
Selectsum(cj)
Fromcjb
Wherexhin(Selectxh
Fromxsb
Wherebj=’2’)andkch=(Selectkch
Fromkcb
Wherekcm=’数据库技术’
)
4、用子查询实现,查询3班"张三"同学的"测试管理"成绩
1.测试管理的课程号
2.张三的学号
Selectxh
Fromxsb
Wherexm=’张三’andbj=’3’
Selectkch
Fromkcb
Wherekcm=’测试管理’
Selectcj
Fromcjb
Wherexhin(Selectxh||in可能有重名的多个‘张三’
Fromxsb
Wherexm=’张三’
)andkcm=(Selectkch
Fromkcb
Wherekcm=’测试管理’
)
五、联接查询练习
1、查询"张三"的各科考试成绩,要求显示姓名、课程号和成绩
查张三学号
Selectxh
Fromxsb
Wherexm=’张三’
查学号对应成绩
Selectcj,kch
Fromcjb
Wherexhin(Selectxh
Fromxsb
Wherexm=’张三’
)
Or
selectxm,kch,cj
fromxsb,cjb
wherexsb.xh=cjb.xh
andxm='张三'
2、查询"张三"的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩
查张三学号
Selectxh
Fromxsb
Wherexm=’张三’
学号对应的没有成绩的
Selectcj,kch
Fromcjb
Wherecjisnull
Selectkch
Fromcjb
Wherecj=(Selectcj
Fromcjb
Wherecjisnull)andxhin(Selectxh
Fromxsb
Wherexm=’张三’)
Or
selectxm,kch,cj
fromxsb,cjb
wherexsb.xh=cjb.xh
andxm='张三'
andcjisnull
3、查询"张三"的各门课程成绩,要求显示姓名、课程名称和成绩
查张三学号
学号对应成绩
selectxm,kcm,cj
fromxsb,cjb,kcb
wherexsb.xh=cjb.xh
andcjb.kch=kcb.kch
andxm='张三'
4、查询3班"张三"的"测试管理"成绩,要求显示姓名、成绩
查3班张三的学号
查测试管理的课程号
根据学号和课程号查成绩
selectxm,cj
fromxsb,cjb,kcb
wherexsb.xh=cjb.xh
andcjb.kch=kcb.kch
andxm='张三'andkcm='测试管理'
andbj=’3’
5、查询所有2000年以前入学的,各班男生的各科考试平均成绩
selectAVG(cj),bj,kch
fromxsb,cjb
wherexsb.xh=cjb.xh
andrxrq<'2000'
andxb='男'
groupbybj,kch
六、外联接查询
查询”李坚强”所有课程的成绩,并显示学号、姓名、课程号和成绩,没有成绩记录的学号包括:
('S009','S010','S011')
1、使用左联接
2、使用右联接
3、对比等值连接
七、补充提高
1、查询“张三”比“王三”入学早几年
2、查询所在班级和该班内学生的年龄之和,其中每个人的年龄都大于20岁,每个班的年龄之和大于60岁
3、计算每种产品的剩余库存量
表1,为产品进货表,产品名称name[char(10)],产品数量amount[int]
表2,为产品出货表,产品名称name[char(10)],产品数量amount[int]
业务逻辑:
表1存储产品的总进货量,表2存储每种产品每次的出货量,如产品A进货为100,出货了3次,每次分别为10、20、30,那么A产品的库存就为40
表A1|表A2
-------------------|---------------------------
nameamount|nameamount
A100|A10
B100|A20
|A30
|B10
|B40
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 查询 习题