欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-21 15:02:40
...

约束描述

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

约束分类

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

非空约束

在创建表时设置非空约束

语法:

CREATE TABLE table_name(
    column_name datatype NOT NULL,...
);

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

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

在修改表时添加非空约束

语法:

ALTER TABLE table_name MODIFY column_name datatype NOT NULL;

注:添加非空约束的字段不能有null数据存在。可先删除表中的数据。DELETE FROMM table_name;

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

在修改表时去除非空约束

语法:

ALTER TABLE table_name MODIFY column_name datatype NULL;

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

主键约束

作用:确保表当中每一行数据的唯一性,非空

  • 一张表只能设计一个主键约束

  • 主键约束可以由多个字段构成(联合主键或复合主键)

创建表时设置主键约束(列级)

CREATE TABLE table_name(
    column_name datatype PRIMARY KEY,...
)

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

创建表时设置主键约束(表级)

CONSTRAINT constraint_name
PRIMARY KEY(column_name1,...)

Oracle数据库开发必备利器之SQL基础——约束
如果忘记了约束名字?
数据字典:user_constraints 可以查看某个表中的主键约束信息。desc user_constraints

Oracle数据库开发必备利器之SQL基础——约束
查看约束名字:
表名要大写。
Oracle数据库开发必备利器之SQL基础——约束
系统自动生成的约束名字:
Oracle数据库开发必备利器之SQL基础——约束

修改表时添加主键约束

ALTER TABLE table_name 
ADD CONSTRAINT constraint_name PRIMARY KEY(column_name1,...);

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

更改约束的名称

ALTER TABLE table_name 
RENAME CONSTRAINT old_constraint_name TO new_constraint_name;

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

删除主键约束

禁用约束

ALTER TABLE table_name 
DISABLE | ENABLE CONSTRAINT constraint_name

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

查看约束状态信息:
Oracle数据库开发必备利器之SQL基础——约束

删除约束

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

Oracle数据库开发必备利器之SQL基础——约束
还可以使用:

ALTER TABLE table_name DROP PRIMARY KEY [CASCADE];

[CASCADE]在级联操作中使用

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

外键约束

在创建表时设置外键约束(列级)

语法:

CREATE TABLE table1(
    column_name datatype REFERENCES table2(column_name),...
); 

其中table2为主表,table1为从表。

注意
(1)设置外键约束时,主表字段必须为该表的主键字段
(2)主从表中相应的字段必须是同一个数据类型
(3)从表中外键字段的值必须来自主表中相应字段的值,或者为null值

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

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

在创建表时设置外键约束(表级)

语法:

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、约束的名字也是唯一的。

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

在修改表时添加外键约束

ALTER TABLE table_name 
ADD CONSTRAINT constraint_name 
FOREIGN KEY(column_name) 
REFERENCES table_name(column_name) [ON DELETE CASCADE]

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

禁用外键约束

查看约束
语法:

select constrain_name,constraint_type,status from user_constraints
where table_name='XXXX';

status P代表主键 R代表外键

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

语法:

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

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

删除外键约束

语法:

ALTER TABLE table_name DROP CONSTRAINT pk_name;

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

唯一约束

1、作用:保证设置唯一约束的字段值的唯一性
2、唯一约束与主键约束的区别:
(1)主键约束的字段为非空的,而唯一约束只允许有一个值为null
(2)一张表只能有一个主键约束,而唯一约束可以有多个

在创建表时设置唯一约束(列级)

语法:

CREATE TABLE table_name(column_name datatype UNIQUE,...);

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

在创建表时设置唯一约束(表级)

语法:

CREATE TABLE table_name(
    column_name datatype,...,
    CONSTRAINT u_name
    UNIQUE(column_name)
);

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

注意:
(1)唯一约束的名称(u_name)必须唯一;
(2)如果想设置多个唯一约束字段,需要将子句(CONSTRAINT u_name UNIQUE(column_name))重复书写即可。

在修改表时添加唯一约束

语法:

ALTER TABLE table_name ADD CONSTRAINT u_name UNIQUE(column_name);

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

禁用唯一约束

语法:

ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT u_name;

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

删除唯一约束

语法:

ALTER TABLE table_name DROP CONSTRAINT u_name;

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

检查约束

1、作用:让表中的值更具有实际意义。
注:检查约束在一张表中也是可以有多个的。

在创建表时设置检查约束(列级)

语法:

CREATE TABLE table_name(
    column_name datatype CHECK(expressions),...
);

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

在创建表时设置检查约束(表级)

语法:

CREATE TABLE table_name(
    column_name datatype,...,
    CONSTRAINT c_name CHECK(expressions)
);

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

在修改表时添加检查约束

语法:

ALTER TABLE table_name ADD CONSTRAINT ck_name CHECK(expressions);

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

禁用检查约束

语法:

ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT ck_name;

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

删除检查约束

语法:

ALTER TABLE table_name DROP CONSTRAINT ck_name;

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

约束小结

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

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