12、高级 SQL 特性

Posted by CodingWithAlice on July 11, 2022

12、高级 SQL 特性

阅读书籍《SQL必知必会(第4版)》笔记

约束、索引、触发器

约束

管理如何插入或处理数据库数据的规则

  • PRIMARY KEY 主键:值唯一,永不改动
  • 外键:表中一列,在另一表中作为主键 -> 保证引用完整性,防止另一表中的关联行被删除

468D600D-5DE6-41E7-9E77-D75B504C5761

  • 唯一约束:非主键,一些列的值需要唯一(身份证号),可以用关键词 UNIQUE 或者 CONSTRAINT
  • 检查约束:保证一列数据满足一组指定的条件(设置最大最小值范围,或者只允许特定的值

455C2427-95FC-4F39-BEB2-E7E12940187C

索引

存储以某种方式排序的列表用于查询

EC69E89B-599F-4A71-8772-77B7433A045C

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