期末复习样卷
目录
- 期末复习样卷
- 选择题
- 简答题
- 1. 画E-R图并将其转换为适当的关系模型
- 2. 规范化模式分解——教学关系(学号,姓名,年龄,性别,系别,系主任,课程名,成绩)
- 3.关系代数-检索选修课程号为C2或C4的学生的学号
- 4. 关系代数-检索没有学习课程号为C2的学生的学号与姓名
- SQL题
- 1. 表定义:创建供应情况表
- 2. 建立城市为上海的客户2016年的订单信息视图
- 3. 在学生表student上创建触发器,插入学生记录,同步更新班级表class中人数
- 4. 存储过程:返回学生总数,男生人数,女生人数
- 5. 插入图书信息
- 6. SQL更新:删除-删除“吴宾”的所有成绩记录
- 7. SQL更新:修改“王大力”的“计算机导论”课程成绩为70
- 8. 查询产品类别名称为“一体机”且一次销售数量在45及以上的产品销售信息
- 9.查询一次订购了4,7,8号产品的客户名及电话
- 10. 统计各级职位(不含NULL)员工人数,按照人数降序排列。
选择题
-
写一个修改到数据库中,与写一个表示这个修改的运行记录到日志文件中是两个不同的操作,对这两个操作的顺序安排应该是 B
A .前者先做B .后者先做
C . 由程序员在程序中作安排D .哪一个先做由系统决定
-
数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的( D)。
A 可靠性
B 一致性
C 完整性
D 安全性 -
数据库系统的数据独立性是指( B )。
A 不会因为某些存储结构的变化而影响其他的存储结构
B 不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序
C 不会因为存取策略的变化而影响存储结构
D 不会因为数据的变化而影响应用程序 -
数据模型的三要素是( A )。
A 数据结构、数据操作和完整性约束
B 关系模型、层次模型、网状模型
C 实体、属性和联系
D 外模式、模式和内模式 -
在数据库的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特性的是( A )。
A 模式
B 内模式
C 存储模式
D 外模式 -
数据库系统的基本特点是( B )。
A 数据结构化;数据独立性高:数据冗余大,易移植;数据由DBMS统一管理和控制
B 数据结构化;数据独立性高:数据冗余小,易扩充;数据由DBMS统一管理和控制
C 数据结构化;数据独立性高;数据冗余大,易扩充;数据由文件系统统一管理和控制
D 数据非结构化;数据独立性高;数据冗余小,易扩充;数据由文件系统统一管理和控制 -
在关系模型中,一个关键字是( D )。
A 不能由全部属性组成
B 由一个属性组成
C 由一个或多个任意属性组成
D 可由一个或多个能惟一标识该关系模式中任意元组的属性组成
-
数据库的 B是指数据的正确性和相容性.
A .安全性
B .完整性
C .并发控制
D .恢复
-
Student、SC、Course表中已有数据如下:
Student:
Sno Sname Sdept Ssex Sage 1234501 aaa CS 男 21 1234502 bbb CS 女 20 1234503 ccc IS 男 22 Course
Cno Cname Cpno Ccredit C01 Uuuu C08 1 C02 Vvvv C07 2 C03 Wwww C06 2 C10 Xxxx C15 3 C11 Yyyy C16 1 C12 Zzzz C20 4 SC
Sno Cno Grade 1234501 C01 80 1234501 C02 88 1234502 C01 90 1234503 C10 85 1234503 C11 91 若在SC表上建立外码:
Foreign Key (Sno) References Student(Sno) ON Delete CascadeON Update NO Action,
Foreign Key (Cno)References Course(Cno)ON Delete Cascade
ON Update NO Action,
则下面的操作不正确的是 D
A.在Student表中删除一个学生的基本信息:(学号1234501,姓名aaa,系别CS,性别男,年龄21),则SC表中第一行、第二行选课记录均被删除;
B.将Course表中的课程号C12修改为C13
C.删除SC表上第二行选课记录。
D.将Course表中的课程号C01修改为C15
下面的操作不正确的是D,将Course表中的课程号C01修改为C15会破坏SC表中的外键约束,因为SC表中的第一行记录的Cno为C01,而C01并不存在于Course表中,因此无法更新外键所关联的记录,会导致更新失败。
其他操作均正确,具体说明如下:
A. 在Student表中删除一个学生的基本信息:(学号1234501,姓名aaa,系别CS,性别男,年龄21),则SC表中第一行、第二行选课记录均被删除。这是因为在SC表中,学号为1234501的学生选修了C01和C02两门课程,而这两门课程都与学生信息表中的学号为1234501的记录关联,因此在学生信息表中删除该记录时,SC表中与该学生相关的选课记录也会被级联删除。
B. 将Course表中的课程号C12修改为C13,这个操作不会影响SC表中的记录,因为SC表中的选课信息是根据课程号和学号来关联的,修改了课程号不会影响到SC表中的学生选课信息。
C. 删除SC表上第二行选课记录,这个操作也是正确的,因为SC表的删除操作不会影响到其他表。
-
事务的隔离性是指 C
A .事务中包括的所有操作要么都做,要么都不做
B .事务一旦提交,对数据库的改变是永久的
C .一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D .事务必须使数据库从一个一致性状态变到另一个一致性状态 -
设有两个事务Tl 、T2 ,其并发操作如图所示,下列评价正确的是 .C
A .该操作不存在问题
B .该操作丢失修改
C .该操作不能重复读D .该操作读“脏”数据
-
数据库系统并发控制的主要方法是采用C 机制。
A .拒绝B .改为串行
C .封锁D .不加任何控制
-
数据恢复的建立冗余数据的常用技术A。
A. 数据转储和登记日志文件
B. 数据备份和加密技术
C. 视图与审计
D. 数据库镜像
-
下列属于数据库物理设计工作的是 B
A .将E-R 图转换为关系模式
B .选择存取路径
C . 建立数据流图
D .收集和分析用户活动
-
在数据库设计中,用E-R 图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库 设计的B阶段。
A .需求分析
B .概念设计
C .逻辑设计
D .物理设计
简答题
1. 画E-R图并将其转换为适当的关系模型
某IT公司的数据库信息:
①部门具有部门编号、部门名称、办公地点;
②部门员工具有员工编号、姓名、级别,员工只在一个部门工作;
③每个部门有唯一一个部门员工作为部门经理;
④实习生具有实习编号、姓名、年龄,只在一个部门实习;
⑤项目具有项目编号、项目名称、开始日期、结束日期;
⑥每个项目由一名员工负责,由多名员工、实习生参与;
⑦一名员工只负责一个项目,可以参与多个项目,在每个项目具有工作时间;
⑧每个实习生只参与一个项目。
(1)试画出这个数据库的E-R图。
(2)转化为适当的关系模型,并给出关系的主码和外码。
部门(部门编号,部门名称,办公地点,部门经理员工编号)
主码:部门编号
外码:部门经理编号 -> 员工(员工编号)
员工(员工编号,姓名,级别,部门编号)
主码:员工编号
外码:部门编号 -> 部门(部门编号)
实习生(实习编号,姓名,年龄,部门编号)
主码:实习编号
外码:部门编号 -> 部门(部门编号)
项目(项目编号,项目名称,开始日期,结束日期,负责员工编号)
主码:项目编号
外码:负责员工编号 -> 员工(员工编号)
员工项目参与关系(员工编号,项目编号,工作时间)
主码:(员工编号,项目编号)
外码:员工编号 -> 员工(员工编号)
外码:项目编号 -> 项目(项目编号)
2. 规范化模式分解——教学关系(学号,姓名,年龄,性别,系别,系主任,课程名,成绩)
已知关系模式:教学(学号,姓名,年龄,性别,系别,系主任,课程名,成绩),一个学生隶属一个系,一个学生可以选修若干门课,选修的课程只有一个成绩,一个系只有一个系主任。
请分析关系模式,回答下列问题:
(1)写出关系的函数依赖集,并确定关系的候选码;
(2)分析关系模式的范式等级(说明理由);
(3)若未达到第3范式,请进行模式分解规范到第3范式。
1)学号 - > 姓名,年龄,性别,系别
学号、课程名 - > 成绩
系别 -> 系主任
候选码(学号,课程名)
2)姓名、所在系部分依赖于学号,所以存在部分依赖于候选键,属于1NF
3)不属于3NF 分解成:R1(学号,课程名,成绩) R2(学号,姓名,年龄,性别,系别) R3(系别,系主任)
3.关系代数-检索选修课程号为C2或C4的学生的学号
设有三个关系:
S(SNO,SNAME,AGE,SEX)
SC(SNO,CNO,GRADE)
C(CNO,CNAME,TEACHER)
用关系代数表达式表示查询语句:检索选修课程号为C2或C4的学生的学号。
πSNO(σCNO='C2' ∨ CNO='C4'(SC))
4. 关系代数-检索没有学习课程号为C2的学生的学号与姓名
设有三个关系:
S(SNO,SNAME,AGE,SEX)
SC(SNO,CNO,GRADE)
C(CNO,CNAME,TEACHER)
用关系代数表达式表示查询语句:检索没有学习课程号为C2的学生的学号与姓名。
π(SNO, SNAME)(S) - π(SNO, SNAME)(S ⨝ σ(CNO = 'C2')(SC))
SQL题
1. 表定义:创建供应情况表
供应情况表spj:
列名 | 说明 | 数据类型 | 约束 |
SNO | 供应商号 | CHAR(6) | 主码 |
PNO | 零件号 | CHAR(6) | 主码 |
JNO | 项目号 | CHAR(6) | 主码 |
QTY | 供应数量 | SMALLINT | DEFAULT 100,大于0 |
CREATE TABLE SPJ (
SNO CHAR(6) NOT NULL,
PNO CHAR(6) NOT NULL,
JNO CHAR(6) NOT NULL,
QTY SMALLINT DEFAULT 100 CHECK (QTY > 0),
PRIMARY KEY (SNO, PNO, JNO)
);
2. 建立城市为上海的客户2016年的订单信息视图
建立城市为上海的客户2016年的订单信息视图v_order,包括顾客号、顾客名、该顾客2016年的订单数及订单总额。
其中客户表cutomer表结构为
订单表`order
`表结构为
CREATE VIEW v_order
AS
SELECT customer.customer_id,customer_name,count(order_id),sum(total_money)
from customer,`order`
where YEAR(order_date)=2016 and city="上海" and customer.customer_id = `order`.customer_id
GROUP BY customer.customer_id
3. 在学生表student上创建触发器,插入学生记录,同步更新班级表class中人数
在学生表student上创建触发器,插入学生记录,同步更新班级表class中对应班级人数。
表结构定义如下:
班级表class:
classno char(7) 班级号,主键,
classname char(20) 班级名
number int 班级人数。
学生表student:
no char(9) 学号,主键;
name char(10) 姓名;
sex enum(‘男’,‘女’) 性别;
age SMALLINT 年龄;
classno char(7) 班级号,外键(取值参照class的classno)。
delimiter $$
CREATE TRIGGER update_class_number AFTER INSERT ON student
FOR EACH ROW
BEGIN
UPDATE class SET number = number + 1 WHERE classno = NEW.classno;
END $$
4. 存储过程:返回学生总数,男生人数,女生人数
#存储过程 tj_rs:根据系名,统计该系学生总数,男生人数,女生人数。
[注意:SQL表名请用小写]
学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:
1、student(学生表):
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course(课程表)
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc(选课表)
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 绩 SMALLINT
CREATE PROCEDURE tj_rs (IN deptName VARCHAR(20), OUT total INT, OUT male INT, OUT female INT)
BEGIN
SELECT COUNT(*) INTO total FROM student WHERE SDEPT = deptName;
SELECT COUNT(*) INTO male FROM student WHERE SDEPT = deptName AND SSEX = '男';
SELECT COUNT(*) INTO female FROM student WHERE SDEPT = deptName AND SSEX = '女';
END;
5. 插入图书信息
将图书信息插入到book表中,其中书号 7, 书名 组合数学, 作者 刘迪, 价格 36.70, 数量 37。
表结构如下:
book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数
表名请用小写。
INSERT INTO book (bno, bname, author, price, quantity)
VALUES (7, '组合数学', '刘迪', 36.70, 37);
6. SQL更新:删除-删除“吴宾”的所有成绩记录
有student、course、sc表;删除“吴宾”的所有成绩记录。
student:
sc:
course:
DELETE FROM sc
WHERE sno IN(SELECT sno FROM student WHERE sname='吴宾');
7. SQL更新:修改“王大力”的“计算机导论”课程成绩为70
#修改“王大力”的“计算机导论”课程成绩为70。
学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:
1、student(学生表):
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course(课程表)
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc(选课表)
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
[注意:SQL表名请用小写]
UPDATE sc
SET GRADE = 70
WHERE SNO = (
SELECT SNO
FROM student
WHERE SNAME = '王大力'
) AND CNO = (
SELECT CNO
FROM course
WHERE CNAME = '计算机导论'
);
8. 查询产品类别名称为“一体机”且一次销售数量在45及以上的产品销售信息
查询产品类别名称为“一体机”且一次销售数量在45及以上的产品销售信息,输出订单详情id、产品号、销售数量和销售额,结果按订单详情id升序排列。
其中订单详情表order_detail表结构为
产品表product表结构为
产品类别表category表结构为
SELECT order_detail.order_id, order_detail.buy_number, order_detail.total_money
FROM order_detail
INNER JOIN product ON order_detail.product_id = product.product_id
INNER JOIN category ON product.category_id = category.category_id
WHERE category.name = '一体机' AND order_detail.buy_number >= 45;
9.查询一次订购了4,7,8号产品的客户名及电话
查询一次订购了4,7,8号产品的客户名及电话。
其中客户表customer表结构为
订单表`order
`表结构为
订单详情表order_detail表结构为
产品表product表结构为
SELECT customer_name,phone FROM customer
WHERE customer_id in (SELECT customer_id from `order`
where not exists(select * from order_detail od WHERE product_id in(4,7,8)
AND NOT EXISTS(select * FROM order_detail
WHERE order_id=`order`.order_id and od.product_id = product_id)));
10. 统计各级职位(不含NULL)员工人数,按照人数降序排列。
统计各级职位(不含NULL)员工人数,按照人数降序排列。输出职位,人数。
SELECT COUNT(*) as count
FROM employee
WHERE job_title IS NOT NULL
GROUP BY job_title
ORDER BY count DESC;