查询练习作业教学文稿.docx
《查询练习作业教学文稿.docx》由会员分享,可在线阅读,更多相关《查询练习作业教学文稿.docx(30页珍藏版)》请在冰点文库上搜索。
查询练习作业教学文稿
一、使用SQL语句创建数据库Neusoft,该数据库中包含以下三个表格:
1.Course表
列名
说明
数据类型
约束
Cno
课程号
字符串,长度为10
主码
Cname
课程名
字符串,长度为20
非空
Ccredit
学分
整数
取值大于0
Semster
学期
整数
取值大于0
Period
学时
整数
取值大于0
2.Student表
列名
说明
数据类型
约束
Sno
学号
字符串,长度为7
主码
Sname
姓名
字符串,长度为10
非空
Ssex
性别
字符串,长度为2
取‘男’或‘女’
Sage
年龄
整数
取值15~45
province
所属省份
字符串,长度为20
默认为‘北京’
Sdept
所在系
字符串,长度为20
默认为‘计算机系’
3.SC表
列名
说明
数据类型
约束
Sno
学号
字符串,长度为7
主码,引用Student的外码
Cno
课程名
字符串,长度为10
主码,引用Course的外码
Grade
成绩
整数
取值0~100
二、使用Insert语句向数据库表格中添加数据,各个表中的样本数据:
Course表数据样本:
Cno
Cname
Ccredit
Semster
Period
c01
数据结构
3
1
64
c02
VB程序设计
2
2
32
c03
计算机网络
4
3
64
c04
数据库原理与应用
4
4
64
c05
高等数学
6
1
64
c06
计算机文化基础
5
3
64
Student表数据样本:
Sno
Sname
Ssex
Sage
province
Sdept
0750101
李南
男
19
北京
计算机系
0750122
王平
男
20
山东
计算机系
0750202
王敏
女
20
河南
计算机系
0750201
张伟
男
22
北京
信管系
0750323
吴会
女
21
河北
信管系
0750423
张海
男
20
山东
信管系
0750303
董伟
女
18
天津
艺术系
0750422
王英
男
19
北京
艺术系
SC表数据样本:
Sno
Cno
Grade
0750101
c01
90
0750101
c02
89
0750101
c03
76
0750122
c01
88
0750122
c02
89
0750122
c03
77
0750122
c04
67
0750122
c05
69
0750122
c06
79
0750422
c01
78
0750422
c04
68
0750303
c01
78
0750303
c04
87
0750323
c01
80
简单的查询:
先建以上的三个表
(1)查询全体学生的学号、姓名,要求按学号进行升序排列。
selectSno,Sname
fromStudentORDERBYSnoasc;
(2)查询所有课程信息,要求列的顺序与COURSE表中的列序一致。
select*
fromCourse
(3)查询SC表中总成绩小于70分的学生学号,成绩,并给出临时标题。
selectGradeas总成绩,Sno
fromSC
whereGrade<70
(4)查询SC表中所有学生的学号,消除结果集中的重复行。
selectdistinctSnofromSC;
(5)查询选修了‘c03’号课程且成绩在70分以上的学生学号与成绩。
selectSno,Grade
fromSC
whereSC.Cno='c03'andSC.Grade>='70';
(6)查询‘c03’号课成绩在70-80分之间的学生学号。
selectSno
fromSC
whereSC.Gradebetween70and80andSC.Cno='c03';
(7)查询‘计算机系’,‘信管系’学生的全部信息。
select*
fromStudent
whereStudent.Sdept='计算机系'or
Student.Sdept='信管系';
(8)查询‘c03’号课程成绩加上10分后的学生学号和成绩,要求给出临时标题。
正确为:
selectSno,Grade+10as'成绩'fromCourse,SC
whereCourse.Cno=SC.CnoandCourse.Cno='C03'
(9)查询‘9512102’号学生所选修的课程和成绩信息。
selectCno,Grade
fromSC
whereSno='9512102';
(10)查询Student表中前3个记录。
selecttop3*
fromStudent;
11)查询名字中含有‘王’字的学生信息。
select*
fromStudent
whereSnamelike'%王%';
(12)查询课程名中不含‘数据’字样的课程信息
select*
fromCourse
whereCnamenotlike'%数据%';
(13)查询全体学生的姓名及出生年份。
selectSname,Sage
fromStudent
(14)查询包含‘DB_’的课程信息。
select*
fromCourse
whereCnamelike'%DB_%'
(15)查询所有成绩为空的学生学号和课号
selectSno,Cno
fromSC
whereGradeisnull
(16)按照学号的升序,课程号的降序查询学生的成绩信息。
selectGrade,Sno,Cno
fromSC
orderbySnoasc,Cnodesc;
(17)查询年龄不在20~23之间的学生姓名、所在系和年龄。
selectSname,Sage,Sdept
fromStudent
whereSagenotbetween20and23;
(18)查询名字中第2个字为‘小’或‘大’字的学生的姓名和学号。
selectSname,Sno
fromStudent
whereSnamelike'_[大小]';
(19)查询全体学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列。
selectSno,Sname,Sno
fromStudent
orderbySdept,Sagedesc;
20查询学生选修信息表,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序
首先要新建一个<学生选修信息表>,善后进行查询;
select*from学生选修信息表orderbygradeasc;
21、查询<学生信息表>,查询学生"吴会"的全部基本信息
Select*form学生信息表wherename=‘吴会’
22、查询<学生信息表>,查询学生"张三"和”李四”的基本信息
select*from学生选课信息表wheresname='张三'orsname='李四’
23、查询<学生信息表>,查询姓"张"学生的基本信息
Select*from学生选课信息表wheresnamelike'张%'
24、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息
select*from学生选课信息表
wheresnamelike'%四%'
26、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。
Select*from学生选课信息表
wheresnamelike'%李%'orsnamelike'%张%'
27、查询<学生信息表>,查询姓"王"并且"所属省份"是"北京"的学生信息
select*from学生选课信息表wheresnamelike'王%'andprovince='北京'
28、查询<学生选课信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息
select*from学生选课信息表whereprovince='北京'orprovince='上海'orprovince='新疆'
29、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息
select*from学生选课信息表wheresnamelike'张%'andprovince<>'北京'
30、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序
Select*from学生选课信息表orderbySsex,province,sdeptdesc
31、查询<学生信息表>,查询现有学生都来自于哪些不同的省份
selectprovincefrom学生选课信息表
32、查询学生选修信息表,查询没有填写成绩的学生的学号、课程号和成绩
Select*from学生选课信息表where学生选课信息表.gradeisnull
\四、高级查询
(1)统计每个系的学生人数。
Selectcount(Sdept)fromStudent
(2)查询信管系的最大年龄和最小年龄。
selectmax(Sage)'最大年龄',min(Sage)'最小年龄'
fromStudent
whereSdept='信管系'
(3)查询信管系的最大年龄和最小年龄的学生姓名。
selectmin(Sage)fromStudentwhereSdept='信管系'
unionall
selectmax(Sage)fromStudentwhereSdept='信管系'
andSdept='信管系'
(4)统计选修‘C01’课程的学生的最高分,最低分、总成绩及平均分。
selectMAX(Grade),min(Grade),sum(Grade),avg(Grade)
fromSC
(5)查询所有学生的选课信息,要求列出学生学号、姓名、课程名和成绩。
selectStudent.Sno,Student.Sname,Course.Cname,Sc.Grade
fromStudent,SC,Course
(6)统计每门课程的选修人数。
selectSC.Cno,count(SC.Cno)
fromSC
groupbySC.Cno
(7)统计每个学生选修的课程门数及总成绩。
selectSno,课程门数=count(Cno),总成绩=sum(Grade)
fromSC
groupbySno
(8)查询哪些课程没有人选修,要求列出课程号、课程名。
selectCno,Cname
fromCourse
whereCnonotin(selectCnofromSC)
(9)查询各科平均成绩超过80分的学生姓名。
selectSname
fromStudent
whereSnoin(SELECTSnofromSCGROUPBYSnohavingavg(Grade)>80)
(10)查询选修了‘C03’号课程的同学所在的系及该同学的姓名。
selectSdept,Sname
fromStudent
whereSnoin(selectSnofromSCwhereCno='c03'groupbySno)
(11)查询‘数据库基础’这门课的成绩在80分以上的学生姓名。
selectSname
fromStudent
whereSnoin(selectSnofromSCwhereCno
in(selectCnofromCoursewhereCname='数据库原理')andGrade>80groupbySno)
(12)统计平均成绩大于70分的课程名。
selectCname
fromCourse
whereCnoin(selectCnofromSCgroupbyCnohavingavg(Grade)>70)
(13)统计平均成绩大于70分的学生姓名及所在系。
selectSname,Sdept
fromStudent
whereSnoin(selectSnofromSCgroupbySnohavingavg(Grade)>70)
(14)从学生管理数据库的三张表中检索学生的学号、姓名、学习课程号、学习课程名及课程成绩。
selectStudent.Sno,Sname,Course.Cno,Cname,Grade
fromStudent,SC,Course
whereStudent.Sno=SC.SnoandCourse.Cno=SC.Cno
(15)使用不带HAVING的GROUPBY子句汇总出SC表中的学生的学号及总成绩。
SelectSno,SUM(Grade)
fromSCgroupbySno
(16)使用带HAVING的GROUPBY子句汇总出SC表中总分大于150分的学生的学号及总成绩。
SELECTSno,SUM(Grade)
fromSC
groupbySnohavingSUM(Grade)>150
(17)查询修了3门以上课程的学生的学号。
selectSno,Sname
fromStudent
whereSnoin(selectSnofromSCgroupbySnohavingcount(Cno)>3)
(18)查询信管系修了某课程的学生的修课成绩,要求列出学生姓名、课程名和成绩。
selectSname,Grade,CnamefromSC,Course,Studentwhere
SC.Cno=Course.CnoandStudent.Sno=SC.SnoandSdept='信管系'
19统计学生选修信息表,统计每个课程的选修人数
Selectcount(*)from学生选课信息表
20、统计学生选修信息表,统计每个同学的总成绩
SelectSno,sum(grade)as总成绩from学生选课信息表groupbySno
21、统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序
selectsemsteras班级,ssexas性别,count(*)as人数from学生选课信息表groupbysemster,ssex
orderbysemster
22、统计学生选修信息表,统计每门课程的平均成绩,并按照成绩降序排
Selectcno,avg(grade)as平均成绩from学生选课信息表groupbyCnoorderbyavg(grade)desc
23、统计学生选修信息表,显示有两门以上课程不及格的学生的学号
Selectsnoas'不及格学生学号'fromscwheregrade<60
24、统计<学生信息表>,统计每个班级中的最大年龄是多少
selectmax(sage)as'最大年龄'from学生选课信息表
25、用子查询实现,查询选修“高等数学”课的全部学生的总成绩
selectsum(grade)as高等数学总成绩from学生选课信息表wherecno=(selectcno
from学生选课信息表wherecname='高等数学')
26、用子查询实现,统计学生选修信息表,显示学号为"0750101"的学生在其各科成绩中,最高分成绩所对应的课程号和成绩
selectgrade,cnofrom学生选课信息表wheresno='0750101'andgrade=(selectmax(grade)
from学生选课信息表wheresno='0750101')