Oracle数据库表的约束
1、主键约束;
在数据库的表中,从理论上说,任何表都应该有一个主键约束;
特点:
1、 非空;
2、 唯一;
种类;
1、 自然主键;整数或字符串类型充当;
2、 业务主键;自增的整数或特定格式字符串;
在Oracle中,用自增整数做为主键,用序列(sequence)对象充当;



2、唯一性约束(Unique);
这也是单表约束中的一种,是单表约束中最简单的;在唯一性方面与主键相同,只有一点不同,唯一性约束列,支持可空(当然最多只能有一行);


3、继续向表中添加毛巾商品;因为商品名称已经存在,所以会出现如下异常情况;
在表的约束中,主键约束有且只能有一个,而其他类型的约束设置,则根据具体需要,不限;


4、默认约束(default);
默认约束也是用来限制列数据,以保证安全性的;在向表中添加记录时,如果没有显式提供数据,则在行记录中以默认的值(建表时设置好的或建表后追加的)填充;如果显式提供了有效值,则以提供的值为主,此时默认值无效;


5、检查约束(check)
用在表某列上,用于限制列数的有效性,数据范围;
数据范围有两种情况;
1、 可用区间表示的范围;
建students表,学生年龄限制在[16,30]之间,在年龄列设置检查约束;


6、单表约束;
a) 非空和可空约束;not null/null;不涉及列内容的有效性,只是说必须填写或不需要填写;
b) 主键约束;Primary key;
i. 在数据库中,理论上任何表都应该有主键约束;
ii. 主键分类;
1. 自然主键;抽象出来的列中,某列或某几列可以设置为主键;其余列与主键列有依赖关系;
2. 业务主键;其他列与主键列没有直接关联关系;规律性自增的整数及特定字符串;
iii. 主键列的要求:
1. 非空;
2. 唯一;
iv. 表中有且只有一个主键;
c) 唯一性约束;unique;
i. 抽象出来的列,不重复,只支持一行中的该为空值;
ii. 要求:唯一;
d) 默认约束;default;
i. 没有显式提供数据插入时,以默认值填充;当显式提供数据时,以提供数据为主,此时默认值无效;
ii. 默认值的分类;
1. 静态固定值;如“男”,“女”等;
2. 动态变化值;如sys_guid(),sysdate等;
iii. 与其他约束不同的是,在向表中追加默认约束,不是简单的add,而是通过modify完成;
e) 检查约束;check;
i. 在所有单表约束是最复杂的一个,它是用来限制列数据的有效范围,以最大限度的保证列数据的有效;
ii. 两种情况;
1. 可用数学区间表示的范围;闭区间:[a,b]= age>=a and age<=b = between a and b;
2. 多个可选值处于平等地位,不能用区间表示;in子句:in(‘男’,’女’);


