π_{Sname}(σ_{Cname='数据库'}(Course ⋈ SC ⋈ Student))DDL:
CREATE TABLE Student (
Sno CHAR(9) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL
);
DML:
-- 插入
INSERT INTO SC VALUES ('2021001', 'C001', 90);
-- 更新
UPDATE Student SET Sage=Sage+1 WHERE Sdept='CS';
-- 删除
DELETE FROM SC WHERE Grade < 60;
查询:
-- 嵌套查询
SELECT Sname FROM Student
WHERE Sno IN (SELECT Sno FROM SC WHERE Cno='C01');
-- 连接查询
SELECT Sname, Cname FROM Student
NATURAL JOIN SC JOIN Course USING(Cno);
| 范式 | 要求 | 消除依赖类型 |
|---|---|---|
| 1NF | 属性不可再分 | - |
| 2NF | 消除非主属性对主属性的部分依赖 | 部分函数依赖(如学号→姓名) |
| 3NF | 消除非主属性的传递依赖 | 传递函数依赖(如学号→系名→系地址) |
| BCNF | 消除主属性对候选键的部分/传递依赖 | 所有非平凡函数依赖左侧包含候选键 |
| 问题 | 描述 | 封锁协议 |
|---|---|---|
| 丢失修改 | 后提交覆盖前提交结果 | 一级封锁协议(X锁到事务结束) |
| 脏读 | 读取未提交的无效数据 | 二级封锁协议(S锁立即释放) |
| 不可重复读 | 同一事务两次读取结果不同 | 三级封锁协议(S锁到事务结束) |
| 幻读 | 范围查询结果数量变化 | 间隙锁(锁定范围) |