oracle数据库的条件约束

oracle表的约束类别有,主键约束、唯一约束、检查约束、外键约束、和空/非空约束五种:

主键约束特点:

1.定义主键,起唯一标识作用,其值不能为空,也不能重复

2.一个表中只能定义一个主键约束

3.建立主键约束的同时,在该列上建立一个唯一性索引,可以为它制定存储位置和存储参数

4.主键约束既可以是列约束,也可以是表级约束

唯一性约束:

1.定义为唯一性的某一列或多个列的组合的取值必须唯一

2.如果某一列或多个列仅定义唯一性约束,而没有定义非空约束,则该约束列可以包含多个空值

3.oracle自动在唯一性约束列上建立一个唯一性索引,可以为它指定存储位置和存储参数

4.唯一性约束既可以是列级约束,也可以是表级约束

检查约束特点:

1.检查约束是用来限制列的取值范围的,其表达式中必须引用相应的列,并且表达式的计算结果必须是一个布尔值

2.约束表达式中不能包含子查询,也不能包含sysdate,user,等sql函数和rowid,rownum等伪列

3.一个列可以定义多个检查约束

4.检查约束既可以是列级约束,也可以是表级约束

外键约束特点:

1.定义外键约束的列的取值要么是主表参照列的值,要么为空

2.外键列只能参照于主表中的主键约束或唯一约束列

3.可以在一列或多列组合上定义外键约束;

4.外键约束既可以是列级约束,也可以是表级约束

空/非空约束特点:

1.在一个表中可以定义多个not null约束

2.只能定义列级约束

举例说明上面五种约束的用法:

SQL>create table student(

        sno  number(6)  constraint s_pk primary key,

        sname   varchar2(10)  not null,

        sex char(2)  constraint s_ck1 check(sex in ('M','F')),

        sage number(6,2),

        constraint  s-ck2 check(sage between  18 and 60),

);

说明:

在sno列上创建了一个名为s_pk的主键约束,为列级约束

在sname列上创建了一个非空约束,系统自动命名,为列级约束

在sex列上创建了一个检查约束,名为s_ck1,为列级约束,sex列取值只能为‘M’或‘F’

在sage列上创建了一个检查约束,名称为s_ck2,为表级约束,sage列取值范围为18到60之间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值