作品相关 SQL单元测试2
一、选择题(10*2分)
1.假定Sname是字符串类型,下列表达式符合语法要求的是(D)
ASname≠‘张三’BSname=(‘张三’,‘李四’)
CSname=张三DSname=‘123456’
2.假定Num是int数据类型,下列表达式中不符合语法要求的是(B)
ANum>=5BNum≠5
CNumBetween5And10DNum=5
3.条件表达式NumBetween5And10等价的条件表达式是(B)
ANum>5AndNum<10BNum>=5AndNum<=10
CNum>5ORNum<10DNum>=5ORNum<=10
4.条件表达式NumNOTBetween5And10等价的条件表达式是(C)
ANum<5AndNum>10BNum<=5AndNum>=10
CNum<5ORNum>10DNum<=5ORNum>=10
5.要查找学生表中姓名(Sname)中,含汉字“小”的学生,正确的表达式是(A)
A姓名like‘%小%’B姓名like‘小’
C姓名like‘小%’D姓名like‘%小’
6.使用子查询进行比较测试时,要求子查询语句返回的值是(C)
A多个值B单一值C逻辑值
7.删除视图所使用的SQL语句Dropview是(B)语句。
A数据管理B数据定义C数据操纵D数据控制
8.创建视图时,对与数据源下列说法正确的是(C)
A必须是基本表B必须是已有的视图
C可能是基本表,也可能是已有的视图D以上说法都是错误的
9.删除视图的正确语句是(B)
ADELETEVIEW视图名BDROPVIEW视图名
CDROPVIEW视图名(列名列表)D以上都是错误的
10当一个用户的角色被删除后,该用户的的状况是(C)
A作为数据库的用户,所有的权限全部消息
B该用户不再是数据库的用户
C用户只是失去了从角色那里继承的权限,但仍然拥有他们自己的权限
D以上都是错误的
二、填空题(5*2分)
1.使用EXISTS谓词进行存在性子查询时,其子查询返回的值是逻辑值/真或假。
2.对视图的所有操作最终都会消解为它所依赖的基本表的操作。
3.当基本表被删除后,直接影响直接或间接依赖于它的视图。
4.人们习惯上将视图称作虚表,因为在数据库中视图没有单独保存的数据。
5.SQLServer的安全管理模式是三级完全管理模式/三级身份验证模式。
三、简答题(10分)
1.在什么情况下,可以将条件中的IN改为等于号?(4分)
答:IN后的集合中只有唯一的一个值时,可以将IN改为等于号
2.在哪几种情况下,视图名后的列名列表是必须给出的。(6分)
答:(1)AS后的查询语句中某个列不是属性名,而是计算函数或列表达式;
(2)多表连接时选出了几个同名列作为视图的列名时;
(3)需要在视图中为某个列选用新的更合适的列名时。
以知数据库中的表有如下:
Student(学生表):
列名数据类型说明约束
SnoChar(8)学号主码
SnameVarchar(10)姓名
SsexChar(2)性别
birthdatetime出生日期
SdeptVarchar(20)所属系部外码
AddrVarchar(50)家庭住址
Course(课程表):
列名数据类型说明约束
CnoChar(6)课程号主码
CnameVarchar(24)课程名称
Ccredittinyint学分
Periodtinyint学时
Department(系部表):
列名数据类型说明约束
DnoChar(8)系部编号主码
DnameVarchar(30)系名称
DleadVarchar(10)系领导人
DteleVarchar(13)联系电话
SC(成绩表):
列名数据类型说明约束
SnoChar(8)学号主码
CnoChar(6)课程号主码
GradeTinyint成绩
四、语句填空(10*3)
1.查询“博学”部所有学生的详细信息。
Select*fromStudent
WhereSdept=‘博学’
2.查询所有姓“王”的学生的详细信息。
Select*fromStudent
WhereSname=‘王%’
3.查询选修了“ASP001”或“FLS001”号课程的学生的学号,并消除重复记录。
SelectdistinctSnofromSC
WhereCnoIN(‘asp001’,’fls001’)
4.查询所有学生的姓名,年龄。
4.SelectSname,datediff(yy,birth,getdate())
fromStudent
5.查询开课总门数。
Selectcount(Cno)fromCourse
6.按不同性别,统计其平均年龄。
SelectSsex,avg(datediff(yy,birth,getdate()))fromStudent
Ssex
7.按课程统计成绩在85分以上的人数。
SelectCno,Count(Sno)fromSC
wheregrade>=85
GroupByCno
五、SQL语句解答(6*5分)
表中的字段,仍然是按照刚刚给出的进行。
3.查询“求真”部,所有女学生的姓名,性别。
4.查询出生在1986年以前的学生的姓名,出生日期。
5.查询姓“张”,但第二字不是“三”的学生的所有信息。
6.查询课程表中,选课人数少于20人的课程名。
7.创建一个视图“V5”,用于显示“博学”部所有男生的所有记录。
8.创建一个视图“V6”,用于显示各个系部的男、女生人数。
1.SelectSname,SsexfromStudent
whereSsex=‘女’
2.SelectSname,birthfromStudent
whereyear(birth)<1986
3.Select*fromStudent
whereSnamelike‘张[^三]%’
4.SelectCnamefromCourse
whereCnoIN
(SelectCno,count(Sno)fromSC
groupbyCno
havingcount(Sno)<20)
5.createviewV5
as
‘*fromStudent
whereSdept=‘博学’
6.createviewV6
As
SelectSdept,Ssex,count(sno)fromStudent
GroupbySdept,Ssex