09-约束

nobility 发布于 2022-09-28 1244 次阅读


约束

添加约束条件

多个检查条件都违反约束,将一个一个检查,所以约束条件越多效率越慢

CREATE TABLE 表名 (
	字段1 数据类型 约束条件,
    字段1 数据类型 约束条件,
    ...
);
--这中形式最好除拉NOT NULL其他的不要用,因为错误提示信息不明显
CREATE TABLE 表名 (
	字段1 数据类型,
    字段1 数据类型,
    ...
    CONSTRAINT 约束名称1 约束条件(字段名1),
    CONSTRAINT 约束名称2 约束条件(字段名2)
    ...
);
--此种形式不包括非空约束,因为非空约束会给出明确的错误提示信息
  • 非空约束:NOT NULL、简称NK

  • 唯一约束:UNIQUE、简称UK

    • null不在唯一约束的范畴之内,可以有多个null
  • 主键约束:PRIMARY KEY、简称PK,是非空+唯一

    • 若一张表中有多个主键,复合主键,只有同时重复才能触发主键约束
  • 检查约束:CHECK、简称CK,自己设置条件,满足条件才行

    • 可以用sql中的各种条件关键字
  • 外键约束:FOREIGN KEY、简称FK,父子表之间的约束关系

    • 语法

      CREATE TABLE 表名 (
      	字段1 数据类型,
          ...
          CONSTRAINT FOREIGN KEY(当前表中要关联的字段名) REFERENCES 父表名(要关联的父表字段名) [ON DELETE CASCADE | SET NULL]
          ...
      );
      
    • 表删除:删除父表之前,必须先删除子表,否则无法删除

      • 若互为父表,则可以采用在删除表语句中追加CASCADE CONSTRAINT级联约束条件,可以强制删除,若有此条件PURGE就不能添加了,不能不进过回收站
    • 数据删除:必须先删除父表中的记录,才能删除子表中的记录

      • 级联删除:ON DELETE CASCADE、父记录删除,子记录也会删除
      • 级联更新:ON DELETE SET NULL、父记录删除,子记录将外键关联字段置为null

修改约束条件

语法

ALTER TABLE 表名 ADD CONSTRAINT 约束名称 约束类型(字段);
--只能追加NOT NULL 以外的约束
ALTER TABLE 表名 MODIFY(
    字段名1 数据类型2 NOT NULL,
	字段名1 数据类型2 NOT NULL,
    ...
);
--若想添加NOT NULL 约束就必须通过修改表结构来进行
--若已经有违法约束条件的数据了,就不能添加此约束,必须先删除数据

删除约束

ALTER TABLE 表名 DROP CONSTRAINT 约束名称;
此作者没有提供个人介绍
最后更新于 2022-09-28