欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

plsql字段约束

程序员文章站 2022-06-10 07:53:18
第五章 字段约束 初识约束 约束是数据库用来确保数据满足业务规则的手段,对数据做的条件限制。 约束的类型 1. 主键约束(PRIMARY KEY) 2. 唯一性约束(UNIQUE) 3. 非空约束(NOT NULL) 4. 检查约束(CHECK) 5. 外键约束(FOREIGN KEY) 主键约束( ......

第五章  字段约束

 

初识约束

  约束是数据库用来确保数据满足业务规则的手段,对数据做的条件限制。

 

约束的类型

1. 主键约束(primary key)

2. 唯一性约束(unique)

3. 非空约束(not null)

4. 检查约束(check)

5. 外键约束(foreign key)

 

 

主键约束(primary key)

  1. 非空加唯一约束;

  2. 一个表只有一个主键;

  3. 主键会默认加索引;

student_id number primary key

 

alter table student add constraint stu_id_pk primary key(stu_id);

 

唯一性约束(unique)

对于unique约束来讲,索引是必须的。如果不存在,就自动创建一个(unique的唯一性本质上是通过索引来保证的)

unique允许null值,unique约束的列可存在多个null。这是因为,unique唯一性通过btree索引来实现,而btree索引中不包含null。所以,这也造成了在where语句中用null值进行过滤会造成全表扫描。

student_num  number unique

alter table table_name add constraint student_code_uq unique(student_num);

删除约束

alter table table_name drop constraint constraint_name;

 

非空约束(not null)

   非空约束作用的列也叫强制列。顾名思义,强制键列中必须有值,当然建表时候若使用default关键字指定了默认值,则可不输入。

score_name varchar2(32) not null

 

alter table table_name modify student_name not null;

 

检查约束(check)

检查约束可用来实施一些简单的规则,比如列值必须在某个范围内。检查的规则必须是一个结果为true或false 的表达式

student_sex    varchar2(1) check(student_sex in('男','女')),

alter table student add constraint stu_sex_ck check(stu_sex in('男','女'));

 

score_value number check(score_value between 0 and 100)

 

alter table student add constraint stu_age_ck check(stu_age between 1 and 100);

 

外键约束(foreign key)

  外键约束定义在具有父子关系的子表中,外键约束使得子表中的列对应父表的主键列,用以维护数据库的完整性。不过出于性能和后期的业务系统的扩展的考虑,很多时候,外键约束仅出现在数据库的设计中,实际会放在业务程序中进行处理。外键约束注意以下几点:

  1. 外键约束的子表中的列和对应父表中的列数据类型必须相同,列名可以不同
  1. 对应的父表列必须存在主键约束(primary key)或唯一约束(unique)
  2. 外键约束在子表里,外键的取值范围不能大于父表键值
  3. 如果想删除主表的主键,需要先删除子表的关联字段

student_num  number references table_name(student_num)

 

alter table student add constraint tea_id_fk foreign key(tea_id) references teacher (tea_id);

 

注意:

不过在真正的企业开发中,除了主键约束这类具有强需求的约束,像外键约束,检查约束更多时候仅仅出现在数据库设计阶段,真实环境却很少应用,更多是放到程序逻辑中去进行处理。