12、高级 SQL 特性
阅读书籍《SQL必知必会(第4版)》笔记
约束、索引、触发器
约束
管理如何插入或处理数据库数据的规则
- PRIMARY KEY 主键:值唯一,永不改动
- 外键:表中一列,在另一表中作为主键 -> 保证引用完整性,防止另一表中的关联行被删除
- 唯一约束:非主键,一些列的值需要唯一(身份证号),可以用关键词 UNIQUE 或者 CONSTRAINT
- 检查约束:保证一列数据满足一组指定的条件(设置最大最小值范围,或者只允许特定的值
索引
存储以某种方式排序的列表用于查询
CREATE INDEX prod_name_ind # 索引名
ON Products (prod_name);
触发器
特殊的存储过程,与单个表关联,在特定的数据库发生活动 之前/之后 自动执行
一些常用场景包括:
- 数据一致(同义转换大小写)
- 基于某个表的变动,在其他表执行活动(更新、删除行时写入日志表)
- 进行一些额外验证,根据需要回退数据(可用资金不足,阻塞塞入)
- 更新时间戳
CREATE TRIGGER customer_state
ON Customers
FOR INSERT, UPDATE
AS
UPDATE Customers
SET cust_state = Upper(cust_state) # 全部转换成大写
WHERE Customers.cust_id = inserted.cust_id