暑期自学 Day 11 | 数据库 (四)- 约束

约束

  • 对表的数据进行限定,保证数据的正确性,有效性,完整性。
  • 类别:添加在数据名的后面

主键约束

  • primary key,非空且唯一,数据的唯一标识
  • 删除:ALTER table t_name DROP PRIMARY KEY;
  • 注意,主键删除与非空删除不一样。非空删除用 MODIFY。
  • 自增长 AUTO INCREMENT: 自动增长的值只和上一条记录有关系

非空约束

  • not null,值不能为空

唯一约束

  • unique,值不能重复
  • 删除:ALTER table t_name DROP INDEX id;

外键约束

  • 一个主从表关系中,如果从表数据被删除,主表某一列的数据由于关联关系也会受影响。通过添加外键约束,使数据无法轻易在从表中删除。让表与表之间存在关系,保证数据正确性。
  • 格式:外键列, CONSTRAINT 外键名 FOREIGN KEY (外键列名) REFERENCE 主表名(主表列名);
  • 一个例子:
-- 一方主表,部门表
CREATE TABLE department (
    id INT PRIMARY KEY AUTO INCREMENT,
    dep_name VARCHAR(20),
    dep_location VARCHAR(20)
);
-- 多方从表,员工表
CREATE TABLE employ (
    id INT PRIMARY KEY AUTO INCREMENT,
    name VARCHAR(20),
    age INT,
    dep_id INT, -- 外键对应主表中的主键,部门编号
    CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCE department(id) -- 将外键关联,emp_dep_fk 是外键名称
);

-- 删除外键
ALTER TABLE employee DROP FOREIGN KEY emp_dep_fk;

-- 建表后添加外键
ALTER TABLE employ ADD CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCE department(id);
-- 
级联
  • 更改外键id时使用级联,可以使主从表关联的外键值联动更新。
  • 添加级联:ON UPDATE CASCADE
    • ALTER TABLE employ ADD CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCE department(id) ON UPDATE CASCADE;
  • 删除级联:ON DELETE CASCADE
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!