约束分为六种:数据类型,非空约束,唯一约束,主键约束,检查约束,外键约束。
一.非空约束(NOT NULL, NK)--某列不允许出现NULL值
字段 字段数据类型 NOT NULL
例:
mid NUMBER NOT NULL;
二.唯一约束(UNIQUE, UK)--某列不允许出现重复值,NULL不算在重复里面
CONSTRAINT uk_email UNIQUE(email);
三.主键约束(PRIMARY KEY, PK)--不允许重复也不允许为NULL
CONSTRAINT pk_mid PRIMARY KEY(mid);
四.检查约束(CHECK KEY , CK)--在更新操作前设置一些过滤调价,满足条件的可以更新
CONSTRAINT ck_age CHECK(age BETWEEN 0 AND 250);
五.外键约束(FOREIGN KEY, FK)--作用在两个表中,外键关联指的是子表中的某列内容的数据范围要受到父表中的某列的限制。
外键约束是在子表中添加。
CONSTRAINT fk_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno);
外键约束的几个限制:
限制1:如果表中存在外键关系,在删除父表的时候要先删除子表。
如果存在两个表中有交叉的外键关系,可以进行强制删除。
DROP TABLE member CASCADE CONSTRAINT;
限制2:父表中作为子表关联的外键字段,必须设置为主键约束或者是唯一约束
限制3:默认情况如果父表记录中有对应的子表记录,则父表无法被删除(指的是删除某条记录而不是某个字段)
级联删除:(ON DELETE CASCADE)指的是删除父表的数据时,子表的数据也自动删除掉
CONSTRAINT fk_mid FOREIGH KEY(mid) REFERENCES member(mid) ON DELETE CASCADE;
级联更新:(ON DELETE SET NULL)父表的数据被删除的时候,子表对应的内容设置为NULL
CONSTRAINT fk_mid FOREIGH KEY(mid) REFERENCES member(mid) ON DELETE SET NULL;
约束修改--建立数据表的时候要同时建立好约束,约束在使用中不要有任何修改
1.为表增加约束
ALTER TABLE member ADD CONSTRAINT pk_mid PRIMARY KEY(mid); --增加非空约束只有下面一种方法 ALTER TABLE member MODIFY(name VARCHAR2(20) NOT NULL);
2.为表删除约束
ALTER TABLE member DROP CONSTRAINT pk_mid;
特别注意:
1.约束在定义表的时候就要定义好,并且要设定约束名称
2..约束的修改不要在开发中去使用