《数据库原理及应用》复习题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库原理及应用复习题
填空题
1.事务的ACID特性指的是:原子性、一致性、隔离性和持久性。
2.实体-了解模型的基本要素是:实体、了解、属性。
3.目前最常用的数据模型有:层次、网状、关系。
4.数据管理技术的发展主要经历了以下三个阶段:人工管理、文件系统、数据库系统。
5.关系的三类完整性约束:实体完整性、参照完整性、用户定义完整性。
6.关系模型由三部分组成:数据结构、操作与完整性约束、存储结构。
7.各分E-R图之间的冲突主要有3类:属性冲突、命名冲突、结构冲突。
8.模式分解等价的标准有:分解具有无损连接性、分解要保持函数依赖、分解既要保持函数
依赖,又要具有无损连接性。
9.数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。
10.DBMS
单项选择题
1.现在采用的概念模型主要是(A)。
A.实体-了解模型
B.结构模型
C.数据模型
D.抽象模型
2.数据字典通常包括(D)
A.数据项和数据结构B.数据流和数据存储
C.处理过程D.ABC均正确。
3.完整性约束条件作用的对象层次有:(D)
A.列级 B.元组级 C.关系层 D.ABC均正确
4.SQL语言中,条件“年龄BETWEEN 20 AND 30”表示年龄在20至30之间,且(A)。
A.包括20岁和30岁
B. 不包括20岁和30岁
C.包括20岁但不包括30岁
D. 包括30岁但不包括20岁
5.SQL语言具有(B)的功能
A.关系规范化、数据操纵、数据控制台
B.数据定义、数据操纵、数据控制
C.数据定义、关系规范化、数据控制
D.数据定义、关系规范化、数据操纵
6.语句SELET COUNT(*) FROM human返回(A)行。
A.1
B.2
C.3
D.4
7.在SQL语言中,子查询是(D)。
A.返回单表中数据子集的查询语句
B.选取多表中字段子集的查询语句
C.选取单表中字段子集的查询语句
D.嵌入到另一个查询语句之中的查询语句
8.假设数据表“test1” 中有 10 条数据行,可获得最前面两条数据行的命令为(B)
A.SELECT 2 * FROM test1
B.SELECT TOP 2 * FROM test1
C.SELECT PERCENT 2 * FROM test
D.SELECT PERCENT 20 * FROM test1
9.并发操作不会带来的问题:(B)
A.丢失更新B.可重复读
C.未提交读D.幻象读
10.有两种错误可能造成事务执行失败:(C)
A.逻辑错误和数据错误 B.系统错误和数据错误
C.逻辑错误和系统错误 D.均不正确
11.是用(B)来表示数据之间的了解。
A. 图结构
B.二维表
C. 树结构
D.链表
12.关系操作的特点是:(B)
A.单一数据操作方式B.集合操作方式
C.数组操作方式D.队列操作方式
13.设关系R和S的元组个数分别为100和300,关系T是R与S的笛卡儿积,则T的元组个
数是:(C)
A.400 B.10000 C.30000 D.90000
14.SQL语言集数据查询、数据操作、数据定义、和数据控制功能于一体,语句INSERT、DELETE、
UPDATE实现下列哪类功能:(B)
A.数据查询 B.数据操纵
C.数据定义 D.数据控制
15.在SQL语言的SELECT语句中,能实现投影操作的是:(A)
A.SELECT B.FROM
C.WHERE D.GROUP BY
16.在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法
是创建:(C)
A.另一个表B.游标
C.视图D.索引
17.不属于实体完整性的是:(A)
A.check约束B.唯一性约束
C.主键约束D.非空约束
18.用于数据库恢复的重要文件是(A)
A、数据库文件
B、索引文件
C、日志文件
D、数据文件
19.SQL Server 2000中事务的类型有(A)
A、系统、用户定义的事务
B、分布式事务
C、数据库事务
D、其他事务
20.下面字符串能与通配符表达式[abc]%a进行匹配的是:(C)。
A、bcdef
B、a_bcd
C、abc_a
D、a%a
21.SQL Server2000中取当前时间的函数是(B)
A.DATA()
B.GETDATE()
C.NOW()
D.CURRENTTIME()
22.数据恢复的几种方式中损失最小的是:(A)
A.崩溃恢复B.版本恢复
C.前滚恢复D.均不正确
23.设置参照完整性是为了保证数据表之间的数据保持一致,通过在两个数据表的(D)之间
建立外键约束来实现。
A.主键和外键
B.唯一键和外键
C.主键和唯一键
D.A和B均正确
24.关系可以分为三种类型,不属于这三种类型的是:(D)
A.基本关系B.查询表
C.视图表D.存储过程
25.就查找速度而言,以下哪种索引最佳(A)
A.聚集索引
B.非聚集索引
C.唯一索引
D.以上均不正确
26.函数SUBSTRING(CONVERT(CHAR(33),GETDATE(),112),3,2)执行的结果是(A)
A.12(2012年)
B.20
C.09
D.00
27.SQL Server 2000中的数据库文件组分为(A)
A.主文件组和用户定义文件组
B.主文件组和辅文件组
C.主文件组和事务文件组
D.以上均不正确
28.SQL Server 2000中,根据文件的功能划分,可分为(D)两大类。
A.数据库文件和脚本文件
B.事务日志文件和mdf文件
C.mdf文件和ndf文件
D.数据文件和事务日志文件
29.下面仅存在于服务器端的组件是:(A)
A、服务管理器
B、企业管理器
C、查询分析器
D、导入导出组件
30.数据库中只存放视图的(B)。
A、操作
B、定义
C、对应的数据
D、限制
31.Select 语句中用来连接字符串的符号是(A)。
A、“+”
B、“&”
C、“||”
D、“|”
32.两个关系在没有公共属性时,其自然连接操作表现为(B)
A.结果为空关系 B.笛卡儿积操作
C.等值联接操作 D.无意义的操作
33.数据流程图(DFD)是用于描述结构化方法中(C)阶段的工具。
A. 可行性分析
B. 程序设计
C. 需求分析
D. 详细设计
34.关系模型中,表示实体间N:M了解是通过增加一个(A)。
A. 关系实现
B. 属性实现
C. 关系或一个属性实现
D.关系和一个属性实现
35.为提高效率,关系数据库系统必须进行(B)处理。
A.定义视图
B.查询优化
C.数据恢复
D.数据规范化到最高范式
36.在基本的关系中,下列说法正确的是(C)
A.行列顺序有关B.属性名允许重名
C.任意两个元组不允许重复D.列是非同质的
37.一个数据库系统必须能够表示实体和关系,了解可以与(C)实体有关。
A. 0个
B. 1个
C. 1个或1个以上
D. 2个或2个以上
38.若数据库中只包含成功事务提交的结果,则此数据库就称为处于(B)状态。
A. 安全
B. 一致
C. 完整
D. 正确
判断题
1.列是同质的,即每一列中的分量来自同一域,是同一类型的数据。
(T)
2.文件系统阶段的数据处理的方式仅有批处理方式。
(F)
3.数据库的三级模式结构有利于数据的安全保密。
(T)
4.一个1:n了解可以转换为一个独立的关系模式,也可以与1端对应的关系模式合并。
(T)
5.BETWEEN …AND 语句是定义的是一个开区间(F)
6.利用一级封锁协议可以防止丢失更新问题的发生。
(T)
7.事务执行过程中,若有某个修改操作失败,则事务仍可以成功提交。
(F)
8.从三个级别来对sql server的安全性进行控制来看,分别是数据库服务器、数据库和数据
库对象。
(T)
9.大多数数据库对象的命名采用模式名加对象名的命名规则,即对象名.模式名。
(F)
10.SQL SERVER不能通过windows用户登录(F)
11.串行调度的结果不一定总是正确的。
(F)
12.相对表而言,视图没有自己的数据。
(T)
13.具有IDENTITY属性的字段需要人工手动赋值。
(F)
14.执行系统存储过程时,在其名称前可以省略EXEC。
(F)
15.SQL Server 2000中使用差异备份和事务日志备份即可完全恢复数据库。
(T)
16.DBMS的主要职责就是有效地实现数据库三级之间的转换,即把用户(或应用程序)对数据
库的一次访问,从用户级带到概念级,再导向物理级。
(T)
17.ODBC可以无条件访问各种异构数据库。
(F)
18.默认约束的默认值可以是常量。
(T)
19.一个1:l了解可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并(F)
20.二级封锁协议能防止丢失更新、读未提交数据和不可重复读。
(T)
21.UNIQUE约束的列不允许为空(T)
22.实体完整性又称为行的完整性,要求表中有一个主键,其值不能为空且能唯一地标识对应
的记录。
(T)
23.现实世界中的实体具有可区分性,不具有唯一性。
(T)
24.可在同一台计算机上安装多个SQL Server实例。
(T)
25.SQL Server 2000中数据库一旦建立只能增大,不能缩小。
(F)
26.SQL语言不是一种标准而是一种商业产品。
(F)
27.聚集索引中数据的物理排列顺序和逻辑顺序不一致。
(F)
28.变量可以通过SELECT语句赋值(T)
29.两个查询语句除了连接方式不同,其他元素都相同,则通过内连接的获得的查询记录数大
于或等于通过外连接获得的查询记录数。
(F)
名词解释题
1.关系模式:
关系的描述称为关系模式, 可以用R(U, D, dom, F)来表示, 其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。
2.函数依赖:
关系中一个或一组属性的值可以决定其它属性的值。
3.模式/内模式映像:
数据库中不仅只有一个模式,而且也只有一个内模式,所以模式/内模式映像是唯一的,由它定义数据库全局逻辑结构与存储结构之间的对应关系。
模式/内模式映像定义通常包含在模式描述中。
当数据库的存储设备和存储方法发生变化时,数据库管理员对模式/内模式映像要做相应的改变,使模式保持不变,从而应用程序也不变,保证了数据与程序的物理独立性,简称为数据的物理独立性
4.数据库的外延:
关系数据库的值是某一时刻关系的集合,称作数据库的外延
5.非平凡函数依赖
当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
按要求编写SQL脚本
第一套
1.设有一学籍管理系统,其数据库名为“EDUC”,初始大小为 10MB,最大为50MB,数据库自
动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。
日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”按照题目要求写出创建该数据库的脚本。
CREATE DATABASE EDUC
ON(
NAME='student_data',
FILENAME="e:\sql_data\student.mdf",
SIZE=10MB,
MAXSIZE=50MB,
FILEGROWTH=5%
)
LOG ON(
NAME='student_log',
FILENAME="e:\sql_data\student_log.ldf",
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=1MB
)
GO
2.列表的结构:
表2.1 student表(学生信息表)
编写sql脚本创建下列对象和查询
(1)student表(学生信息表)course表(课程信息表)CREATE TABLE student
sno CHAR(8) PRIMARY KEY,
sname CHAR(8) NOT NULL,
sex CHAR(2) NOT NULL CHECK(sex in ('男','女')),
birthday SMALLDATETIME,
spno CHAR(8)REFERENCES department(Spno),
entime SMALLDATETIME
)
Go
CREATE TABLE course
(
cno CHAR(10) PRIMARY KEY,
spno CHAR(8) REFERENCES department(Spno),
cname CHAR(20) NOT NULL
)
Go
(2)student_course表(学生选课成绩表)department表(专业信息表)CREATE TABLE s.tudent_course
(
sno CHAR(8) NOT NULL,
cno CHAR(10) NOT NULL,
score INT,
PRIMARY KEY(sno, cno)
)
GO
CREATE TABLE department
(
Spno CHAR(8) PRIMARY KEY,
Spname CHAR(20)
)
GO
(3)将各系学生人数,平均年龄定义为视图V_NUM_AVG将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G
CREATE VIEW V_NUM_AVG(学生人数,平均年龄)
SELECT COUNT(sno), AVG(DATEDIFF(yy,birthday,getdate()))
FROM student
GO
CREATE VIEW V_AVG_S_G(学号,选修课程门数,平均成绩)
AS
SELECT sno, COUNT(cno), AVG(score) FROM student_course
GROUP BY sno
GO
(4)在student_course表的sno(升序), cno(升序)和score(降序)三列上建立一个普通索引IX_SC。
CREATE INDEX IX_SC
ON student_course(sno ASC,cno ASC,score DESC)
(5)在course表的cname列上建立唯一索引IX_C。
CREATE UNIQUE INDEX IX_C ON course(cname)
(6)求计算机系和数学系的姓张的学生的信息;
SELECT student.* FROM student,department
WHERE department.Spno=student.spno AND student.sname LIKE '张%' AND (Spname='计算机系' OR Spname='数学系')
3.下表内容完成题目要求:(表的名字为:商品表)
编号商品名单价数量状态
001 电视机 1200 5 0
002 洗衣机 1650 13 0
003 空调 5600 8 1
004 自行车 180 43 1
005 电视机 2580 18 1
006 洗衣机 3600 23 0
(1)查询表中所有的数据行。
SELECT * FROM 商品表
(2)查询表中前两行数据。
SELECT TOP 2 * FROM 商品表
(3)显示表中商品名和单价,并去掉重复行的数据。
SELECT DISTINCT 商品名,单价 FROM 商品表
(4)查看表中数量低于10的商品信息。
SELECT * FROM 商品表 WHERE 数量<10
(5)查看表中价格最高的的商品名。
SELECT 商品名 FROM 商品表
WHERE 单价=(SELECT MAX(单价) FROM 商品表)
(6)向表中添加一行数据,其值为(‘007’,‘电冰箱’,4560,56)
INSERT INTO 商品表(编号,商品名,单价,数量) VALUES('007','电冰箱',4560,56) (7)更改表中的数据,将自行车的单价改为280。
UPDATE 商品表 SET 单价='280' WHERE 商品名='自行车'
(8)删除表中商品名为电冰箱的数据行。
DELETE FROM 商品表 WHERE 商品名='电冰箱'
第二套
1.在D:\SQL路径下的Book数据库,该数据库的主数据文件逻辑名称为Book_data,物理文
件名为Book_data.mdf,初始大小为4MB,最大尺寸为10MB,增长速度为10%;数据库的日志文件逻辑名称为Book_log,物理文件名为Book_log.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为1MB。
CREATE DATABASE Book
ON(
NAME='Book_data',
FILENAME='D:\SQL\Book_data.mdf',
SIZE=4MB,
MAXSIZE=10MB,
FILEGROWTH=10%
)
LOG ON(
NAME='Book_log',
FILENAME='D:\SQL\Book_log.ldf',
SIZE=1MB,
MAXSIZE=5MB,
FILEGROWTH=1MB
)
GO
2.
(1)依据图1的内容,创建“图书信息表”。
CREATE TABLE 图书信息表
(
书号 VARCHAR(10) PRIMARY KEY,
书名 VARCHAR(20) NOT NULL,
整理 VARCHAR(20) NOT NULL,
单价 INT,
库存量 INT DEFAULT 10
)
(2)向表中插入一行数据,列值分别为:(’1006’,’数据库原理’,’王珊’,’高等教育出版社’,25,20,null)
INSERT INTO 图书信息表(书号,书名,整理,出版社,单价,库存量) VALUES('1006','数据库原理','王珊','高等教育出版社',25,20,NULL)
(3)查看表中所有的数据行
SELECT * FROM 图书信息表
(4)显示表中单价的最大值
SELECT MAX(单价)最高价 FROM 图书信息表
(5)修改表中书名为‘多媒体技术’的库存量,使其库存量为38
UPDATE 图书信息表 SET 库存量=38 WHERE 书名='多媒体技术' (6)根据表创建视图AA,使该视图包含书号、书名及单价
CREATE VIEW AA
AS
SELECT 书号,书名,单价 FROM 图书信息表
(7)创建存储过程xxx,使其完成如下功能:查询表中高等教育出版社出版的图书的数目。
CREATE PROCEDURE xxx
AS
SELECT COUNT(*) FROM 图书信息表 WHERE 出版社='高等教育出版社' (8)执行第7小题中创建的存储过程XXX。
EXECUTE xxx
(9)删除表中整理姓张的数据行
DELETE FROM 图书信息表 WHERE 整理 LIKE '张%'
(10)删除该图书表
DROP TABLE 图书信息表
第三套
1.设工程—零件数据库中有四个基本表:
供应商(供应商代码,姓名,所在城市,了解电话);
工程(工程代码,工程名,负责人,预算);
零件(零件代码,零件名,规格,产地,颜色);
供应零件(供应商代码,工程代码,零件代码,数量)
试用SQL语句完成下列操作:
(1)定义供应商表、工程表、零件表和供应零件表,并说明其主码和参照关系。
CREATE TABLE 供应商表
(
供应商代码 VARCHAR(10) PRIMARY KEY,
姓名 VARCHAR(10) NOT NULL,
所在城市 VARCHAR(10) NOT NULL,
了解电话 CHAR(10) NOT NULL CHECK (LEN(了解电话)=11)
)
CREATE TABLE 工程表
(
工程代码 VARCHAR(10) PRIMARY KEY,
工程名 VARCHAR(10) NOT NULL,
负责人 VARCHAR(10) NOT NULL,
预算 INT NOT NULL
)
CREATE TABLE 零件表
(
零件代码 VARCHAR(10) PRIMARY KEY,
零件名 VARCHAR(10) NOT NULL,
规格 VARCHAR(10) NOT NULL,
产地 VARCHAR(10),
颜色 VARCHAR(10)
)
CREATE TABLE 供应零件表
(
供应商代码 VARCHAR(10) NOT NULL REFERENCES 供应商表(供应商代码),
工程代码 VARCHAR(10) NOT NULL REFERENCES 工程表(工程代码),
零件代码 VARCHAR(10) NOT NULL REFERENCES 零件表(零件代码),
数量 INT,
PRIMARY KEY(供应商代码,工程代码,零件代码),
)
(2)找出天津市供应商的姓名和电话。
SELECT 姓名,了解电话 FROM 供应商表 WHERE 所在城市='天津市'
(3)查找预算在50000~100000元之间的工程的信息,并将结果按预算降序排列。
SELECT * FROM 工程表 WHERE 预算 BETWEEN 50000 AND 1000000
(4)找出使用供应商S1所供零件的工程号码。
SELECT 工程代码 FROM 供应零件表 WHERE 供应商代码='S1'
(5)将由供应商S5供给工程代码为J4的零件P6改为由S3供应,并作其他必要的修改。
UPDATE 供应零件表 SET 供应商代码='S3' WHERE 工程代码='J4' AND 零件代码='P6' AND 供应商代码='S5'
(6)从供应商关系中删除S2的记录,并从供应零件关系中删除相应的记录。
DELETE FROM 供应商表 WHERE 供应商代码='S2'
DELETE FROM 供应零件表 WHERE 供应商代码='S2'
第四套
1.问题描述:
本题用到下面三个关系表:
CARD 借书卡。
CNO 卡号,NAME 姓名,CLASS 班级
BOOKS 图书。
BNO 书号,BNAME 书名,AUTHOR 整理,PRICE 单价,QUANTITY 库存册数BORROW 借书记录。
CNO 借书卡号,BNO 书号,RDATE 还书日期
备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。
要求实现如下15个处理:
(1)写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。
CREATE TABLE BORROW
(
CNO VARCHAR(10) NOT NULL REFERENCES CARD(CNO),
BNO VARCHAR(10) NOT NULL REFERENCES BOOKS(BNO),
RDATE DATETIME,
PRIMARY KEY(CNO,BNO,RDATE)
)
(2)找出借书超过5本的读者,输出借书卡号及所借图书册数。
SELECT CNO,COUNT(*) AS '所借图书册数' FROM BORROW
GROUP BY CNO HAVING COUNT(*)>5
(3)查询借阅了"水浒"一书的读者,输出姓名及班级。
SELECT NAME,CLASS FROM CARD
WHERE EXISTS(SELECT * FROM BORROW, BOOKS
WHERE BORROW.BNO=BOOKS.BNO AND BORROWbbbO=CARDbbbO AND BOOKS.BNAME='水浒') (4)查询过期未还图书,输出借阅者(卡号)、书号及还书日期。
SELECT * FROM BORROW WHERE RDATE<GETDATE()
(5)查询书名包括"网络"关键词的图书,输出书号、书名、整理。
SELECT BNO,BNAME,AUTHOR FROM BOOKS WHERE BNAME LIKE '%网络%' (6)查询现有图书中价格最高的图书,输出书名及整理。
SELECT BNAME,AUTHOR FROM BOOKS
WHERE PRICE=(SELECT MAX(PRICE) FROM BOOKS)
(7)查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按
卡号降序排序输出。
SELECT bbbbO FROM BOOKS a,BORROW b
WHERE a.BNO=b.BNO AND a.BNAME='计算方法' AND NOT EXISTS(
SELECT * FROM BOOKS a1,BORROW b1 WHERE a1.BNO=b1.BNO AND a1.BNAME='计算方法习题集' AND bbbbO=b1bbbO)
ORDER BY BbbbO DESC
(8)将"C01"班同学所借图书的还期都延长一周。
UPDATE BORROW SET RDATE=DATEADD(DAY,7,RDATE)
WHERE EXISTS(SELECT * FROM CARD WHERE CLASS='C01')
(9)从BOOKS表中删除当前无人借阅的图书记录。
DELETE FROM BOOKS WHERE NOT EXISTS(
SELECT * FROM BORROW WHERE BOOKS.BNO=BORROW.BNO)
(10)如果经常按书名查询图书信息,请建立合适的索引。
CREATE INDEX IDX ON BOOKS(BNAME)
2.设职工---社团数据库有三个基本表:
职工(职工号,姓名,年龄,性别);
社会团体(编号,名称,负责人,活动地点);
参加(职工号,编号,参加日期);
其中:
A)职工表的主码为职工号。
B)社会团体表的主码为编号;外码为负责人,被参照表为职工表,对应属性为职工号。
C)参加表的职工号和编号为主码;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。
试用SQL语句表达下列操作:(1)定义职工表、社会团体表和参加表,并说明其主码和参照关系。
CREATE TABLE 职工表
(
职工号 VARCHAR(10) PRIMARY KEY,
姓名 VARCHAR(10) NOT NULL,
年龄 VARCHAR(10) NOT NULL,
性别 CHAR(2) NOT NULL CHECK(性别 in ('男','女')),
)
CREATE TABLE 社会团体表。