数据库原理与应用期末复习试卷1

数据库原理与应用期末复习试卷1

一.单项选择题

  1. 数据库系统是采用了数据库技术的计算机系统,由系统数据库,数据库管理系统,应用系统和(C)组成。

​ A.系统分析员 B.程序员 C.数据库管理员 D.操作员

  1. 数据库系统的体系结构是(C)

​ A.两级模式结构和一级印象 B.三级模式结构和一级印象

​ C.三级模式结构和两级印象 D.三级模式结构和三级印象

  1. SQL语言种,删除一个表的命令是(B)

​ A.DELETE B.DROP C.CLEAR D.REMOVE

  1. 一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的(D)

​ A.记录 B.行 C.分量 D.属性

  1. 概念模型是现实世界的第一层抽象,这一类模型种常用的模型是(D)

​ A.层次模型 B.关系模型 C.网状模型 D.实体-联系模型

  1. 如果对于实体集A中的每一个实体,实体集B中也可有多个实体与之联系;反之,对于实体集B中的每一个实体,实体集合A中也可以有多个实体与之联系,则称实体集A与B具有(C)

​ A.1:1联系 B.1:n联系 C.n:m联系 D.多种联系

  1. 悲观并发控制普遍采用(A)技术。

​ A.封锁 B.存取控制 C.游标 D.协商

  1. 下列情况中,属于数据库安全性遭到破坏(C)。

​ A.用户读取未提交事务中修改过的"脏数据" I

​ B.由于系统断电而破坏了数据库中的数据

​ C.非法用户读取数据库中的数据

​ D.丢失更新问题

  1. 设关系数据库中表S的结构为: S(Snane, Cname, Grade),其中Sname为学生姓名,Cname

​ 为课程名,二者均为字符型:Grade为成绩,数值型,取值范图0-100,若要更正张立的化学成绩为90分,则 可用(A )。

​ A.UPDATE S SET Grade=90 WHERE Sname='张立' AND Cname='化学'

​ B.UPDATE S SET Grade='90' WHERE Sname='张立' AND Cname='化学'

​ C.UPDATE Grade=90 WHERE Sname='张立' AND Cname='化学'

​ D.UPDATE Grade='90' WHERE Sname='张立' AND Cname='化学'

​ 10.在一个关系型数据库中,参照完整性约束可以通过©来实现。

​ A.主码 B.候选码 C.外码 D.锁

  1. 在关系数据库系统中,为了简化用户的查询操作。而又不增加数据的存储空间,常用的方法是创建(C )。

​ A.另一个表 B.游标 C.视图 D.索引

  1. SQL 语言的GRANT和REVOKE语句主要是用来维护数据库的(C)。

​ A.完整性 B.可靠性 C.安全性 D.一致性

  1. 对于某查询语句的条件 where Sdept like C_er%y,将筛选出以下(A)值。

​ A.Cherry B. Csherry C.Cherr D. C_er%y

  1. 事务具有ACID,其中C是指事务的(D)。

​ A.原子性 B.持续性 C.隔离性 D.一致性

  1. o p1 (o p2 ®)等价于(B)。

​ A.o p1 v p2 ® B.o p1^p2® C.op1® D.op2®

  1. 在数据库系统中,死锁属于(B)。

​ A.系统故障 B.事务故障 C.介质故障 D.程序故障

  1. 如果事务了获得了数据项Q上的排他锁,则T对Q(C)。

​ A.只能读不能写 B.只能写不能读

​ C.既可读又可写 D.不能读也不能写

  1. 以下有关索引的描述错误的是( D)。

​ A.聚簇索引的顺序与数据行存放的物理顺序相同

​ B.指定主键后系统自动在主键上建立聚簇索引

​ C.一个表可以有多个非聚簇素引

​ D. 当一个表创建了多个聚簇索引时,同一时刻只有一个聚簇索引起作用

  1. 事务日志用于保存(C)。

​ A.程序运行过程 B.程序的执行结果 C.对数据的更新操作 D.数据

  1. 在以下子句中,放在SELECT语句最后的应该是(D)子句。

​ A.GROUP BY B.HAVING C.WHERE D.ORDER BY


二.判断题

  1. 登记日志文件时必须遵守的一条原则是:必须先写数据库,后写日志文件。(×)

  2. 可串行化的调度一定遵守两段锁协议。(×)

  3. 在关系模式中,主码和候选码可以有多个。(×)

  4. 因为视图是一个虚拟表,因此不能通过视图插入、修改或删除数据。(×)

  5. 关系模式R(A,B,C)上成立的FD集为F=(A→B,C→B),设p=(AB,AC),则该分解不具有保持函数依赖性。(√)

  6. 左向外连接的结果集包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。(√)

  7. 事务故障、系统故障和介质故障影响事务的正常执行,事务故障还破坏数据库数据。(×)

  8. 外模式/模式映像可以保证数据与程序的逻辑独立性。(√)


