约束
添加约束条件
多个检查条件都违反约束,将一个一个检查,所以约束条件越多效率越慢
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 约束名称;
Comments NOTHING