关系数据理论练习:
1、属性集闭包计算:讲义第4章Page71【例7-54】,在纸上独立完成运算,拍照上传。
2、求最小覆盖:讲义第4章Page93【例1】,在纸上独立完成运算,拍照上传。
3、模式分解:讲义第4章Page132【例4-4】,在纸上独立完成运算,拍照上传。
数据定义练习:
某医院住院部信息系统中由病人表R(住院号,姓名,性别,科室号,病房,家庭住址),“住院号”唯一标识表R中的每一个元组,“性别”的取值只能为M或F,“家庭住址”包括省、市、街道、邮编,要求科室号参照科室关系D中的科室号;科室关系D(科室号,科室名,负责人,联系电话),“科室号”唯一标识关系D中的每一个元组。
a. 创建关系R的SQL语句如下:
|
|
b. 表R中复合属性是__________。(15年第40~43题) 问题1: A. PRIMARY KEY B. REFERENCES D(科室号) C. NOT NULL D. REFERENCES D(科室名)
问题2: A. IN(M,F) B. CHECK(‘M’,‘F’) C. LIKE(‘M’,‘F’) D. CHECK(性别 IN(‘M’,‘F’))
问题3: A. PRIMARY KEY(科室号)NOT NULL UNIQUE B. PRIMARY KEY(科室名)UNIQUE C. FOREIGN KEY(科室号)REFERENCES D(科室号) D. FOREIGN KEY(科室号)REFERENCES D(科室名)
问题4: A. 住院号 B. 姓名 C. 病房 D. 家庭住址
问题1: A
问题2: D
问题3: C
问题4: D
查询练习一:
给定一个部门表Departments,包含字段DepartmentID(部门ID)和DepartmentName(部门名称);一个员工表Employees,包含字段EmployeeID(员工ID)、LastName(姓)、FirstName(名)、Salary(薪资)、Departmen(部门ID),其中Departmen是外键,参照部门表的主键DepartmentID。写出以下需求的SQL语句,上传SQL语句和运行结果图。
|
|
1、编写一个SQL查询,列出所有月薪超过5000的员工的姓名和薪资。
|
|
2、编写一个SQL查询,用以计算每个部门的平均薪资。
|
|
3、编写一个SQL查询,找出薪资高于所在部门平均薪资的所有员工的姓名。
|
|
4、编写一个SQL命令,将所有员工的薪资提高10%,但只限于那些部门平均薪资低于6000的部门。
|
|
5、编写一个SQL查询,列出所有部门以及各部门的员工人数。
|
|
查询练习二:
设教学数据库 Education 有三个关系
-
学生关系 S(SNO,SNAME,AGE,SEX,SDEPT)
-
学习关系 SC(SNO,CNO,GRADE)
-
课程关系 C(CNO,CNAME,CDEPT,TNAME)
|
|
写出以下需求的SQL语句,上传SQL语句和运行结果图。
1、检索学习课程号为 C2 的学生学号与姓名;
|
|
2、检索选修课程名为“DS”的学生学号与姓名;
|
|
3、检索至少选修课程号为 C2 和 C4 的学生学号。
|
|
存储过程和触发器练习:
某企业网上书城系统的部分关系模式如下:
书籍信息表:books(book_no, book_name, press_no, ISBN, price, sale_type, all_nums),其中属性含义分别为:书籍编码、书籍名称、出版商编码、ISBN、销售价格、销售分类、当前库存数量;
书籍销售订单表:orders(order_no, book_no, book_nums, book_price, order_date, amount),其中属性分别为:订单编码、书籍编码、书籍数量、书籍价格、订单日期和总金额。
书籍再购额度表:booklimit(book_no, sale_type, limit_amount),其中属性含义分别为:书籍编码、销售分类、再购额度;
书籍最低库存表:bookminlevel(book_no, level),其中属性含义分别为:书籍编码、书籍最低库存数量;
书籍采购表:bookorders(book_no, order_amount),其中属性含义分别为:书籍编码和采购数量。
有关关系模式的说明如下:
(1)下划线标出的属性是表的主码。
(2)根据书籍销售情况来确定书籍的销售分类:销售数量小于1万的为普通类型,其值为0;1万及以上的为热销类型,其值为1。
(3)系统具备书籍自动补货功能,涉及到的关系模式有:书籍再购额度表、书籍最低库存表、书籍采购表。其业务逻辑是:当某书籍库存小于其最低库存数量时,根据书籍的销售分类以及书籍再购额度表中的再购额度,生成书籍采购表中的采购订单,完成自动补货操作。
【问题1】
系统定期扫描书籍销售订单表,根据书籍总的销售情况来确定书籍的销售类别。下面是系统中设置某书籍销售类别的存储过程,结束时需显示提交返回。请不全空缺处的代码。
|
|
- (a) SUM (计算总销售数量)
- (b) bno (根据传入的书籍编码进行筛选)
- (c) 10000 (销售数量小于1万为普通类型)
- (d) 1 (1万及以上为热销类型) 【问题2】 下面是系统中自动补货功能对应的触发器,请补全空缺处的代码。
|
|
- (f) AFTER (在更新操作之后触发)
- (g) all_nums (当books表的all_nums字段更新时触发)
- (h) FOR EACH ROW (对于每一行受影响的行都执行触发器)
- (i) NEW.all_nums (更新后的库存数量)
- (j) OLD.all_nums (更新前的库存数量)
- (k) bookorders (插入到书籍采购表)
游标的练习:
1、讲义第8章Page47的【例8-2】,练习游标,上传编写的SQL语句和运行结果截图。
|
|
并发事务的干扰问题:
系统中有三个事务T1、T2、T3分别对数据R1和R2进行操作,其中R1和R2的初值R1=120、R2=50,假设事务T1、T2、T3操作的情况如下图所示,图中T1和T2间并发操作( )问题,T2与T3间并发操作( )问题。(12年第45~46题)
时间 | T1 | T2 | T3 |
---|---|---|---|
t1 | Read(R1); | ||
t2 | Read(R2); | ||
t3 | X = R1 + R2; | ||
t4 | Read(R1); | ||
t5 | Read(R2); | ||
t6 | Read(R2); | ||
t8 | Write(R2); | ||
t9 | Read(R1); | ||
t10 | Read(R2); | ||
t11 | X = R1 + R2; | ||
t12 | 演算X | R2 = R2 + 80; | |
t13 | Write(R2); |
|
|
隔离级别练习:
事务T1中有两次查询学生表中的男生人数,在这两次查询执行中间,事务T2对学生表中加入了一条男生记录,导致T1两次查询的结果不一致,此类问题属于( ),为解决这一问题,应采用的隔离级别是( )。(14年第54~55题)
问题1:
A. 不可重复读
B. 读脏数据
C. 丢失修改
D. 幻象读
问题2:
A. Read Uncommitted
B. Read Committed
C. Repeatable Read
D. Serializable
问题1: D. 幻象读
问题2: D. Serializable
封锁练习:
若事务T1对数据D1已加排它锁,事务T2对数据D2已加共享锁,那么事务T2对数据D1( );事务T1对数据D2( )。(13年第45~46题)
问题1:
A. 加共享锁成功,加排它锁失败
B. 加排它锁成功,加共享锁失败
C. 加共享锁、排它锁都成功
D. 加共享锁、排它锁都失败
问题2:
A. 加共享锁成功,加排它锁失败
B. 加排它锁成功,加共享锁失败
C. 加共享锁、排它锁都成功
D. 加共享锁、排它锁都失败
问题1: D. 加共享锁、排它锁都失败
问题2: C. 加共享锁、排它锁都成功
数据库备份与恢复练习:
A、完整 (10:00)→日志 (11:00)→日志 (13:00)→日志 (15:00)→差异 (16:00)
- 准备工作:创建数据库和表
|
|
- 进行完整备份 (Full Backup) 假设这是在 10:00 进行的。
|
|
- 插入一些新数据 (模拟数据库变化)
|
|
- 进行第一次事务日志备份 (Log Backup)
|
|
- 再次插入一些新数据 (模拟更多数据库变化)
|
|
- 进行第二次事务日志备份 (Log Backup)
|
|
- 进行差异备份 (Differential Backup)
|
|
- 进行破坏性操作 (模拟数据丢失或损坏)
|
|
- Q1 恢复到 16:00
|
|
|
|