数据库练习题.docx
《数据库练习题.docx》由会员分享,可在线阅读,更多相关《数据库练习题.docx(16页珍藏版)》请在冰豆网上搜索。
数据库练习题
填空选择类练习题
一、填空题
1、系统自动创建的索引有____unique和primary___。
2、SQL语言支持关系数据库的三级模式结构分别是____外模式___、内模式____、 ____模式__。
3、主数据文件的扩展名为.mdf。
4、主键约束是___非空____和____唯一____的组合。
5、数据库文件有____主数据文件(.mdf)___、____辅助数据文件(.ndf)____、 ____日志文件(.ldf)____。
///6、SQL语言支持关系数据库的三级模式结构分别是_______、________、 ________。
//7、视图的查询不可以包含___compute/computeby____、____orderby____和___into_____关键字。
8、数据库领域常用的数据模型有____层次模式___、____网状模式____、 ____关系模式____、____面向对象____。
9、在一个表中只能设置___1_____个主键约束,可以定义_____多___个唯一性约束。
二、选择题
1、次数据文件用于存储不能存在主数据文件中的数据,默认扩展名为()。
A..ndfB..mdfC..logD..dat
2、关系模型中数据的逻辑结构是一张二维表,它由()组成。
A.行和列B.行C.关系D.列
3、一个查询的结果成为另一个查询的条件,这种查询被称为()。
A.连接查询B.内查询C.自查询D.子查询
4、SELECT语句中,下列(B)子句用于对数据按照某个字段分组?
(A)子句用于对分组统计进一步设置条件。
A.HAVING子句B.GROUPBY子句C.ORDERBY子句D.WHERE子句
5、在SELECT语句中,下列子句用于对搜索的结果进行排序(C)。
A.HAVING子句B.GROUPBY子句C.ORDERBY子句D.WHERE子句
6、修改视图时,使用(A)选项,可以对CREATEVIEW的文本进行加密。
A.WITHENCRYPTIONB.WITHCHECKOPTIONC.VIEW_METADATAD.ASSQL语句
7、与WHEREAGEBETWEEN18AND23完全等价的是()。
A.WHEREAGE>18ANDAGE<23B.WHEREAGE>=18ANDAGE<23C.WHEREAGE>18ANDAGE<=23D.WHEREAGE>=18ANDAGE<=23
一、填空题
1、在查询编辑器窗口输入的SQL语句,可以被保存或重新打开,SQL文件的扩展名为_____.sql____。
2、数据库领域常用的数据模型有____层次模式___、___网状模式_____、 ____关系模式____、_____面向对象___。
3、数据库文件有____.mdf___、___.ndf_____、 ____.ldf____。
4、主数据文件的扩展名为 ____.mdf____。
5、主键约束是____非空___和____唯一____的组合。
6、在一个表中只能设置____1____个主键约束,可以定义_____多___个唯一性约束。
7、视图的查询不可以包含___compute/computeby____、____orderby____和____into____关键字。
8、系统自动创建的索引有___unique____和____primary____。
//9、游标包含___结果集___和_____位置__两部分。
二、选择题
1、创建视图命令是(A)。
游标declare
A.CREATEVIEWB.DROPVIEWC.CREATETABLED.CREATERULE
2、在SELECT语句中,如果想要返回的结果集中不包含相同的行,应该使用关键字(C)。
A.TOPB.ASC.DISTINCTD.JOIN
3、在SELECT语句中,下列子句用于将查询结果存储在一个新表中(B)。
A.SELECT子句B.INTO子句C.FROM子句D.WHERE子句
4、为了对表中的各行进行快速访问,应对此表建立(C)。
A.约束B.规则C.索引D.视图
5、通过CREATETABLE语句或者其他方法创建了一个表后,可以使用(B)语句在表中添加记录。
A.DELETEB.INSERTC.UPDATED.INSEATER
6、(B)在定义列时,它可以为表中的指定列提供默认值。
A.FOREIGN约束外码约束B.DEFAULT约束C.UNIQUE约束D.CHECK
7、单击【查询编辑器】窗口中的任意位置。
按(A)命令,可以在全屏显示模式和常规显示模式之间进行切换。
A.Shift+Alt+EnterB.Shift+EnterC.Shift+AltD.Shift
1、单击【查询编辑器】窗口中的任意位置。
按()命令,可以在全屏显示模式和常规显示模式之间进行切换。
A.Shift+Alt+EnterB.Shift+EnterC.Shift+AltD.Shift
2、在查询编辑器窗口输入的SQL语句,可以被保存或重新打开,SQL文件的扩展名为_________。
3、关系模型中数据的逻辑结构是一张二维表,它由()组成。
A.行和列B.行C.关系D.列.
4、关系模型的完整性规则是对数据的约束。
关系模型提供了三类完整性规则_____实体______、_____参照______和_____自定义______。
5、次数据文件用于存储不能存在主数据文件中的数据,默认扩展名为()。
A..ndfB..mdfC..logD..dat
6、通常情况,SQLServer2005主要支持PRIMARY约束、UNIQUE约束、CHECK约束、DEFAULT约束、FOREIGN约束。
()在定义列时,它可以为表中的指定列提供默认值。
A.FOREIGN约束B.DEFAULT约束C.UNIQUE约束D.CHECK
7、创建S时,要求约束sex属性只能取值为男或者女,正确的命令是(B)。
A.CREATETABLESB.CREATETABLES
((
sexchar
(2),sexchar
(2),
CHECK(sexin('男','女'))CHECK('男','女')
))
C.CREATETABLESD.CREATETABLES
((
sexchar
(2),sexin('男','女')char
(2),
sexin('男','女'))
8、通过CREATETABLE语句或者其他方法创建了一个表后,可以使用()语句在表中添加记录。
A.DELETEB.INSERTC.UPDATED.INSEATER
9、一个查询的结果成为另一个查询的条件,这种查询被称为()。
A.连接查询B.内查询C.自查询D.子查询
10、为了对表中的各行进行快速访问,应对此表建立()。
A.约束B.规则C.索引D.视图
11、SELECT语句中,下列()子句用于对数据按照某个字段分组?
()子句用于对分组统计进一步设置条件。
A.HAVING子句B.GROUPBY子句C.ORDERBY子句D.WHERE子句
12、在SELECT语句中,下列子句用于将查询结果存储在一个新表中()。
A.SELECT子句B.INTO子句C.FROM子句D.WHERE子句
13、在SELECT语句中,下列子句用于对搜索的结果进行排序()。
A.HAVING子句B.GROUPBY子句C.ORDERBY子句D.WHERE子句
14、在SELECT语句中,如果想要返回的结果集中不包含相同的行,应该使用关键字()。
A.TOPB.ASC.DISTINCTD.JOIN
15、与WHEREAGEBETWEEN18AND23完全等价的是()。
A.WHEREAGE>18ANDAGE<23B.WHEREAGE>=18ANDAGE<23C.WHEREAGE>18ANDAGE<=23D.WHEREAGE>=18ANDAGE<=23
16、创建视图命令是()。
A.CREATEVIEWB.DROPVIEWC.CREATETABLED.CREATERULE
17、修改视图时,使用()选项,可以对CREATEVIEW的文本进行加密。
A.WITHENCRYPTIONB.WITHCHECKOPTIONC.VIEW_METADATAD.ASSQL语句
简答类练习题
1.数据库管理系统的构成有哪些?
2.数据模型有哪些?
层次模型、网状模型、关系模型、面向对象
3.实体间的关系有哪几种?
一对一、一对多、多对多
4.数据库管理经历了哪3个阶段?
1:
程序管理阶段2:
文件管理阶段3:
数据库系统管理阶段
////人工管理、文件系统和数据库管理系统
5.数据完整性有哪些?
正确性、有效性、相容性///实体完整性约束参照完整性约束用户自定义完整性
6.数据库对象有哪些?
至少5个
表、视图、索引、约束、触发器、默认值、用户和角色、规则、类型、函数
7.数据库文件有哪3类?
主数据文件、辅助数据文件、日志文件
8.关系运算符有哪些?
选择、投影、连接
9.备份的方法有哪些?
完全数据库备份、数据库和事务日志备份、差异备份、数据库文件和文件组备份
10.身份验证模式有哪2种?
Windows验证模式、SQLServer验证模式
表的操作:
1、创建T表(教师基本情况表)
(TNO,TN,SEX,AGE,PROF,SAL,DEPT)分别表示教师的编号,姓名,性别,年龄,职称,工资,系别。
TC表(教师授课表)的结构为TC(TNO,CNO)分别表示教师的编号,课程编号
USEexample
GO
CREATETABLEt
(
TNOchar(10)NOTNULLPRIMARYKEY,/*教师编号字段*/
TNchar(10)NULL,/*教师姓名字段*/
SEXchar
(2)NULL,/*教师性别字段*/
AGEintNULL,/*教师年龄字段*/
PROFchar(20)NULL,/*教师职称字段*/
SALintNULL,/*教师工资字段*/
DEPTchar(10)NULL,/*教师所在系别字段*/
)
GO
INSERTINTOtVALUES('0001','张老师','男',41,'副教授',2200,'电力系')
GO
INSERTINTOtVALUES('0002','张益琳','女',32,'讲师',1500,'动力系')
GO
CREATETABLETC
(
TNOchar(10)NOTNULL,/*教师编号字段*/
CNOchar(10)NULL,/*教师执教课程字段*/
)
GO
INSERTINTOtcVALUES('0001','C5')
GO
2、把所有教师的工资提高到平均工资的1.2倍。
updatetsetsal=sal*1.2
3、删除张益琳教师的记录。
deletet
whereTn='张益琳'
4.增加一个telchar(20)列。
ALTERTABLEt
ADDtelchar(20)
5.将工资字段属性改为float型。
ALTERTABLEt
ALTERCOLUMNsalchar(20)
6.删除tel字段。
ALTERTABLEt
DROPCOLUMNtel
7.将张老师的年龄改为50岁。
updatetsetage=50
whereTn='张老师'
8.将张老师的执教课程字段改为C10.
UPDATEtcSETcno='c10'
WHEREtnoIN
(SELECTtnoFROMtWHEREtn='张老师')
9.将TC表改为TC_01表。
execsp_rename'tc','tc_01'
10.将系别字段命名为sdept.
execsp_rename't.dept','sdept'
11.删除TC_01表.
droptabletc_01
查询操作:
查询操作查询操作查询操作查询操作
1.查询xs表中所有内容
2.查询xs表中学号,姓名
3.查询xs表中专业
4.查询xs表中专业,过滤掉重复元组。
5.查询xs表中学号,姓名,并设置学号为学生学号
6.查询xs表中学号,姓名,出生时间,年龄
7.查询xs表前3条记录
8.查询xs表中学号,姓名,性别并把查询内容生成新表xs_new
9.生成新表xs_new1,使此表的框架和xs表相同,但表中无记录。
10.查询xs表中年龄在23岁以下的学生学号,姓名,出生日期。
11.查询cj表中选修了a001的j001学生学号
12.查询xs表中姓王的学生
13.查询xs表中姓王的女学生
14.查询xs表中的所有学生记录,并按总学分降序排列
15.查询xs表不属于信息管理专业学生记录
16.查询选修了课程的学号,姓名,课程号,成绩
xs表
学号
姓名
性别
出生时间
专业
总学分
101
王林
男
1988-2-3
信息管理
20
102
程明
男
1988-5-15
信息管理
20
103
王燕
女
1987-8-23
信息管理
20
104
李丽
女
1988-12-22
网络工程
24
105
李强
男
1987-4-5
网络工程
26
cj表
学号
课程号
成绩
101
a001
89
101
a002
98
102
j001
60
102
j002
70
答案:
1.select*fromxs
2.select学号,姓名fromxs
3.select专业fromxs
4.selectdistinct专业fromxs
5.select学号as学生学号,姓名fromxs
6.select学号,姓名,出生时间,datediff(year,出生时间,getdate())as年龄fromxs
7.selecttop3*fromxs
8.select学号,姓名,性别intoxs_newfromxs
9.select*intoxs_new1fromxswhere1>2
10.select学号,姓名,出生时间fromxswheredatediff(year,出生时间,getdate())<23
11.select学号fromcjwhere课程号in(‘a001’,’j001’)
12.select*fromxswhere姓名like‘王%’
13.select*fromxswhere姓名like‘王%’and性别=’女’
14.select*fromxsorderby总学分desc
15.select*fromxswhere专业<>’信息管理’
16.selectxs.学号,姓名,课程号,成绩fromxs,cjwherexs.学号=cj.学号
假设有basetest数据库的如下关系
Student(sno,sname,ssex,sage,sdept)
Sc(sno,cno,grade)
Course(cno,cname,cpni,ccredit)
Usebasetest
5.用in和exists分别实现下面内容
1)查询选修了高等数学的学号,成绩和课程号
2)查询选修了高等数学的学号,姓名和系别
6.用比较子查询实现查询大于平均年龄的学生信息
答案:
5.1)selectsno,grade,cno
fromsc
wherecnoin
(selectcno
Fromcourse
wherecname=’高等数学’)
selectsno,grade,cno
fromsc
whereexists
(select*
fromcourse
wherecno=oandcname=’高等数学’)
2)selectsno,sname,sdept
fromstudent
wheresnoin
(selectsno
fromsc
wherecnoin
(selectcno
fromcourse
wherecname=’高等数学’))
selectsno,sname,sdept
fromstudent
whereexists
(select*
fromsc
wheresno=student.snoandexists
(select*
Fromcourse
Wherecno=oandcname=’高等数学’))
6.select*fromstudent
Wheresage>(selectavg(sage)fromstudent)
select*fromstudent
wheresdept!
=’IS’andsage>all
(selectsage
Fromstudent
Wheresdept=’IS’)
视图的操作:
视图的操作:
视图的操作:
视图的操作:
usebasetest
1、创建stud_view视图,显示学生的姓名、选修课程和成绩。
createviewstud_view
as
selectsname,cno,grade
fromsc,student
wheresc.sno=student.sno
2、创建stud_view1视图,可以查看平均成绩在80分以上的学生姓名。
createviewstud_view1
as
selectsname
fromstudent
wheresnoin
(selectsno
fromsc
groupbysno
havingavg(grade)>80)
3、创建student_view2视图,可以显示课程名和选修该课程的学生人数。
createviewstudent_view2
as
selecto,cname,count(sno)人数
fromsc,course
whereo=o
groupbyo,cname
5、创建depart_view视图查看每个系的学生人数。
createviewdepart_view
as
selectsdept,count(sno)as人数
fromstudent
groupbysdept
6、创建stud_view2视图可以查看每个学生的选修课程的门数和平均成绩。
createviewstud_view2
as
selectsno,count(sno)as门数,avg(grade)as平均成绩
fromsc
groupbysno
7、在stud_view2视图上查询平均成绩在80分以下的学生学号。
selectsno
fromstud_view2
where平均成绩<80
触发器、程序控制、自定义函数、存储过程:
例5创建一个自定义函数,返回特定学号学生选修课程的平均成绩。
(自定义函数)
USEbasetest
GO
CREATEFUNCTIONinfo_student(@snonchar(8))
RETURNSFLOAT
AS
BEGIN
DECLARE@GradeFLOAT
SET@Grade=(SELECTAVG(grade)
FROMsc
WHEREsno=@sno
GROUPBYsno)
RETURN@Grade
END
例10求5的阶乘(程序控制)
DECLARE@rint,@timesint
SET@r=1
SET@times=1
label1:
SET@r=@r*@times
SET@times=@times+1
IF@times<=5
GOTOlabel1
PRINT'5的阶乘为:
'+str(@r)
例11求1到100的和(程序控制)
DECLARE@iint,@sumint
SET@i=0
SET@sum=0
WHILE@i>=0
BEGIN
SET@i=@i+1
IF@i>100
BEGIN
SELECT'1到100的和'=@sum
BREAK
END
ELSE
SET@sum=@sum+@i
END
例15返回女生信息(存储过程)
IFEXISTS(SELECTnameFROMsysobjects
WHEREname='stu_pro'andtype='p')
DROPPROCEDUREstu_pro
GO
CREATEPROCEDUREstu_proAS
SELECT*
FROMstudent
WHEREssex='女'
GO
--调用
EXECUTEstu_pro
GO
例5检查插入的学生是否是is系的学生(触发器)
USEbasetest
IFEXISTS(SELECTnameFROMsysobjects
WHEREname='sc_tr'ANDtype='TR')
DROPTRIGGERsc_tr
GO
CREATETRIGGERsc_tr
ONsc
FORINSERT
AS
IFEXISTS(
SELECTsnoFROMinserted
WHEREsnoNOTIN
(
SELECTsnoFROMstudent
WHEREsdept='IS'
)
)
BEGIN
PRINT'该学生不是IS系的学生'
ROLLBACKtran
END
GO
例6学生选修过的课程不能删除(触发器)
USEbasetest
GO
IFEXISTS(SELECTnameFROMsysobjects
WHEREname='course_tr'ANDtype='TR')
DROPTRIGGERcourse_tr
GO
CREA