期末复习样卷

期末复习样卷

选择题

  1. 写一个修改到数据库中,与写一个表示这个修改的运行记录到日志文件中是两个不同的操作,对这两个操作的顺序安排应该是 B
    A .前者先做

    B .后者先做
    C . 由程序员在程序中作安排

    D .哪一个先做由系统决定

  2. 数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的( D)。
    A 可靠性
    B 一致性
    C 完整性
    D 安全性

  3. 数据库系统的数据独立性是指( B )。
    A 不会因为某些存储结构的变化而影响其他的存储结构
    B 不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序
    C 不会因为存取策略的变化而影响存储结构
    D 不会因为数据的变化而影响应用程序

  4. 数据模型的三要素是( A )。
    A 数据结构、数据操作和完整性约束
    B 关系模型、层次模型、网状模型
    C 实体、属性和联系
    D 外模式、模式和内模式

  5. 在数据库的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特性的是( A )。
    A 模式
    B 内模式
    C 存储模式
    D 外模式

  6. 数据库系统的基本特点是( B )。
    A 数据结构化;数据独立性高:数据冗余大,易移植;数据由DBMS统一管理和控制
    B 数据结构化;数据独立性高:数据冗余小,易扩充;数据由DBMS统一管理和控制
    C 数据结构化;数据独立性高;数据冗余大,易扩充;数据由文件系统统一管理和控制
    D 数据非结构化;数据独立性高;数据冗余小,易扩充;数据由文件系统统一管理和控制

  7. 在关系模型中,一个关键字是( D )。

    A 不能由全部属性组成

    B 由一个属性组成

    C 由一个或多个任意属性组成

    D 可由一个或多个能惟一标识该关系模式中任意元组的属性组成

  8. 数据库的 B是指数据的正确性和相容性.

    A .安全性

    B .完整性

    C .并发控制

    D .恢复

  9. StudentSCCourse表中已有数据如下:

    Student:

    SnoSnameSdeptSsexSage
    1234501aaaCS21
    1234502bbbCS20
    1234503cccIS22

    Course

    CnoCnameCpnoCcredit
    C01UuuuC081
    C02VvvvC072
    C03WwwwC062
    C10XxxxC153
    C11YyyyC161
    C12ZzzzC204

    SC

    SnoCnoGrade
    1234501C0180
    1234501C0288
    1234502C0190
    1234503C1085
    1234503C1191

    若在SC表上建立外码:
    Foreign Key (Sno) References Student(Sno) ON Delete Cascade

    ON 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表的删除操作不会影响到其他表。

  10. 事务的隔离性是指 C

    A .事务中包括的所有操作要么都做,要么都不做
    B .事务一旦提交,对数据库的改变是永久的
    C .一个事务内部的操作及使用的数据对并发的其他事务是隔离的
    D .事务必须使数据库从一个一致性状态变到另一个一致性状态

  11. 设有两个事务Tl 、T2 ,其并发操作如图所示,下列评价正确的是 .C

    A .该操作不存在问题

    B .该操作丢失修改
    C .该操作不能重复读

    D .该操作读“脏”数据
    在这里插入图片描述

  12. 数据库系统并发控制的主要方法是采用C 机制。
    A .拒绝

    B .改为串行
    C .封锁

    D .不加任何控制

  13. 数据恢复的建立冗余数据的常用技术A。

    A. 数据转储和登记日志文件

    B. 数据备份和加密技术

    C. 视图与审计

    D. 数据库镜像

  14. 下列属于数据库物理设计工作的是 B

    A .将E-R 图转换为关系模式

    B .选择存取路径

    C . 建立数据流图

    D .收集和分析用户活动

  15. 在数据库设计中,用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供应数量SMALLINTDEFAULT 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;
  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会喷火的小火龙

你的鼓励是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值