《数据库及SQL Server》综合练习.docx
《《数据库及SQL Server》综合练习.docx》由会员分享,可在线阅读,更多相关《《数据库及SQL Server》综合练习.docx(20页珍藏版)》请在冰点文库上搜索。
![《数据库及SQL Server》综合练习.docx](https://file1.bingdoc.com/fileroot1/2023-6/1/a4d51e2d-dfb2-4640-9261-1434225a0217/a4d51e2d-dfb2-4640-9261-1434225a02171.gif)
《数据库及SQLServer》综合练习
《数据库及SQLServer》综合练习
一、选择题
1.在数据库系统中,负责监控数据库系统的运行情况,及时处理运行过程中出现的问题,这是()人员的职责。
A.数据库管理员B.数据用户C.数据库设计员D.应用程序设计员
2.现实世界中客观存在并能相互区别的事物称为()。
A.实体B.实体集C.属性D.记录
3.下列实体型的联系中,属于一对一联系的是()。
A.班级与学生的所属联系B.父亲与孩子的亲生联系
C.班级与班长的管理联系D.供应商与工程项目的供货联系
4.在数据库设计中,E-R模型是进行()的一个主要工具。
A.需求分析B.概念设计C.逻辑设计D.物理设计
5.E-R方法的三要素是()。
A.实体、属性、实体集B.实体、键、联系
C.实体、属性、联系D.实体、域、候选键
6.下面有关E-R模型向关系模型转换的叙述中,不正确的是()。
A.一个实体类型转换为一个关系模式
B.一个1:
1联系可转换为一个独立关系模式,也可与联系的任一端实体对应的关系模式合并
C.一个1:
n联系可转换为一个独立关系模式,也可与联系的任一端实体对应的关系模式合并
D.一个m:
n联系转换为一个关系模式
7.关系数据库规范化是为解决关系数据库中()问题而引入的。
A.数据冗余和插入、删除异常B.提高查询速度
C.减少数据操作的复杂性D.保证数据的安全性和完整性
8.1NF分解成2NF是通过()实现的。
A.消除非主属性对码的传递函数依赖B.消除非主属性对码的局部函数依赖
C.消除主属性对码的局部函数依赖D.消除多值依赖
9.任何一个满足2NF但不满足3NF的关系模式都存在()。
A.主属性对候选码的部分依赖B.非主属性对候选码的部分依赖
C.主属性对候选码的传递依赖D.非主属性对候选码的传递依赖
10.下面关于SQLServer的描述错误的是()。
A.一个数据库至少由两个文件组成:
主数据文件和日志文件。
B.每个数据库可以有多个主数据文件。
C.主数据文件默认为primary文件组。
D.日志文件不包括在文件组内。
11.SQL语言是()的语言。
A.过程化B.非过程化C.格式化D.导航式
12.在下列SQL语句中,修改表结构的语句是()。
A.ALTERB.ADDC.UPDATED.INSERT
13.若要在基本表S中增加一列CN,可用()。
A.ADDTABLES(CNCHAR(8))B.ADDTABLESALTER(CNCHAR(8))
C.ALTERTABLESADDCNCHAR(8)D.ALTERTABLES(ADDCNCHAR(8))
14.若要查找名称中第三个字符为“市”的单位信息,则SQL查询条件子句应写成:
WHERE名称()。
A.=‘__市%’B.LIKE‘__市%’C.LIKE‘%%市_’D.LIKE‘%市%’
15.若要查询供应商电话没有输入数据的供应商信息,则SQL查询条件子句应写成:
WHERE供应商电话()。
A.=‘’B.=‘NULL’C.=NULLD.ISNULL
16.若要查询包含超过3种产品的产品分类编号,则正确的SQL语句是()。
A.SELECT产品分类编号FROM产品表GROUPBY产品分类编号WHERECOUNT(*)>3
B.SELECT产品分类编号FROM产品表GROUPBY产品分类编号HAVINGCOUNT(*)>3
C.SELECT产品分类编号FROM产品表ORDERBY产品分类编号WHERECOUNT(*)>3
D.SELECT产品分类编号FROM产品表ORDERBY产品分类编号HAVINGCOUNT(*)>3
17.已知两个关系如表1和表2所示,其中厂商关系的主码为“厂商号”,产品关系的主码是“产品号”,有外键“厂商号”。
表1厂商表2产品
厂商号
厂名
C01
中兴
C02
广发
C03
恒源
产品号
颜色
厂商号
P01
红
C01
P02
黄
C03
若再往产品关系中插入如下元组:
I.(‘P03’,‘红’,‘C02’);II.(‘P01’,‘蓝’,‘C01’);III.(‘P04’,‘白’,‘C04’);IV.(‘P05’,‘黑’,null)
能够插入的元组是()。
A.I,II,IVB.I,IIIC.I,IID.I,IV
18.UPDATE语句最多可以更新数据表中()。
A.一条记录的一个字段值B.多条记录的一个字段值
C.一条记录的多个字段值D.多条记录的多个字段值
19.DELETE语句中若无WHERE子句,则删除数据表中()。
A.第一条记录B.最后一条记录C.当前记录D.所有记录
20.以下关于视图的描述中,错误的是()。
A.视图方便查询只关注的数据B.可以对视图进行任意的查询操作
C.视图提高了数据的安全性D.可以对任何视图进行任意的修改操作
21.下列有关索引的叙述,错误的是()。
A.索引能够加快数据库查询速度B.索引越多越好
C.索引可以强制表中的行具有唯一性D.一个索引可包含多个字段
22.关系数据模型中表和表之间的数据联系是通过下列哪项来实现的?
A.主码B.指针C.外键D.链表
23.数据的完整性是指()。
A.防止数据被非法使用B.数据的存储和使用数据的程序无关
C.数据的正确性、一致性D.减少重复数据
24.表中的主键在所有记录上必须取值唯一,这是()规则。
A.实体完整性B.参照完整性C.域完整性D.用户定义的完整性
25.下列SQLServer数据库对象中,哪一个不具有数据正确性检查的功能?
A.规则B.约束C.默认值D.数据类型
26.SQLServer中,若要在产生新记录时自动在某列使用特定数据,应使用()。
A.规则B.默认值C.函数D.约束
27.下列哪个数据库组件可在添加、删除、更新记录时自动执行?
A.存储过程B.触发器C.函数D.视图
28.在T-SQL中声明变量时,变量应加上哪一个符号?
A.@B.@@C.%D.#
29.下列选项哪一个不是存储过程的优点?
A.加快执行效率B.减少CPU负载C.降低网络通信量D.模块化设计
30.SQLServer中,系统存储过程的名称前缀是()。
A.sysB.vwC.spD.Dbo
31.SQLServer中,下列哪个功能可以根据数据库中的数据生成Excel文件?
A.复制数据库B.生成脚本C.分离数据库D.导出数据
32.为便于管理用户及权限,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为()。
A.账户B.角色C.登录D.用户
33.事务日志文件是用于记录()。
A.程序运行的过程B.对数据库所有的更新操作
C.程序执行的结果D.用户对数据库的访问信息
34.若想对表中字段的重复值只显示一次,则在SQL语句中使用()。
A.DISTINCTB.COUNTC.UNIQUED.UNION
35.为了使索引所基于的列值唯一,在创建索引的语句中应使用()。
A.UNIQUEB.COUNTC.DISTINCTD.UNION
二、填空题
1.数据库应用系统简称数据库系统,由计算机硬件、、、
和数据库用户五部分组成。
2.能唯一标识实体的属性集,称为,每一属性的取值范围称为。
3.实体型之间的联系有、和多对多(m:
n)三种。
4.逻辑模型由、和三要素组成。
5.数据库设计过程中的逻辑结构设计,就是把概念结构设计阶段建立的转换成相应的。
6.设有关系模式:
入库单明细表(入库单编号,产品编号,产品名称,产品数量),该关系模式属于范式。
7.若要删除一个表,应使用的SQL语句是“TABLE表名”,若要删除表中数据,应使用语句“FROM表名”。
8.假设有两个表:
图书(书号,书名,……)、借阅记录(书号,读者号,借出日期,……),则这两个表间应该创建关系,主键表是,外键表是。
9.要找出供应商表中所有电话字段为空白或为空字符串的记录,SQL语句如下:
SELECT*FROM供应商表WHERE电话OR电话
10.Having和Where子句的区别之一在于:
对原始记录进行过滤,而
是对查询结果进行过滤,后者可以用聚合函数。
11.视图是从一个或几个基本表(或视图)中导出的表,数据库中实际存放的是视图的,而不是。
12.若要使用触发器将对视图的修改更新至多个数据表,触发器的类型应是。
13.关系数据库的完整性包括、和3种。
14.现要对SQLServer数据库db1进行查询,当前打开的数据库是master,则在SELECT语句前应加上一条语句以切换数据库。
15.一个SQLServer数据库至少由两个文件组成:
存储数据的文件和记录数据更改的文件。
16.若要在T-SQL执行时显示信息,可使用语句或语句。
17.设要在雇员表中创建约束,使得雇员的“性别”字段只能为“男”或“女”,则约束表达式为。
18.SQLServer中可用系统存储过程实现对存储过程代码的浏览,
实现对数据库对象(如表)的改名。
19.SQLServer中,分离数据库与删除数据库的区别在于(分离/删除)之后可以通过操作恢复。
20.SQLServer数据库还原通常基于备份,以及以之为起点的备份或差异备份。
21.SQLServer有两种安全验证模式,分别是身份验证模式和身份验证模式,前者的安全性更高。
22.若要对SELECT语句读取的一组数据进行逐条处理,可使用实现。
23.SQL语句VIEW用于建立视图,若想更改视图,则使用命令VIEW。
三、判断题
1.一个实体的码可能不只一个。
2.实体的码一定只包含一个属性。
3.关系模型中,实体用关系来表示,实体间的联系用关系图来表示。
4.表中主码的值一定是唯一的,也不能为空。
5.不包含在主码中的属性称为非主属性。
6.第一范式的要求是关系的属性不可再分,满足第一范式即实现了规范化。
7.多对多关系在关系数据库中无法直接表示,需要在两个表间创建第三个数据表作为中介。
8.要在SQL查询语句中使用聚合函数,一定要使用GroupBy子句进行分组。
9.分组查询语句中,Select子句中出现的列,只能是GroupBy子句中的列或包含在聚合函数中。
10.T-SQL语句中的字符型常量应在前后加上单引号,日期应加上#号。
11.使用INSERT语句在数据表中添加记录时,不需要指定自动编号字段的值。
12.索引只能基于一个字段创建。
13.SQLServer中,约束、规则和默认值都是单独存在的数据库对象,创建后可应用于多个字段。
14.系统存储过程由数据库系统本身建立,用户数据库中不能使用。
15.SQLServer中,存储过程的参数后若无关键字OUTPUT,就一定是输入参数。
16.用户用登录名与密码登录到SQLServer服务器后,可以访问服务器上所有数据库。
17.要操作SQLServer数据库对象,必须先创建登录名、再创建数据库用户名、然后设置该用户的相应操作权限。
18.SQLServer中,差异备份只备份数据库的部分内容,备份起点是上次差异备份的结束位置。
19.用户自定义数据类型是在系统数据类型的基础上建立的。
20.用户自定义数据类型建立之后,可随时进行修改,以符合应用需要。
四、设计数据库
请根据以下需求设计数据库,包括概念模型(E-R图)和逻辑模型(关系模型),要求在主码下加下划线。
1.图书管理系统数据库,涉及如下数据:
对每个借阅者都保持读者记录,包括:
读者号、姓名、地址、性别;
每本书有书号、书名、作者、出版社;
还有借书记录:
某读者在某天借出了某本书,又在哪天归还。
2.商店销售系统数据库,涉及如下数据:
每个商店有商店号、商店名、地址;
每种商品有商品号、商品名、单价;
还有销售记录:
某商店在某天销售了多少数量的某种商品。
3.教学管理系统数据库,涉及如下数据:
每个学生都有学号、姓名、性别、出生日期;
每门课程有课程号、课程名、学分;
还有学习记录:
某学生学习了某课程,考试后得了多少分。
五、创建数据表
1.根据第四大题第1题得到的各关系模式创建数据表,请写出SQL语句,要求定义主键和外键,并定义姓名和书名不能为空,性别只能为“男”或“女”,出版社默认值为“出版社”。
2.根据第四大题第2题得到的各关系模式创建数据表,请写出SQL语句,要求定义主键和外键,并定义商店名和商品名不能为空,单价不能为负数。
3.根据第四大题第3题得到的各关系模式创建数据表,请写出SQL语句,要求定义主键和外键,并定义学生姓名不能为空,课程名取唯一值,学分默认为3分。
六、综合应用题
设数据库中包括以下表:
用户表(用户编号,用户名,密码,角色)
出库单表(出库单编号,仓库编号,出库日期,出库单状态,客户名)
出库单明细表(出库单编号,产品编号,产品数量,摘要)
产品表(产品编号,产品名称,计量单位,产品数量,产品分类编号,所在仓库)
产品分类表(产品分类编号,产品分类名称,说明)
客户表(客户名称,地址,电话)
资金往来表(编号,单位名称,业务名称,银行名称,日期,金额)
1.设计SQL语句完成下列操作:
(1)查询用户编号为“2”的用户名,并修改查询结果中的列标题为“用户名称”。
(2)查询出“出库日期”在“2009-1-1”到“2009-7-30”所有出库单的出库单编号、出库日期和出库单状态。
(3)查询所有产品的产品编号、产品名称、产品分类编号、产品数量,要求按“产品分类编号”递增排序、“产品数量”递减排序。
(4)查询出“产品数量”排前3名产品的产品编号、产品名称、产品数量。
(5)查询出所有用户的信息,并统计用户的人数。
(6)查询出每类产品的平均数量大于300的产品分类编号和产品的平均数量。
(7)用子查询实现查询“原材料”的产品名称、计量单位、产品数量。
(8)用多表查询实现查询出库单状态为“已出库”的出库产品编号、产品数量和客户名。
(9)给“出库单明细表”添加一条记录(出库单编号:
20101201,产品编号:
0101,产品数量:
10)。
(10)根据上题添加的记录修改“产品表”的产品数量。
2.
(1)设用户在系统登录界面输入用户名和密码,请创建存储过程“login”,根据输入实现用户登录判断(已知正确用户名与密码均为admin),并返回判断结果。
(2)设输入用户名和密码为“system”、“admin”,执行该存储过程,并显示结果。
3.
(1)创建存储过程“pro”,实现根据产品分类编号查询返回该分类的产品总数量。
(2)以“01”为参数执行该存储过程,并显示结果。
4.创建“trg_客户”触发器,要求当填写出库单时,如果客户名在客户表中不存在,则将该客户名记录到客户表中。
5.创建“trg_删除出库单”触发器,要求当删除出库单后,删除相应出库单明细表中的记录。
6.设计自定义数据类型“单据状态”,可用于“出库单表”的“出库单状态”列,保证其取值为“未审核、未审批、已审批”这三种状态之一。
7.
(1)创建用户自定义函数“当日余额”,要求根据“资金往来表”的数据信息,接受两个参数:
日期、银行名称,返回到指定日期为止,指定银行账户的余额。
(2)调用“当日余额”,显示到2012年10月20日为止的“工行”帐户余额。
参考答案
一、选择题
1.A2.A3.C4.B5.C6.C7.A8.B9.D10.B
11.B12.A13.C14.B15.D16.B17.D18.D19.D20.D
21.B22.C23.C24.A25.C26.B27.B28.A29.B30.C
31.D32.B33.B34.A35.A
二、填空题
1.数据库管理系统(DBMS)数据库(DB)应用程序
2.码域
3.一对一(1:
1)一对多(1:
n)
4.数据结构数据操作数据完整性约束
5.E-R图逻辑模型
6.第一/I
7.DROPDELETE
8.一对多图书借阅记录
9.ISNULL=‘’
10.WhereHaving
11.定义(查询语句)真实数据
12.InsteadOf
13.实体完整性参照完整性域完整性
14.USEdb1
15.数据日志
16.PrintSelect
17.性别IN(‘男’,’女’)
18.sp_helptextsp_rename
19.分离附加
20.数据库完整备份事务日志备份
21.WindowsSQLServer混合
22.游标
23.CREATEALTER
三、判断题
1.√2.×3.×4.√5.×6.×7.√8.×9.√10.×
11.√12.×13.×14.×15.√16.×17.√18.×19.√20.×
四、设计数据库
1.E-R图为:
关系模型为:
读者(读者号,姓名,地址,性别)
图书(书号,书名,作者,出版社)
借阅(读者号,书号,借出日期,归还日期)
2.E-R图为:
关系模型为:
商店(商店号,商店名,地址)
商品(商品号,商品名,单价)
销售(商店号,商品号,日期,数量)
3.E-R图为:
关系模型为:
学生(学号,姓名,性别,出生日期)
课程(课程号,课程名,学分)
学习(学号,课程号,成绩)
五、创建数据表
1.CREATETABLE读者
(读者号char(10)primarykey,
姓名varchar(50)notnull,
性别char
(2)check(性别in(‘男’,’女’)),
地址varchar(50))
CREATETABLE图书
(书号char(13)primarykey,
书名varchar(40)notnull,
作者varchar(20),
出版社varchar(20)default‘出版社’)
CREATETABLE借阅
(读者号char(10),
书号char(13),
借出日期datetime,
归还日期datetime,
primarykey(读者号,书号),
foreignkey(读者编号)references读者信息(读者编号),
foreignkey(书号)references图书(书号))
2、3略
六、综合应用题
1.
(1)
select用户名as用户名称
from用户表
where用户编号='2'
(2)
select出库单编号,出库日期,出库单状态
from出库单表
where出库日期between'2009-1-1'and'2009-7-30'
或:
select出库单编号,出库日期,出库单状态
from出库单表
where出库日期>='2009-1-1'and出库日期<='2009-7-30'
(3)
select产品编号,产品名称,产品分类编号,产品数量
from产品表
orderby产品分类编号,产品数量desc
(4)
selecttop(3)产品编号,产品名称,产品数量
from产品表
orderby产品数量desc
(5)
select*from用户表
computecount(用户编号)
(6)
select产品分类编号,avg(产品数量)平均数量
from产品表
groupby产品分类编号
havingavg(产品数量)>300
(7)
select产品名称,计量单位,产品数量
from产品表
where产品分类编号=
(select产品分类编号from产品分类表
where产品分类名称='原材料')
(8)
select产品编号,产品数量,客户名
from出库单表,出库单明细表
where出库单表.出库单编号=出库单明细表.出库单编号and出库状态='已出库'
(9)
insertinto出库单明细表(出库单编号,产品编号,产品数量)
values('20101201','0101',10)
(10)
update产品表
set产品表.产品数量=产品表.产品数量-出库单明细表.产品数量
from出库单明细表
where出库单编号='20101201'and出库单明细表.产品编号='0101'
and产品表.产品编号=出库单明细表.产品编号
2.
(1)CREATEPROCEDURElogin
@usrvarchar(50),@pwdvarchar(500),@reschar(10)output
AS
if@usr='admin'
if@pwd='admin'
set@res='登录成功'
elseset@res='密码错'
elseset@res='用户名错'
(2)declare@reschar(10)
execlogin'system','admin',@resoutput
select@res
3.
(1)CREATEPROCEDUREpro
(@classNovarchar(50),@numberintoutput)
AS
SELECT@number=SUM(产品数量)FROM产品表
WHERE产品分类编号=@classNo
(2)declare@numint
execpro'01',@numoutput
select@num
4.CREATETRIGGERtrg_客户
ON出库单表
FORINSERT,UPDATE
AS
declare@客户varchar(50)
select@客户=客户名frominserted
if(@客户isnotnull)or(@客户<>'')
begin
ifnotexists(select*from客户表where客户名称=@客户)
begin
in