SQL期末复习学第二学期.docx
《SQL期末复习学第二学期.docx》由会员分享,可在线阅读,更多相关《SQL期末复习学第二学期.docx(12页珍藏版)》请在冰豆网上搜索。
![SQL期末复习学第二学期.docx](https://file1.bdocx.com/fileroot1/2023-1/28/b3b9a605-ef08-496b-8639-83955a99e366/b3b9a605-ef08-496b-8639-83955a99e3661.gif)
SQL期末复习学第二学期
SQL期末复习
考核知识点:
第一章:
数据库的基础知识
1)数据库概述:
定义
2)数据库系统:
构成、核心
3)关系模型:
记录、属性、字段等概念
第三章:
SQL的基础知识
1)SQL的数据类型:
基本类型的种类与使用方法
2)标示符:
自定义标示符的规则
3)使用SQL语句管理与维护数据库:
创建、修改、删除数据库的SQL语句
4)使用SQL语句管理与维护表:
创建、修改、更新、删除的操作
5)利用简单的SQL语句进行表格数据的查询:
简单select语句
第四章:
SQL高级查询
1)关联表查询
2)UNION子句的使用
3)子查询(IN)与连接查询(LEFT/RIGHT/FULLJION)
第五章:
视图
1)视图的概述
2)创建视图、使用与维护视图
第六章:
索引
1)索引的概述
2)索引的分类
第七章:
T-SQL程序设计
1)T-SQL的变量类型与表示方法
2)程序流程控制语句:
(BEGINEND、IFELSE、WHILE)
第八章:
函数
1)系统内置函数
2)自定义函数的使用
第九章:
存储过程、触发器和游标
1)系统存储过程与自定义存储过程的使用
2)触发器的概述与使用
第十一章:
SQL数据库的安全性管理
1)SQL的安全性机制
2)登陆账号、用户账号、角色等概念的理解
第十二章:
数据的备份与恢复
数据的备份方法与恢复
期末复习综合测试题
1.数据库系统的核心是()。
A.编译系统B.数据库C.操作系统D.数据库管理系统
2.关系模型中的数据逻辑结构是()。
A.矩阵B.树C.二维表D.矢量
3.关系数据库中的关键字是指()。
A.能惟一决定关系的字段B.不可改动的专用保留字
C.关键的很重要的字段D能惟一标识元组的属性或属性集合
4.对所有视图都可以进行。
A.selectB.insertC.updateD.delete
5.学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的联系类型是( )。
A.多对多 B.一对一 C.多对一 D.一对多
6.若要删除数据库中已经存在的表S,可用()。
A.DeletetableSB.DELETESC.DROPTableSD.DROP S
7.学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。
要在S中删除一个属性“年龄”,可选用的SQL语句是()。
A.DELETEAgefromSB.ALTERTABLESDROPAge
C.UPDATESAgeD.ALTERTABLES‘Age’
8.从产品”表里查询出价格高于产品名称为“一次性纸杯”的产品的记录,此SQL语句为()。
A.SELECT*FROM产品WHERE价格>‘一次性纸杯’
B.SELECT*FROM产品WHERE价格>(SELECT*FROM产品WHERE产品名称>’一次性纸杯’
C.SELECT*FROM产品WHEREEXISTS产品名称=’一次性纸杯’
D.SELECT*FROM产品WHERE价格>(SELECT价格FROM产品WHERE产品名称=’一次性纸杯’
9.查找student表中所有电话号码(列名:
telephone)的第一位为8或6,第三位为0的电话号码()。
A.SELECTtelephoneFROMstudentWHEREtelephoneLIKE'[8,6]%0*'
B.SELECTtelephoneFROMstudentWHEREtelephoneLIKE'(8,6)*0%'
C.SELECTtelephoneFROMstudentWHEREtelephoneLIKE'[8,6]_0%'
D.SELECTtelephoneFROMstudentWHEREtelephoneLIKE'[8,6]_0*'
10.现有书目表book,包含字段:
价格price(float),类别type(char);现在查询各个类别的平均价格、类别名称,以下语句正确的是()。
A.selectavg(price),typefrombookgroupbytype
B.selectcount(price),typefrombookgroupbyprice
C.selectavg(price),typefrombookgroupbyprice
D.selectcount(price),typefrombookgroupbytype
11.查询student表中的所有非空email信息,以下语句正确的是()。
A.Selectemailfromstudentwhereemail!
=null
B.Selectemailfromstudentwhereemailnotisnull
C.Selectemailfromstudentwhereemail<>null
D.Selectemailfromstudentwhereemailisnotnull
12.现有订单表orders,包含用户信息userid,产品信息productid,以下()语句能够返回至少被订购过两回的productid?
A.selectproductidfromorderswherecount(productid)>1
B.selectproductidfromorderswheremax(productid)>1
C.selectproductidfromorderswherehavingcount(productid)>1groupbyproductid
D.selectproductidfromordersgroupbyproductidhavingcount(productid)>1
13.关于聚合函数,以下说法错误的是()。
A.Sum返回表达式中所有数的总合,因此只能用于数字类型的列。
B.Avg返回表达式中所有数的平均值,可以用于数字型和日期型的列。
C.Max和Min可以用于字符型的列。
D.Count可以用于字符型的列
14.使用以下()可以进行模糊查询。
A.OR B.Notbetween C.NotIN D.Like
15.SQL语句:
select*fromstudentswhereSNOlike‘010[^0]%[A,B,C]%’,可能会查询出的SNO是()。
A.01053090A#Hm3?
B.01003090A01 C.01053090D09 D.0101E01
16.假设订单表orders用来存储订单信息,cid代表客户编号,money代表单次订购额,现要查询每个客户的订购次数和每个客户的订购总金额,下面()sql语句可以返回正确结果。
A.selectcid,count(distinct(cid)),sum(money)fromordersgroupbycid
B.selectcid,count(distinct(cid)),sum(money)fromordersorderbycid
C.selectcid,count(cid),sum(money)fromordersorderbycid
D.selectcid,count(cid),sum(money)fromordersgroupbycid
17.现有客户表customers(主键:
客户编号cid),包含10行数据,订单表orders(外键:
客户编号cid),包含6条数据。
执行sql语句:
select*fromcustomersrightouterjoinordersoncustomers.cid=orders.cid。
最多返回()条记录。
A.10 B.6 C.4 D.0
18.预测以下语句的输出:
selectstor_id,count(stor_id)fromsalesgroupbystor_idhavingavg(qty)>=20andcountstor_id)>3,以下()选项是正确的?
A.查询将显示那些商店的材料,它们的订单在3次以上,订单的平均数量大于等于20。
B.查询将显示那些商店的材料,它们订单的平均数量大于等于20。
C.查询将显示那些商店的材料,它们的订单在3次以上。
D、查询将显示那些商店的材料,它们的订单在3次以上,订单的数量大于等于20。
19SQL语言允许使用通配符进行字符串匹配的*作,其中‘%’可以表示()
A零个字符B1个字符串C多个字符串D以上都是
20如何在已经创建好的表上添加一个外键()
AAltertable表名addforeignkey(键名)reference关联表(关联键名)
BAltertable表名addPrimarykey(键名)reference关联表(关联键名)
CAlter表名addforeignkey(键名)reference关联键名)
DAlter表名addPrimarykey(键名)reference关联表(关联键名)
21要修改表名为Table1的字段Field1长度,原为Char(10)要求用SQL增加长度为char(20),以下语句那个正确()
AAltertableTable1AlterField1char(20)
BAlterTable1AltercolumnField1char(20)
CAltertableTable1AltercolumnField1char(20)
DAltercolumnField1char(20)
22下面聚集函数中哪个只能用于计算数值类型的数据()
ACOUNT()BMIN()CMAX()DSUM()
23以下哪个关键字用来定义记录在某属性上的约束条件()
ADEFAULTBDISTINCTCUNIQUEDCHECK
24欲往表中增加一条记录,应该用哪一条SQL语句()
AALTERTABLEBINSERTINTOTABLE
CCREATETABLEDDROPTABLE
25以下哪一个不是逻辑运算符()ANOTBANDCORDIN
26在创建表的过程中,哪个关键字用来定义默认值()
ADISTINCTBUNIQUECCHECKDDEFAULT
二、判断题
1默认值绑定到列上后,该列上的值将固定不能改变(χ)
2一张表允许有多个主键,但只能有一个外键(χ)
3可以通过SQL语句修改数据库名称及表的名称(χ)
4聚集函数SUM()与AVG()可以用来操作任何类型的数据(χ)
5要删除一条记录使用DROP指令(χ)
6在空串处理语句中,ISNULL用来判断属性值是否为空,在此IS是关键字,不是标准的逻辑运算符()
7在模糊查询中可以使用LIKE结合通配符一块儿实现,其中%代表单个字符(χ)
8在查询语句中,若要把记录进行降序排列应使用ORDERBY字段名DESC()
9在创建表的过程中,如果一属性是DATETIME类型需要指定长度(χ)
10在关系数据库的设计过程中,允许在设计后对表结构进行修改()
三、填空题
1数据库技术经历了人工管理阶段,_文件管理________和__数据库管理_____三个发展阶段。
2数据库系统中最常用的三种数据模型有层次模型,___网状模型______和_关系模型______。
3.E-R图的主要元素是实体型,_联系_____,__属性____。
4.SQLServer中,数据库主数据文件扩展名为mdf,次数据文件扩展名为 ndf ,事务日志文件扩展名为 ldf 。
5.E-R图的三要素是实体、属性和联系。
6.已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系:
“学生”关系的主键是:
学号,“学生”关系的外键是:
系编号。
7.关系数据库已成为目前应用最广泛的数据库系统,如现在广泛使用的小型数据库系统Access,大型数据库系统如SQL等都是关系数据库管理系统
8.SQL语言中所使用的通配符中,表示任意多个字符的符号为:
%,表示单一字符的符号为*。
9.视图是从基本表中导出的表,它与基本表不同,是一个虚拟表。
数据库中只存放视图的定义,而不存放视图对应的数据。
10.使用索引可以减少检索时间,根据索引的存储结构不同将其分为两类:
聚集索引,非聚集索引。
11.能够返回当前系统日期和时间的系统函数是getdate()。
12、把学号约束为主键后,学号具有唯一性的特点。
13.删除表命令是:
DROPTABALE__。
14.SQLserver中的变量分为两种,全局变量和局部变量。
其中全局变量的名称以__@@______字符开始,由系统定义和维护。
局部变量以___@____字符开始,由用户自己定义和赋值。
15.SQLServer的安全机管理分为三个等级:
操作系统级、SQLServer级、数据库级。
16.在日常管理中,数据库中的数据丢失或被破坏是难以避免的,为了减少损失,平时要对系统数据进行备份,以便在需要时以最小的代价恢复数据。
17.设有关系R、S、T如下图所示,计算S-R、S∩R的结果:
abidapdafcbd
关系R
A
B
C
a
b
c
d
a
f
c
b
d
a
b
p
关系S
A
B
C
a
b
i
d
a
f
d
a
p
c
b
d
S-R
A
B
C
a
b
i
d
a
p
S∩R
A
B
C
d
a
f
c
b
d
四、综合题目
(一)数据库的创建于维护
1.用T-SQL语句创建mydb数据库,此数据库包含一个主数据文件,逻辑名为mydb,物理文件名是mydb.mdf,存放在D:
\sql下,初始空间是2MB,最大空间是10MB,文件增长是20%;一个日志文件,逻辑文件名是mydb_log,物理文件名是mydb_log.ldf,存放在D:
\sql下,初始空间是2MB,最大空间是10MB,文件增长是1MB。
写出程序。
2.在数据库mydb中创建“学生”表,表结构如下:
字段名
字段数据类型
长度
是否为空
约束
学号
char
9
否
主键名xh
姓名
char
8
是
性别
char
2
是
出生日期
datetime
8
是
入学日期
datetime
8
是
备注
varchar
50
是
3.在创建的“学生”表中添加如下两条记录。
学号
姓名
性别
出生日期
入学日期
备注
041020101
王婵
女
1985.6.6
2004.9.1
041020102
李明
男
1985.8.6
2004.9.1
(二)考虑下面的表结构。
NewProduct(产品表)
Category(产品种类表)
属性名
数据类型
属性名
数据类型
ProductId(产品号)
char(6)
CategoryId(产品种类号)
char(3)
ProductName(产品名)
varchar(20)
CategoryName(种类名)
char(20)
ProductDescription(产品描述)
varchar(250)
Description(种类描述)
varchar(100)
CategoryId(产品种类号)
char(3)
Photo(产品照片)
image
oh(现有数量)
smallint
ProductImgPath(照片路径)
varchar(50)
对于下面的问题参考以上表的结构:
Createbase学生表
(学号varchar(9)primarykey,
姓名char(8)null,
性别char
(2)null,
出生日期datetimenull,
入学日期datetimenull,
备注varchar(50)null)
`1、创建带有下面数据完整性规则的NewProduct表:
a.productid应该是主键。
b.Photo和ProductImgPath属性可以允许存储NULL值。
c.ProductName和ProductDescription属性不应该允许NULL值。
d.CategoryId属性的值的取值范围为:
“00001~10000”。
CreatebaseNewProduct
(产品号char(6)primarykey
产品名)
2、在Category表中插入以下数据:
CategoryId
Category
00005
bike
Insertintoactegory
(categrory,category)
Values
(‘00005’,’bike’)
3、将Category为‘bike’的产品的现有数量(QoH)减少5个。
4、完成以下查询:
.显示总现有数量大于200的产品的每类产品的CategoryId、CategoryName、总现有数量
Selectcategoryid,categotynamefromcrategory
Whereoh>200
b.显示现有数量(Qoh)大于所有产品的平均现有数量的产品的ProductId,ProductName,Qoh。
5、建一个视图,视图名为vwProduct:
要求检索出Category以‘b’开头的产品的ProductId、ProductName、CategoryId、CategoryName、Qoh。
6、对题5中的视图做以下的update操作,会出错,原因是什么?
可以用什么语句来实现该目的?
UpdatevwProductsetQoh=Qoh+2,Category=‘car’whereCateoryId=’c01’
(三)设计题
(1)要开发商业集团数据库管理系统,在该系统中有三个实体:
商店:
商店编号,商店名,地址;
商品:
商品号,商品名,规格,单价;
职工:
职工编号,姓名,性别,业绩
商店和商品间存在“销售”联系,每个商店可以销售多种商品,每种商品也可放在多个商店销售,每个商店销售的每种商品有月销售量;商店和职工间存在“聘用”关系,每个商店有多名职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。
1)、请画出该商业集团数据库管理系统的ER图,并在图上标出实体标识符,属性和联系的类型。
2)、将E-R图模型转换成关系模型,并标出主键。
(2)某简单的教学管理系统,在该系统中有三个实体:
学生:
属性有:
学号、姓名、专业、班级等;
教师:
属性有:
教师编号、教师姓名,授课班级,所属院系等;
课程:
属性有:
课程编号,课程名称等
学生和课程间存在“选修”联系,一个学生可选多门课程,而一门课程又有多个学生选修;选修课程有学分,成绩。
教师和课程之间存在“讲授”联系,一个教师至多可讲3门课程,一门课程至多只有一个教师讲授,讲授有周课时的要求。
1)请画出该教学管理系统的E-R图,并在图上标出实体标识符,属性和联系的类型。
2)将E-R图转换成关系模式,并注明主键。
(四)现有成绩管理系统数据库如下:
学生表(学号,姓名,性别,出生年月,班级编号)
成绩表(学号,课程编号,成绩)
班级表(班级编号,班级名称)
1.在学生表中,写出查询学生信息前10%条记录的语句:
Selecttop10percent*from学生信息表
2、在成绩表、班级表、学生表中,查询学号为‘20130102‘的学生信息,包括学号、姓名、班级名称、成绩等字段。
Select学号,姓名,班级名称,成绩
From成绩表,班级表,学生表
Where学号=‘20130102’
在成绩表中,为每位同学的成绩加上5分。
Update成绩表
SET成绩=成绩+5
update成绩=成绩+成绩*5%
4、查询出不及格学生的学生信息,包括学号、姓名、班级、成绩等字段。
SELECT学号,姓名,班级,成绩
From学生信息表,成绩表
Where成绩<60
5、查询出补考科目在2门以上的学生信息,包括学号、姓名、班级、成绩等字段。
Select学号,姓名,班级,成绩
From学生信息表,班级信息表
Where成绩<60
Groupby学号
Havingcount(*)>2
selectnumfromstudentwherescore<60groupbynumhavingcount(num)>=2
6、写出在成绩表中统计学生平均分大于70的成绩记录。
包括学号、总分、平均分、课程门数、课程最高分、课程最低分字段。
Select学号,sum(studscore)总分,cast(avg(studscore)asnumeric(4,1))平均分,count(*)课程门数,max(studscore)课程最高分,min(studscore)课程最低分
From成绩表
Groupby学号
Havingavg>70
7、创建学生平均成绩视图V_StudAvgScore其中包括学号、姓名、平均分、总分、最高分、最低分、课程门数字段。
CreateviewV_StudAvgScore
As
Select学号,姓名,平均分,最高分,最低分,课程门数
From学生信息表,成绩表
Where成绩表.学号=学生表.学号
8、自定义函数,通过学生的学号,显示该学生的成绩统计信息,包括:
学号,姓