数据库原理与应用期末复习试卷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 姓名='小红'

相关推荐
松涛和鸣14 分钟前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
likangbinlxa31 分钟前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
r i c k1 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦1 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL2 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·2 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德2 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫3 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i3 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.3 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql