日期:2014-05-16 浏览次数:20452 次
在上一个章节中,说了一些表的基本操作,现在今天我们来看看表中一些特别有用的东东。在我们项目开发中,为了防止用户向表中添加不符合语义的数据,比如一个时间字段,你肯定不能往里面填非时间字段的数值。这里就会用到我们今天讲的的完整性约束咯。
完整性约束指的是数据库中数据的正确性和相容性。主要指下面的:
在Oracle中,使用constraint(英文的意思就是约束)关键字 为约束命名。如果用户没有命名,那么系统会自动会用户创建的约束命名。
OK,那我们接着就详细讲讲这些。
从字面很好理解,就是非空约束,表示某些列的值不可缺少的,在插入数据的时候,如果没有为它赋值,那么会提示错误。
这个很简单,我们在先前的实例中就有很多这样的例子,如下表:
不在细说。
语法如下:
alter table 表名 modify 列名 not null
很好理解,如下:
语法如下:
alter table 表名 modify 列名 null
主键约束在表中定义一个主键来唯一确定表中每一行数据的标识符。
NOTE:一个表中 只能定义一个primary key 约束(注意,但是可以有多个字段为primary key)。
Oracle 会主动的为具有primary key约束的列建立一个唯一索引。
语法:
alter table 表名 add constraint 自定义约束名 primary key(列名);
如果是添加匿名约束,那么就不需要在上面指定constraint关键字了,系统会自动的创建。
如果你在插入数据的时候,插入了相同的值,就会报错,如下:
删除约束,也很简单哦!~,可能聪明的你已经猜出咯呀。。
语法:
alter table 表名 drop constraint 约束名
按照字面的意思是说,唯一性,也很好理解,就是指该列中不能包含有重复的值。
如果想在新建了table之后,在进行添加unique的约束,和上面的一样,语法如下:
alter table 表名 add unique(列名)
所谓的Chck约束至的是检查性约束,使用CHECK约束时,将对输入的每一个数据进行检查,只有符合条件的记录才会保存到表中。
上面我们检查了学生表中的年龄不能小于0,如果小于0 则会报错!。
如果想在新建了table之后,在进行添加check的约束,和上面的一样,语法如下:
alter table 表名 add constraint 约束名 check(列名+条件)
如果要删除check约束,也很简单哦,只需要如下操作:
alter table 表名 drop constraint 约束名
指的是外键约束,外键指的是引用另外一个表中的某一列或几列的值。
1.囚为某列定义了foreign key约束,则该列的取值只能是引用表的值或者是null
2.可以在一个表中为多个列设置foreign key