Oracle数据库开发必备利器之SQL基础——约束

约束描述

定义规则,保证数据的完整;

约束分类

  • 非空约束
  • 检查约束
  • 主键约束
  • 外键约束
  • 唯一约束

非空约束

在创建表时设置非空约束

语法:

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;

这里写图片描述

约束小结

这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/cckevincyh/article/details/80833508
今日推荐