Oracle中的约束

来源:互联网 发布:阿里云的天池数据赛 编辑:程序博客网 时间:2024/05/17 00:02

Oracle中的约束分为六大约束:primary key(主键);foreign key(外键);not null(非空);check(检查);default(默认);unique(数据唯一)。

1、primary key(主键):
1)、一个表只能有一个主键约束。
2)、主键可以是一个字段,也可以是多个字段。
3)、其所有的字段都不能为空(not null)、插入值不能重复。
4)、主要用于帮助我们去操作和管理表。
创建表的时候–建主键
1)、一个字段作为主键:

create table 表名(  字段名1 数据类型(长度) primary key,  字段名2 数据类型(长度),  字段名3 数据类型(长度));

2)、多个字段作为主键:

create table 表名(   字段名1 数据类型(长度),   字段名2 数据类型(长度),   primary key( 字段名1,字段名2),   字段名3 数据类型(长度));

3)、使用constraint给主键起别名:

create table 表名(   字段名1 数据类型(长度),   字段名2 数据类型(长度),   constraint 名字 primary key( 字段名1,字段名2),   字段名3 数据类型(长度));

4)、表已创建–加主键:

alter table 表名 add primary key(字段名1,字段名2...字段名n);

5)、主键重命名:

alter table 表名 rename constraint 原主键名 to 新主键名;

6)、删除一个主键:

alter table 表名 drop primary key【或者 constraint 主键名】;

7)、改变主键的状态:enable 有效状态 ;disable 无效状态

alter table 表名 disable primary key【或者 constraint 主键名】;

2、foreign key(外键):
1)、外键是维护参照完整性的重要手段。
2)、用来操作多表,建立多表之间的联系,在一个表中建立查询另一个表的条件。
3)、保证主表的某个字段取值与另一个数据表的主键字段相对应,不允许无参照取值出现。
4)、外键引用的必须是另一个表的主键。
创建表的时候–建外键:
主表:

create table1(   字段名1 数据类型(长度) primary key,   字段名2 数据类型(长度),   字段名3 数据类型(长度));

子表:

create table2(   字段名01 数据类型(长度)【constraint 外键名称】references1(字段名1) on deletecascade/set null】,   字段名02 数据类型(长度),   字段名0n 数据类型(长度));

—constraint 给外键命名,如果不操作,Oracle会自动命名。
—references 外键需要引用的表的字段名称。
—on delete 设定外键的主键被删除的时候,外键是否被删除?如果用cascade则外键也被删除,如果使用set null则外键会变为空。
1)、表已创建–建外键:

alter table 表名 addconstraint 外键名称】 foreign key(字段名(属于表2)) references 表名1(字段名(主键)) on deletecascade/set null】;

2)、改变外键的状态:enable 有效状态 ;disable 无效状态

alter table 表名 disable foreign key 或者【constraint 外键名】;

3)、外键重命名

alter table 表名 rename constraint 原外键名 to 新外键名;

4)、删除外键:

alter table 表名 drop constraint 外键名;

3、not null(非空):
—该字段值不允许出现空值null。
1)、创建表时–加not null

create table 表名(   字段名1 数据类型(长度) primary key,   字段名2 数据类型(长度) not null,   字段名3 数据类型(长度));

2)、表创建以后加入not null约束

alter table 表名 modify(字段名 not null);

4、check(检查):
1)、检查插入数据是否满足我们的要求,满足则可以插入。
2)、可以插入空值null。
3)、创建检查约束:

create table 表名(    字段1 数据类型(长度)primary key,      字段2 数据类型(长度)check(字段名2 in('值1','值2')),       字段3 数据类型(长度));

4)、建表以后创建check束:

alter table 表名 add constraint 约束名 check(字段名2 in('值1','值2');

5)、删除:

alter table 表名 drop constraint 约束名; 

5、default(默认):
1)、建表时创建default约束:

create table 表名(    字段1 数据类型(长度)primary key,      字段2 数据类型(长度)check(字段名2 in('值1','值2')),        字段3 数据类型(长度)default 值,         字段4 数据类型(长度)    );

2)、创建表之后创建约束:

alter table 表名 modify 字段名 default 值;

6、unique((UK)数据唯一):
1)、字段数据唯一,不重复,允许为空。
2)、与not null连用相当于primary key(主键)。
3)、建表时创建UK约束:

create table 表名(      字段1 数据类型(长度) primary key,      字段2 数据类型(长度) unique,      字段3 数据类型(长度));

4)、表创建了以后加入约束:

alter table 表名  add constraint 名称 unique(字段名);

5)、删除:

alter table 表名 drop constraint 名称;
0 0