数据库案.docx
《数据库案.docx》由会员分享,可在线阅读,更多相关《数据库案.docx(19页珍藏版)》请在冰豆网上搜索。
数据库案
(一)
5、相关数据按照一定的联系方式组织排列,并构成一定的结构,这种结构为()。
A、数据模型
6、关系模型中实现实体间M:
N联系是通过增加一个()实现的。
D、关系和属性
8、数据库系统达到了数据独立性是因为采用了()。
D、三级模式结构
10、要保证数据库的逻辑数据独立性,需要修改的是()。
A、模式与外模式之间的映象
12、在数据库技术中,实体——联系模型是一种()。
A、概念数据模型
15、在数据库三级模式结构中,描述数据库中全体数据的逻辑结构和特征的是()。
C、模式
17、数据库系统中,用()描述全部数据的整体逻辑结构。
D、概念模式
20、在关系数据库系统中,当关系的型改变时,用户程序也可以不变,这是()。
B、数据的逻辑独立性
22、物理数据独立性是指()。
C、内模式改变,概念模式不变
(二)
1、关系数据库中的关系必须满足每一属性都是()。
B、不可分解的
2、下列()运算不是关系代数的运算。
D、映射
5、从关系模型中指定若干个属性组成新的关系的运算称为()。
B、投影
11、关系代数语言是用对()的集合运算来表达查询要求的方式。
D、关系
12、关系演算语言是用()来对关系表达查询要求的方式。
B、谓词
(三)
1、设计性能较优的关系模式称为规范化,规范化主要的理论依据是()。
A、关系规范化理论
2根据规范化理论进行关系数据库的逻辑设计,关系数据库中的关系必须满足:
每一属性都是()。
B、不可分解的
3、关系数据库规范化是为解决关系数据库中()问题面引入的。
D、插入异常、删除异常和数据冗余
11、消除了部分函数依赖的1NF的关系模式必定是()。
B、2NF
20、关系模型中,3NF是指()。
D、满足2NF且不存在传递依赖现象
21、任何一个满足2NF但不满足3NF的关系模型都不存在()。
B、非主属性对码的部分依赖
(四)
1、SQLserver2000是一种()数据管理系统。
B、关系型
22、数据库的逻辑文件名命名必须遵循()命名规则。
C、标识符
25、在数据库设计过程中,扩展名为.mdf的文件默认是()。
A、主数据文件
27、在SQLServer中创建数据库,必须指明()。
D、数据库名
28、删除数据库的命令是()。
C、dropdatabase
32、SQLServer数据库的物理存储文件主要包括()3类文件。
A、主数据文件、次数据文件、事务日志文件
33、当数据库损坏时,数据库管理员可通过()恢复数据库。
A、事务日志文件
(五)
1、用来存储固定长度的非Unicode字符数据,且最大长度不超过8000个字符的是()。
C、char
4、在哪种索引中,表中各行的物理顺序与键值的逻辑索引顺序相同?
()
A、聚集索引
6、关于SQLServer的索引,下列说明不正确的是()。
D、聚集索引和非聚集索引均会影响表中记录的实际存放时间
7、用altertable不可以修改表的()内容。
A、表名
11、已知关系,student(sno,sname,grade),以下关于命令createclusterindexsonstudent(grade)的描述中,正确的是()。
B、按grade升序创建了一个聚集索引
12、使用下列哪种语句可以修改数据表?
()
D、altertable
17、如果防止插入空值,应该用()来进行约束。
B、notnull约束
19、下面不适合创建索引的是()。
A、列的取值范围很少
21、下面关于索引的描述不正确的是()。
B、索引是在元组上建立的一种数据库对象
22、以下应尽量创建索引的是()。
A、在where子句中出现频率较高的列
(六)
3、当使用模式查找like‘_a%’时,则可能的结果是()。
B、bai
4、select语句中“where成绩between80and90”表示成绩在80-90之间,且()。
A、包括80岁和90岁
5、以下能够进行模糊查询的关键字为()。
B、like
7、使用orderby子句对输出数据操作时,以下说法正确的是()。
B、当不指定排序方式,系统默认升序
13、groupby子句中的having子句的作用是用来限定()。
A、查询结果的分组条件
14、orderby子句用来限定()。
D、结果集的排序方式
18、在selete语句中,如果查询条件出现聚集函数,则定义查询条件的关键字是()。
C、having
21、用()语句修改表的一行或多行数据。
A、updata
(七)
3、局部变量名前必须用()符号开头。
B、@
7、下列可以作为局部变量使用的是()。
C、@myvar
8、下列不属于SQLServer全局变量的是()。
D、@records
9、利用()全局变量可以返回受上一条SQL语句影响的记录数。
B、@@rowcount
16、用于求系统日期的函数是()。
B、getdate()
18、()函数用于判断两个日期相隔的时间差。
B、datediff
(八)
1、()不显示update、insert或delete操作对数据的影响。
A、静态游标
5、读取游标的语句为()。
C、fetch
6、全局变量@@cursor_rows的功能是()
B、返回当前游标的当前行
14、删除一个视图会影响到()。
A、基于该视图的视图
(九)
3、下列选项不属于存储过程的优点的是()。
C、可以作为安全性机制
7、下列条件中不能激活触发器的是()。
B、查询数据
9、关于触发器操作的语句,下面不正确的是()。
C、inserttrigger
10、()表用于存储delete和update语句所影响的行的副本。
A、deleted
(十)
1、当数据库损坏时,数据库管理员可通过()方式恢复数据库。
A、事务日志文件
3、下面关于备份数据库的说法中,错误的是()。
D、备份是数据库安全性的有效措施
8、下面关于完全备份的说法中,错误的是()。
C、因为完全备份是备份所有的数据,所以每次备份的工作量很大
(十一)
1、下面()不是用户对数据库进行操作的基本条件。
C、必须将windows系统账户加人SQLServer中
9、在固定服务器角色中,()角色的权限最大。
A、sysadmin
11、SQLServer2000采用的身份验证模式有()。
D、windows身份验证模式和混合模式
(十二)
13、保持事务的原子性是数据库管理系统中()部件的责任。
A、事务管理
14、DBMS通过加锁机制允许多用户并发访问数据库,这属于DBMS提供()。
C、数据库运行管理和控制功能
1、数据库管理技术经历了人工管理、文件系统管理、(数据库系统)3个阶段。
3、根据模型的应用目的,可将数据模型分为概念模型、(逻辑模型)、物理模型。
4、在三层数据模型中,对现实世界进行第一层抽象的模型,称为(概念模型)。
5、在三级模式结构中,最接近于物理存储设备一级的结构,成为(物理模式)。
6、实体之间的联系可以有一对一,一对多,和(多对多)三种形式。
8、数据库系统在三级模式之间提供了(外模式/模式映像)和模式/内模式映像等两层映像。
10、数据模型由数据结构、(数据操纵)和完整性约束三要素组成。
1、在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则是保持原有的依赖关系和(无损连接)。
5、规范化过程主要为克服数据库逻辑结构中的插入异常、删除异常以及(冗余度大)的缺陷。
10、如果关系模式R满足(2NF),而且它的任何一个非主属性都不传递完全函数依赖候选键,则R满足(3NF)。
11、在关系数据库的规范化所有理论中,起核心作用的是(数据依赖)。
12、在关系R中,若存在“学号——>系号,系号——>系主任”,则存在(学号)函数决定(系主任)。
13、若关系R属于3NF,且只有一个候选码,则表明它同时也达到了(BCNF)范式,该关系中所有属性的(决定因素)都是候选码。
14、数据库一般使用(3NF)以上的关系。
1、SQLServer默认的系统管理员用户名是(Sa).
16、SQLServer数据库分为系统数据库和(用户数据库)。
17、事务日志文件的扩展名默认为(*.ldf)
1、SQLServer提供了主键约束和外键约束共同维护(参照完整性)。
2、SQLServer提供了主键约束和唯一约束共同维护实体完整性。
3、在一个表上,最多可以定义
(一)个聚集索引。
5、为了使索引键的值在基本表中唯一,在创建索引的语句中应使用保留字(unique)。
1、用(updata)语句修改表的一行或多行数据。
2、Delete语句用(where)子句指明表中要删除的行。
4、联合查询使用(union)关键字。
5、连接查询包括内连接、外连接和(交叉连接)。
6、查询时,使用(into)子句可以创建一个新表,并将selete查询结果集填充到该表中。
7、selete语句实现分组的子句是(groupby)。
9、selete语句实现排序的子句是(orderby)。
10、selete语句中的having子句一般跟在(groupby)子句后。
1、SQLServer中支持两种形式的变量:
局部变量和(全局变量)。
3、SQLServer局部变量赋值的语句是set语句和(select语句)。
12、函数left(‘abcdef’,2)的结果是(‘ab’)。
14、SQLServer2000采用的结构化查询语句称为(T-SQL)。
19、日期数据类型为datetime和(smalldatetime)
20、货币数据类型为(smallmoney)和money。
2、SQLServer支持4种API服务器游标类型,即静态游标、动态游标、(只进游标)和键盘驱动游标。
3、打开游标的语句是(open)。
5、读取游标数据的语句是(fetch)。
6、每次访问视图时,视图都是从(基表)提取所包含的行和列。
2、存储过程分为5种,其中(系统)存储过程以sp_开头并存储在master数据库中。
6、触发器是在(表或视图)上定义的特殊存储过程。
7、after(for)和(insteadof)关键字可以用来规定触发SQL语句是在目标表的数据修改之前执行还是之后执行。
9、触发器执行时,会产生两个特殊的逻辑表,分别是inserted表和(delete表)。
5、SQLServer2000支持四种基本类型的备份:
完全备份、差异备份、(事务日志备份)和文件及文件组备份。
6、数据库的恢复模式包括简单模式、完整模式和(大容量日志模式)三种类型
1、完整性检查和控制的防范对象是合法用户,而安全性控制的防范对象是(db_owner),防止他们对数据库数据的存取。
06
7、与登录账户sa相对应的数据库用户是(dbo)
1、(事务)是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。
2、事务的(原子性)是指事务中包括的所有操作要么都做,要么都不做。
3、事务的(一致性)是指事务必须是使数据库从一个一致性状态变到另一个一致性状态。
4、事务的(隔离性)是指一个事务内部的操作及使用的数据对并发的其他事务是隔离的。
5、事务的(持续性)是指事务一旦提交,对数据库的改变是永久的。
6、解决并发操作带来的数据不一致性问题普遍采用(封锁)。
7、数据库中的封锁机制是(并发控制)的主要方法。
1、现有关系模式:
教师授课(教师号,姓名,职称,课程号,课程名,学分,教科书名)
其函数依赖集为:
{教师号—>姓名,教师号—>职称,课程号—>课程名,课程号—>学分,课程号—>教科书名}
(1)指出这个关系模式的主码。
(2)这个关系模式是第几范式?
为什么?
(3)将其分解为满足3NF要求的关系模式(分解后的关系模式名自定)。
解:
(1)主码:
(教师号、课程号)
(2)第一范式,因为存在部分函数依赖
(3)分解方法为:
教师表(教师号,姓名,职称)
课程表(课程号,课程名,学分,教科书名)
教师授课表(教师号,课程号)
6、已知学生关系模式S(Sno,Sname,SD,Sdname,Course,Grade),其中,Sno为学号、Sname为姓名、SD为系名、Sdname为系主任名、Course为课程、Grade为成绩。
(1)写出关系模式S的基本函数依赖和主码。
(2)原关系模式S为第几范式?
为什么?
分解成高一级范式,并说明为什么。
(3)将关系模式分解成3NF,并说明为什么。
(1)答:
关系模式S的基本函数依赖如下:
Sno→Sname,SD→Sdname,Sno→SD,(Sno,Course)→Grade
关系模式S的码为:
(Sno,Course)。
(2)答:
原关系模式S是属于1NF的,码为(Sno,Course),非主属性中的成绩完全依赖于码,而其它非主属性对码的函数依赖为部分函数依赖,所以不属于2NF。
消除非主属性对码的函数依赖为部分函数依赖,将关系模式分解成2NF如下:
S1(Sno,Sname,SD,Sdname)、S2(Sno,Course,Grade)
(3)答:
将上述关系模式分解成3NF如下:
关系模式S1中存在Sno→SD,SD→Sdname,即非主属性Sdname传递依赖于Sno,所以S1不是3NF。
进一步分解如下:
S11(Sno,Sname,SD)S12(SD,Sdname)
分解后的关系模式S11、S12满足3NF。
对关系模式S2不存在非主属性对码的传递依赖,故属于3NF。
所以,原模式S(Sno,Sname,SD,Sdname,Course,Grade)按如下分解满足3NF。
S11(Sno,Sname,SD)S12(SD,Sdname)
S2(Sno,Course,Grade)
4、在D盘stu目录下创建一个名为lx的数据库,其中:
(1)主文件逻辑名为lx_data,物理名为lx_data.mdf,初始大小为5MB,最大大小为10MB,增长方式为1MB。
(2)次文件逻辑名为sx_data,物理名为sx_data.ndf,存放在文件组dx中。
(3)日志文件逻辑名为lx_log,物理名为lx_log.ldf,初始大小为2MB,最大大小为不限制,增长方式为5%
(1)
createdatabaselx
on
(name=lx_data,filename='d:
\stu\lx_data.mdf',size=5,maxsize=10,filegrowth=1)
(2)
filegroupdx
(name=sx_data,filename='d:
\stu\sx_data.ndf')
(3)
logon
(name=lx_log,filename='d:
\stu\lx_log.ldf',size=2,maxsize=unlimited,filegrowth=5%)
1.library数据库中包含”图书”表和“读者”表,两表的结构分别定义如表利用SSMS创建两表
(1)
uselibrary
go
createtable图书(
图书编号char(6)notnullprimarykey,
书名varchar(20)notnull,
类别char(12),
作者varchar(20),
出版社varchar(20),
出版日期datetime,
定价money)
(2)
uselibrary
go
createtable读者(
读者编号char(4)notnull,
姓名char(6)notnull,
性别char
(2),
单位varchar(20),
电话varchar(13,
读者类型intnull,
已借数量intnull)
2.在library数据库中增加“读者类型”表和“借阅”两表,两表结构分别定义如表5-18和表5-19所示,利用T-SQL语句完成以下功能。
(1)使用T-SQ语句在library数据库中创建“读者类型”表
uselibrary
go
createtable读者类型(
类型编号intnotnull,
类型名称char(8)notnull,
限借数量intnotnull,
借阅期限int)
(2)使用T-SQ语句在library数据库中创建“借阅”表
uselibrary
go
createtable借阅(
读者编号char(4)notnull,
图书编号char(6)notnullforeignkeyreferences图书(图书编号),
借书日期datetimenotnull,
还书日期datetime)
(3)使用T-SQ语句为“读者”表的“读者编号”添加主键
uselibrary
go
altertable读者
addconstraintpk_读者_读者编号primarykey(读者编号)
go
(4)使用T-SQ语句为“读者”表的“性别”添加check约束,使之取值为男或女
uselibrary
go
altertable读者
addconstraintck_读者_性别check(性别='男'or性别='女')
go
1.查询读者表的所有信息select*from读者
2.查询图书表中书类种类selectdistinct类别from图书
3.查询读者标号为1001的读者select*from借阅where读者编号=’1001’
4.查询图书表中“清华大学出版社”出版的图书书名作者
Select书名,作者from图书where出版社=’清华大学出版社’
5查询书中包含“程序设计”的图书信息
Select*from图书where书名like’%程序设计%’
6.查询图书表中“清华大学出版社”出版的图书信息,结果升序排列
Select*from图书where出版社=’清华大学出版社’oderby单价
7.查询图书定价最高的前三种
Selecttop3图书编号,定价from图书oderby单价desc
8.查询借阅了”C语言程序设计“图书,借阅日期最近的3名读的编号和日期
Selecttop3读者编号,借书日期from借阅,图书where借阅.图书编号=图书.图书编号and书名=’C程序设计’oderby借书日期desc
9查询图书馆的藏书量
Selectcount(*)as藏书数量from图书
10查询图书馆图书的总价值
Selectsum(定价)from图书
11.查询各出版社的藏书量
select出版社,count(*)from图书groupby出版社
12.查询2011-10-1和2012-10-1之间各读者的借阅量
Select读者编号,count(*)from借阅where借书日期between‘2011-10-1’and‘2012-10-1’groupby读者编号
13查询2011-10-1和2012-10-1之间作者为“谭浩强”的图书的借阅情况
select*from借阅where图书编号=(select图书编号from图书where作者=‘谭浩强’)and借书日期between‘2011-10-1’and‘2012-10-1’
14.使用统计函数计算读者表中的借阅量最多,最少和平均借阅数
Selectmax(已借数量),min(已借数量),avg(已借数量)from读者
15.使用统计函数计算读者表中每个单位的借阅量最多,最少和平均借阅数
Select单位,max(已借数量),min(已借数量),avg(已借数量)from读者groupby单位
16.查询借阅图数量超过2的读者编号、借阅数量
Select读者编号,count(*)as借阅数量
from借阅groupby读者编号havingcount(*)>=2
17.查询馆藏图书最多的作者姓名及馆藏数量,并储存到新表author中
selectcount(*)as馆藏数量,作者intoauthorfrom图书
groupby作者havingcount(作者)>=all(
selectcount(作者)from图书groupby作者)
18.为“读者类型”表的”借阅期限“列之后增加一个说明,说明列值为:
日
Select*,‘日’from读者类型
19.查询所有的男教师和男生,并表明身份
usejxgl
select姓名,性别,'学生'as身份from学生where性别='男'
union
select姓名,性别,'教师'as身份from教师where性别='男'
20.利用子查询,查询借阅图书的读者信息
Select*from读者whereexists(select*from借阅where读者编号=读者.读者编号)
21利用子查询,查询没有借阅图书的读者信息
select*from读者wherenotexists(select*from借阅where读者编号=读者.读者编号)
1、创建一个视图inform,引用“学生”表中女生的学号、姓名、性别、总分。
解:
uselibrary
go
createviewinform
as
Select学号,姓名,性别,总分
from学生
where性别=‘女’
go
3、在library数据库中,编写一个存储过程book_lend,要求实现以下功能:
根据图书编号输出该图书的借阅人数。
uselibrary
go
createprocbook_lend
@tsbhchar(6),@jyrsintoutput
as
select@jyrs=count(读者编号)
from借阅
where图书编号=@tsbh
go
declare@tsbhchar(6),@jyrsint
set@tsbh='TP0001'
execbook_lend@tsbh,@jyrsoutput
print@jyrs
4、在“借阅”表上创建一个insteadof触发器ins_借阅,检查插入的读者编号是否存在于“读者”表中,否则禁止插入该记录,并给予提示信息。
uselibrary
go
createtriggerins_借阅on借阅
insteadofinsert
as
ifnotexists(select*from读者where读者编号=(select读者编号frominserted))
raiserror('读者编号不存储在读者表中,不能插入该记录',10,1)