Oracle中的约束

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值