Oracle 学习笔记(三)

来源:互联网 发布:华大基因 待遇 算法 编辑:程序博客网 时间:2024/06/01 09:14

约束:

定义规则,确保数据完整性、规范性

1、非空约束

注意:非空约束尽可以列级添加,不可表级添加

在创建表时添加非空约束

create table table_name

(column1 datatype not null,

 ... ...);

在修改表时添加非空约束

alter table table_name

modify column1 datatype not null;

注意:在添加非空约束前要保证该字段当前无空值

去除非空约束

alter table table_name

modify column1 datatype null;

2、主键约束

注意:每张表只能存在一个主键约束,但可以由多个字段构成

在创建表时添加主键约束(列级)

create table table_name

(column1 datatype PRIMARY KEY,

 ... ...

);

在创建表时添加主键约束(表级)

create table table_name

(column1 datatype,

 ... ...

CONSTRAINT constraint_name

PRIMARY KEY(column1,column2,...)

);

在修改表时添加主键约束

alter table table_name

add constraint constraint_name

primary key(column1,column2,...);

注意:在添加主键约束前需保证被设为主键的字段不为空且值唯一

查看约束

desc user_constrains

select constraint_name

from user_constraints

where table_name='XXXX';

更改约束名称

alter table table_name

rename constraint name_old to name_new;

禁用/启用主键约束

alter table table_name

disable/enable constraintconstraint_name;

查看约束状态

select constraint_namestatus

from user_constraints

where table_name='XXXX';

删除主键约束

alter table table_name

drop constraint constraint_name;

alter table table_name

drop primary key [cascade(如存在外键约束,则可将其他表中依赖于该约束的外键约束一并去除)]

3、外键约束

说明:外键约束时唯一涉及到两个表的约束

创建表时添加外键约束(列级)

create table table_name(从表)

(column1 datatype references

table2_name(主表) (column1_name),

... ...

)

注意:

(1)添加外键时,主表的字段必须是主键;

(2)主从表的相应字段数据类型要一致(字段名可不同);

(3)向设置了外键约束的表中插入值时,必须来自于主表中相应字段的值,或者null。

创建表时添加外键约束(表级)

create table table_name

(column1 datatype,

column2 datatype,

... ...

constraint constraint_name

foreign key(column_name) perefences

table_name(主表) (column_name)[on delete cascade](级联删除:主表中一条数据被删除,从表中引用该数据的行也会被删除)

)

修改表时添加外键约束

alter table table_name

constraint constraint_name

foreign key (column1_name) perefences

table_name(主表) (column2_name)[on delete cascade]

禁用/启用外键约束

alter table table_name

disable/enable constraintconstraint_name;

删除外键约束

alter table table_name

drop constraint constraint_name;

4、唯一约束

说明:保证表中值的唯一性

与主键约束的区别:主键约束每张表中只能有一个,唯一约束可以有多个,且允许有一个空值

在创建表时添加唯一约束(列级)

create table table_name

(column1_namedatatype unique,

 ... ...

)

在创建表时添加唯一约束(表级)

create table table_name

(column1_name datatype,

... ...

constraint constraint_name

unique(column1_name)

)

在修改表时添加外键约束

alter table table_name

add constraint constraint_name

unique(column1_name);

禁用/启用唯一约束

alter table table_name

disable/enable constraintconstraint_name;

删除唯一约束

alter table table_name

drop constraint constraint_name;

5、检查约束

说明:使表中的数据更具有实际意义

在创建表时添加检查约束(列级)

create table table_name

(column1_namedatatype check(expressions);

... ...

)

在创建表时添加检查约束(表级)

create table table_name

(column1_namedatatype,

... ...

add constraint constraint_name

check(expressions)

)

在修改表时添加检查约束

alter table table_name

add constraint constraint_name

check(expressions);

禁用/启用检查约束

alter table table_name

disable/enable constraintconstraint_name;

删除检查约束

alter table table_name

drop constraint constraint_name;


原创粉丝点击