MySql的约束

数据库约束的作用

对表中的数据进行进一步的限制,保证数据的正确性有效性完整性

约束种类

  • PRIMARY KEY: 主键约束

主键的作用

  通过主键可以唯一的确定一条记录。

主键的特点

  非空,唯一。

  • UNIQUE: 唯一约束

唯一约束的作用

  使该字段的值不重复。

唯一约束的特点

      字段值不重复。

  • NOT NULL: 非空约束

非空约束的作用

  该字段的值不能为空。

非空约束的特点

  字段的值不能为空。

  • DEFAULT: 默认值约束

默认值约束的作用

  如果不指定该字段的值就用默认值。

默认值约束的特点

  指定默认值。

  • FOREIGN KEY: 外键约束

    什么是外键约束

一张表的某个字段,引用另一张表的主键

主表: 主键所在的表,约束别人的表,将数据给别人用 副表/从表: 外键所在的表,被约束的表,使用别人的数据

创建外键

  

CREATE TABLE 表名 (
    字段名 字段类型,
    字段名 字段类型,
    CONSTRAINT [外键名] FOREIGN KEY(外键的字段名) REFERENCE 主表(主键)
);

  已有表添加外键约束:ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名)

    外键的联级

      当引用外键约束的时候,如果从表有使用主表的数据(如id),主表的id不能直接进行删除或者修改的操作,需要先把从表的引用的数据更新或者删除后

    才能操作。

      在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作 ON UPDATE CASCADE -- 级联更新,主表更新时,从表跟着更新 ON DELETE CASCADE -- 级联删除,主表删除是,从表跟着删除。

    如:

CREATE TABLE employee (
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(30),
    age INT,
    dep_id INT,
    -- 添加外键约束,并且添加级联更新和级联删除
    CONSTRAINT employee_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE
);

 

扩展:

主键唯一,非空,普通的字段我们也可以添加唯一和非空.有区别吗?

1.一个表只能有一个主键,一个表可以让多个字段添加非空和唯一。

2.主键可以自动增长,普通非空唯一字段不能自动增长。

 

原文地址:https://www.cnblogs.com/mengjialian/p/12523010.html