数据库原理上机作业实验45Word文档格式.docx
《数据库原理上机作业实验45Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库原理上机作业实验45Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
①找出所有被学生选修了的课程号;
语句:
selectdistinctCno
FromGrade;
截图:
②找出01311班女学生的个人信息;
select*
FromStudent
WhereSsex='
女'
andClno='
01311'
;
③找出01311班、01312班的学生姓名、性别、出生年份;
(六种)
1)SelectSname,Ssex,[出生年份]=(2016-Sage)
WhereClno='
01312'
orClno='
2)SelectSname,Ssex,[出生年份]=(2016-Sage)
WhereClnoIN('
'
);
3)SelectSname,Ssex,’出生年份’=(2016-Sage)
4)SelectSname,Ssex,”出生年份”=(2016-Sage)
5)SelectSname,Ssex,(2016-Sage)AS'
出生年份'
6)SelectSname,Ssex,(2016-Sage)AS“出生年份”
④找出所有姓李的学生的个人信息;
Select*
WhereSnamelike'
李%'
⑤找出学生李勇所在班级的学生人数;
selectCOUNT(*)as'
学生人数'
fromStudent
whereClnoin(
selectClno
whereSname='
李勇'
⑥找出课程名为操作系统的平均成绩、最高分、最低分;
selectAVG(Gmark)as'
平均成绩'
MAX(Gmark)as'
最高分'
MIN(Gmark)as'
最低分'
fromGrade
whereCnoin(
selectCno
fromCourse
whereCname='
操作系统'
⑦找出选修了课程的学生人数;
selectCOUNT(distinctSno)as'
选修人数'
fromGrade;
⑧找出选修了课程操作系统的学生人数;
选修操作系统的人数'
whereCnoIN(
找出2000级计算机软件班的成绩为空的学生姓名
selectSname
fromStudent
whereSnoIN(
selectSno
fromGrade
whereGmark=null)andClnoin(selectClno
fromClass
whereInyear='
2000'
ANDSpeciality='
计算机软件'
2.试一下以下语句是否正确:
SELECTeno,basepay,service
FROMsalary
WHEREbasepay<
AVG(basepay)
答:
不对,聚合函数(集函数)不应该出现在where语句中。
(3.4.2:
带条件关系查询)
四、上机实验收获(感想):
实践是检验真理的唯一标准
五、思考题:
什么情况下需要使用关系的别名?
别名的作用范围是什么?
在简化书写和子查询的情况下。
作用范围:
区分先后查询的同一关系区。
上机实验五——SELECT语句高级格式和完整格式的使用
掌握SELECT语句的嵌套使用方法,能使用SQLServer2000对表作复杂查询。
1.复习第三章3.4节中SELECT语句的高级格式和完整格式的使用。
2.了解库函数在分组查询中的使用规则;
3.完成习题三第13、14题中的各项操作的SQL语句。
完成以下各项操作的SQL语句:
13.
找出与李勇在同一个班级的学生信息;
selectClno
fromStudent
whereSname='
)andSnameNOTIN('
②找出所有与李勇有相同选修课程的学生信息;
;
whereSnoin(
selectSno
fromGrade
whereCnoin(
selectCno
fromGrade
whereSno=(selectSno
fromStudent
whereSname='
)
))andSnameNOTIN('
③找出年龄介于学生李勇与25岁之间的学生信息(已知李勇的年龄小于25岁);
whereSage>
(selectSage
fromStudent
whereSname='
)andSage<
25;
④找出选修了课程操作系统的学生学号与姓名;
selectSno,Sname
whereSnoin(
selectSno
fromGrade
whereCnoin(
fromCourse
whereCname='
)
⑤找出没有选修1号课程的所有学生姓名;
whereSnonotin(
whereCno='
1'
⑥找出选修了全部课程的学生姓名。
wherenotexists(
select*
fromCourse
wherenotexists(
fromGrade
whereSno=Student.SnoandCno=Course.Cno
)
);
14.针对习题10的四个表,用SQL语言完成以下各项查询:
(1)查询选修了3号课程的学生学号及其成绩,并按成绩的降序排列;
selectSno,Gmark
fromGrade
whereCno='
3'
orderbyGmarkdesc;
(2)查询全体学生信息,要求查询结果按班级号升序排列,同一班级学生按年龄降序排列;
orderbyClno,Sagedesc;
(3)求每个课程号及相应的选课人数;
selectdistinctCno,count(Cno)AS'
选修人数'
GROUPBYCno;
(4)查询选修了3门以上课程的学生学号。
selectdistinctSno,COUNT(Cno)
groupbySno
havingCount(Cno)>
3;
一:
问题:
使用存在量词[NOT]EXIST的嵌套查询时,何时外层查询的where条件为真,何时为假?
取决于子查询的select语句,根据它所要查询的值在内查询中进行检查,返回一个逻辑值。
1.用UNION或UNIONALL将两个SELECT命令结合为一个时,结果有何不同?
。
1.UNION命令只会选取不同的值,
2.UNIONALL命令和UNION命令几乎是等效的
3.UNIONALL命令会列出所有的值
2.当既能用连接词查询又能用嵌套查询时,应该选择哪种查询较好?
为什么?
选用连接词查询。
效率高。
3.库函数能否直接使用在:
SELECT选取目标、HAVING子句、WHERE子句、GROUPBY列名中?
库函数可以使用在SELECT选取目标、HAVING字句、WHERE子句,不能使用在GROUP
BY列名