约束描述
定义规则,保证数据的完整;
约束分类
- 非空约束
- 检查约束
- 主键约束
- 外键约束
- 唯一约束
非空约束
在创建表时设置非空约束
语法:
CREATE TABLE table_name(
column_name datatype NOT NULL,...
);


在修改表时添加非空约束
语法:
ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
注:添加非空约束的字段不能有null数据存在。可先删除表中的数据。DELETE FROMM table_name;

在修改表时去除非空约束
语法:
ALTER TABLE table_name MODIFY column_name datatype NULL;

主键约束
作用:确保表当中每一行数据的唯一性,非空
一张表只能设计一个主键约束
主键约束可以由多个字段构成(联合主键或复合主键)
创建表时设置主键约束(列级)
CREATE TABLE table_name(
column_name datatype PRIMARY KEY,...
)

创建表时设置主键约束(表级)
CONSTRAINT constraint_name
PRIMARY KEY(column_name1,...)
如果忘记了约束名字?
数据字典:user_constraints 可以查看某个表中的主键约束信息。desc user_constraints
查看约束名字:
表名要大写。
系统自动生成的约束名字:

修改表时添加主键约束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name PRIMARY KEY(column_name1,...);

更改约束的名称
ALTER TABLE table_name
RENAME CONSTRAINT old_constraint_name TO new_constraint_name;

删除主键约束
禁用约束
ALTER TABLE table_name
DISABLE | ENABLE CONSTRAINT constraint_name

查看约束状态信息:

删除约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
还可以使用:
ALTER TABLE table_name DROP PRIMARY KEY [CASCADE];
[CASCADE]在级联操作中使用

外键约束
在创建表时设置外键约束(列级)
语法:
CREATE TABLE table1(
column_name datatype REFERENCES table2(column_name),...
);
其中table2为主表,table1为从表。
注意
(1)设置外键约束时,主表字段必须为该表的主键字段
(2)主从表中相应的字段必须是同一个数据类型
(3)从表中外键字段的值必须来自主表中相应字段的值,或者为null值


在创建表时设置外键约束(表级)
语法:
CREATE TABLE table_name(
column_name datatype,...,
CONSTRAINT constraint_name FOREIGN KEY(column_name)
REFERENCES table_name2(column_name)[ON DELETE CASCADE]
);
注意:
1、table_name2为主表名;
2、[ON DELETE CASCADE]表示级联删除的意思;
3、约束的名字也是唯一的。

在修改表时添加外键约束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY(column_name)
REFERENCES table_name(column_name) [ON DELETE CASCADE]

禁用外键约束
查看约束
语法:
select constrain_name,constraint_type,status from user_constraints
where table_name='XXXX';
status P代表主键 R代表外键

语法:
ALTER TABLE table_name
DISABLE|ENABLE CONSTRAINT fk_name;(enable恢复使用)

删除外键约束
语法:
ALTER TABLE table_name DROP CONSTRAINT pk_name;

唯一约束
1、作用:保证设置唯一约束的字段值的唯一性
2、唯一约束与主键约束的区别:
(1)主键约束的字段为非空的,而唯一约束只允许有一个值为null
(2)一张表只能有一个主键约束,而唯一约束可以有多个
在创建表时设置唯一约束(列级)
语法:
CREATE TABLE table_name(column_name datatype UNIQUE,...);

在创建表时设置唯一约束(表级)
语法:
CREATE TABLE table_name(
column_name datatype,...,
CONSTRAINT u_name
UNIQUE(column_name)
);

注意:
(1)唯一约束的名称(u_name)必须唯一;
(2)如果想设置多个唯一约束字段,需要将子句(CONSTRAINT u_name UNIQUE(column_name))重复书写即可。
在修改表时添加唯一约束
语法:
ALTER TABLE table_name ADD CONSTRAINT u_name UNIQUE(column_name);

禁用唯一约束
语法:
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT u_name;

删除唯一约束
语法:
ALTER TABLE table_name DROP CONSTRAINT u_name;

检查约束
1、作用:让表中的值更具有实际意义。
注:检查约束在一张表中也是可以有多个的。
在创建表时设置检查约束(列级)
语法:
CREATE TABLE table_name(
column_name datatype CHECK(expressions),...
);

在创建表时设置检查约束(表级)
语法:
CREATE TABLE table_name(
column_name datatype,...,
CONSTRAINT c_name CHECK(expressions)
);

在修改表时添加检查约束
语法:
ALTER TABLE table_name ADD CONSTRAINT ck_name CHECK(expressions);

禁用检查约束
语法:
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT ck_name;

删除检查约束
语法:
ALTER TABLE table_name DROP CONSTRAINT ck_name;

约束小结



本文详细介绍了数据库中的各种约束,包括非空约束、主键约束、外键约束、唯一约束及检查约束等。每种约束都提供了具体的创建、修改、禁用和删除的方法。
1万+

被折叠的 条评论
为什么被折叠?



