Oracle数据库:如何创建约束及创建约束的SQL语句,正则约束的SQL语句

时间:2024-04-01 20:13:21

Oracle数据库中的约束有五种约束,分别是:

实体完整性:主键约束、唯一性约束(可以为空)

域完整性:check约束

引用完整性:Foreign KEY约束

默认约束(默认值)

SQL语句创建约束需要一个关键字:Costraint

Oracle数据库:如何创建约束及创建约束的SQL语句,正则约束的SQL语句

Oracle数据库:如何创建约束及创建约束的SQL语句,正则约束的SQL语句

创建、删除约束的SQL语句:

表名是test
1、添加主键约束(非空,不重复)(给test表的id这一列添加主键约束)

alter table test add constraint test_pk primary key(id)

2、添加唯一性约束(不重复,可以为空)(给test表name这一列添加唯一性约束)

alter table test add constraint test_unique_name unique(name)

3、添加外键约束(保证外键的值取关联表里关联字段的值)(给表test的列cus_no设为外键,关联表cus_info的列cus_no)

alter table test add constraint test_cus_no_fk_1  foreign key(cus_no) references cus_info (cus_no)

4、完整性约束(代表一个字段或者多个字段的取值是有限定范围的)

alter table test add constraint test_name_check check(name in ('a','b','c') )

5、 删除约束
alter table test drop constraint test_unique_name
6、 修改约束名称
alter table test rename constraint test_name_check to test_name_check2
7、禁用约束
alter table test disable constraint test_name_check2
8、启用约束
alter table test enable constraint test_name_check2

关于check约束的一些练习:

1、性别只能是男和女

alter table cus_linkman add constraint lkm_sex_check check(lkm_sex in ('男','女'));


2、手机号必须是11位数字,开头是1
alter table cus_linkman 

add constraint lkm_mobile_check check(REGEXP_LIKE(lkm_mobile,'[1][1234567890]{10}'));

3、电话号码必须是(010)-1234567,区号3,4位,座机号7,8位
alter table cus_linkman
add constraint lkm_tel_check 
check(REGEXP_LIKE(lkm_tel,'\([0][1234567890]{2,3}\)-[1234567890]{7,8}'));

4、验证必须是电话号码:例:(010)-6666666
alter table test2 
add constraint test2_check
check(REGEXP_LIKE(test,'\([0][0123456789]{2,3}\)-[0123456789]{7,8}'))