三.填空题

  1. 如果一个事务中对数据进行了更新,但该事务还没有提交,另一个事务可以"看到"该事务没有提交的更新结果,这种现象称为(读"脏'数据)。

  2. 在SELECT语句中,与关系代数中运算符等价的是(select distinct)子句。

  3. 系统故障可能会造成数据库处于不一致状态:一是未完成事务对数据库的更新可能已写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。因此恢复操作就是要(撤销UNDO)故障发生时未完成的事务,(重做REDO)已完成的事务。

  4. 事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,如果仅仅是读数据则不对其加锁,这是(一级)封锁协议。

  5. 关系数据库完整性约束包括(实体)完整性、参照完整性和用户定义完整性。

  6. 已知关系r(a,b,c,d,e,f),其中F=(a->b,b->c,a->d,e->t),则a+为(a,b,c,d)


四.分析解答题

  1. 设关系模式R的属性集是U=(A,B,C,D】,函数依赖集是F=(A->B,B->C)。

​ (1)求出R的所有侯选关键字;(2分)

​ AD

​ (2)并分析该关系R属于第几范式.。(2分)

1NF的分析过程必须合理,关键是非主属性对候选码的依赖

​ (3)将其规范到3NF。(2分)

​ R1(A B)R2(B C) R3(AD)

  1. 一个商业管理信息系统的需求描述如下,

​ ①有若干商店,每个商店需记录:商店号、商店名、地点、经理

​ ②有若干仓库,每个仓库需记录:仓库号、仓库名、地点、面积

​ ③有若干商品,每个商品需记录:商品号、商品名、规格、单价

​ ④有若干职工,每个职工需记录:职工号,姓名,年龄,薪水

​ ⑤每个商店可销售多种商品,每种商品可在多个商店销售;商店销售商品时,必须记录销售日期和销售数 量。

​ ⑥每种商品只能在一个仓库存储,每个仓库可以存储多种商品;仓库存储商品时,须记录存储的数量。

​ ⑦每个职工只能在一个商店工作,一个商店可以有多个职工。

​ 要求:

​ (1)画出系统的E-R图。(4分)

​ (2)将你的E-R图转化为关系模型,注意标出关系的主键。(4分)

​ 商品(商品号,商品名,规格,单价,仓库号,存储数量)

​ 仓库(仓库号,仓库名,地点,面积)

​ 职工(商店号,职工号,姓名,年龄,薪水)

​ 商店(商店号,商店名,地点,经理)

​ 销售(商店号,商店号,销售数量,销售日期)


五.请用SQL语句完成下列操作

​ 现有关系数据库如下:

​ 图书表(书号,书名,作者,出版社,单价).

​ 读者表(读者号,姓名,性别,电话).

​ 借阅表(读者号,书号,借出日期,归还日期)

​ 根据以上内容,写出以下SQL语句:

  1. 创建读者表,约束条件:读者号是主键,姓名不能为空,性别只能取'男"或'女',电话默认'880000'

    create table 读者表(

    读者号 varchar(20) primary key,

    姓名 varchar(20) not null,

    性别 char(2) check(性别='男' or 性别='女')

    电话 varchar(20) default '880000'

    )

  2. 插入一条记录到读者表,其中读者号:050039,姓名李为,性别;男,电话:80008111。

    insert into 读者表 (读者号,姓名,性别,电话) values ('050039','李为','男','80008111')

  3. 创建一个名为 borrow_counts的存储过程,功能为:输入某个读者号,返回该读者借阅书籍的数目。

    create proc borrow_counts @readerid char(6),@borrow_c int output

    AS

    ​ select @ borrow_c=counts(*)

    from 读者表

    where 读者号=@readerid

  4. 查询出哪些读者借阅图书本数超过2本的读者号、总本数,并按借阅本数值从大到小排序。

    select 读者号,count(distinct 书号)借阅书籍数

    from 借阅表

    group by 读者号

    order by 借阅书籍数 desc

  5. 查询每个出版社价格最高的图书,列出这些图书的书号和书名。

    select 书号,姓名

    from 图书表 T1

    where 单价=(select max(单价)

    from 图书表 T2

    where T2.出版社=T1.出版社

  6. 查询出哪些图书小明借阅过,但是小红没借阅过。列出对应书号,书名。

select 书号,书名

from 借阅表 join 读者表

where 姓名='小明' and 书号 not in(

select 书号

from 借阅表 join 读者表

where 姓名='小红'

相关推荐
夜半被帅醒1 分钟前
MySQL 数据库优化详解【Java数据库调优】
java·数据库·mysql
不爱学习的啊Biao15 分钟前
【13】MySQL如何选择合适的索引?
android·数据库·mysql
破 风25 分钟前
SpringBoot 集成 MongoDB
数据库·mongodb
Rverdoser33 分钟前
MySQL-MVCC(多版本并发控制)
数据库·mysql
m0_7482336440 分钟前
SQL数组常用函数记录(Map篇)
java·数据库·sql
dowhileprogramming1 小时前
Python 中的迭代器
linux·数据库·python
0zxm2 小时前
08 Django - Django媒体文件&静态文件&文件上传
数据库·后端·python·django·sqlite
Minxinbb6 小时前
MySQL中Performance Schema库的详解(上)
数据库·mysql·dba
mmsx7 小时前
android sqlite 数据库简单封装示例(java)
android·java·数据库
zpjing~.~8 小时前
Mongo 分页判断是否有下一页
数据库