Oracle笔记--约束

Oracle约束

约束的概念:

  1. Oracle数据库使用约束(constraints)来防止无效的数据进入到表中,保护数据的实体完整性
  2. 通过约束,强制用户在插入、更新或删除数据时必须遵循一定的规则
  3. 约束可以在创建表的时候定义,也可以在表创建之后定义
  4. 不显式命名约束,Oracle数据库将用格式SYS_Cn产生一个名字,这里n 是一个唯一的整数,所以约束名是唯一的

主要约束

Not null 非空约束:指定字段不能包含空值。
Unique 唯一约束:指定字段的值(或字段组合的值)对于表中所有的值必须是唯一的,唯一键约束允许输入空值,且包含空值的行可以是任意数目,因为空不等于任何值
PRIMARY KEY 主键约束:每个表只能创建一个主键,主键是表的每一行的唯一性标识,该约束强制字段或字段组合的唯一性,并且确保作为主键的字段不能包含空值,对于一个主键字段,UNIQUE索引被自动创建。
FOREIGN KEY 外键约束: 指明一个字段或者字段的组合作为一个外键,这个外键和另一个表的主键(或唯一键)建立起一个关系。
一个外键值必须匹配一个在父表中存在的值,所以在子表中,不能在外键字段中输入一个没有引用的值;同时在父表中,不能删除这样的行,因为该行的主键正被子表所引用
CHECK 检查约束:是一种灵活的约束,定义每行都必须满足的条件一个字段可以定义多个CHECK约束

CHECK (字段 BETWEEN 100 and 9999)
CHECK (字段 in(‘男’,‘女’) )
check(字段 >= 30)

约束可以在两个级别上定义,分别是字段级别约束表级别约束,其中字段级别约束只涉及一个单个的字段,能够定义完整性约束的任何类型;而表级别约束涉及一个或多个字段,不能定义NOT NULL这个约束

字段级别约束

语法
create table	 表名(
       字段1	 primary key,
       字段2	 not null,
       字段3	 unique,
       字段4	 check(字段4 in('男','女')),
       字段5	 references 主表(字段)
)
实例
create table temp_it(
       eid varchar2(32) primary key,
       ename varchar2(32) not null,
       sex varchar2(2) check(sex in ('男','女')),
       idcard varchar2(18) unique,
       deptno number(2) references dept(deptno)
)

表级别约束

语法
create table 表名(
       字段1 ,
       字段2 not null,--非空约束只能设置在字段上
       字段3 ,
       字段4 ,
       字段5 ,
constraint 约束名 primary key(字段1,字段2),
constraint 约束名 unique(字段2,字段3),
constraint 约束名 check(字段4 in('男','女')),
constraint 约束名 foreign key(字段4,字段5) references 主表(字段1,字段2) ,
)
--外键指向主表的主键或者唯一键

注意 1.非空约束只能设置在字段上
2.外键指向主表的主键或者唯一键
3.当多字段共同组成主键时,必须使用表级别约束

实例
create table temp_it(
       eid varchar2(32),
       ename varchar2(32) not null,
       sex varchar2(2) ,
       idcard varchar2(18) ,
       deptno number(2),
       constraint eid_pk primary key(eid),
       constraint sex_ck check(sex in('男','女')),
       constraint idcard_uq unique(idcard),
       constraint deptno_fk foreign key(deptno) references dept(deptno) 
)

添加约束:表已建好

语法
ALTER TABLE 表名
	ADD	constraint 约束名 primary key(字段1,字段2)或
constraint 约束名 unique(字段2,字段3)或
constraint 约束名 check(字段4 in('男','女'))或
constraint 约束名 foreign key(字段4,字段5) references 主表(字段1,字段2) 

同表级别约束,创建约束时一样。

删除约束:表已建好

语法
 ALTER TABLE 表名
	DROP  PRIMARY KEY | UNIQUE(column) | CONSTRAINT 约束名  [CASCADE]     

CASCADE选项导致任何与其相依赖的约束也被删除
例:删除一个主键,如果有字表的外键依赖该主键,那外键也会一并删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值