《_oracle约束》由会员分享,可在线阅读,更多相关《_oracle约束(16页珍藏版)》请在金锄头文库上搜索。
1、 Oracle数据库设计与建模Oracle数据库设计与建模Oracle约束Oracle数据库设计与建模oracle提供5种约束1、非空(NOT NULL)约束:所定义的列决不能为空 2、唯一(UNIQUE)约束:在表中每一行所定义的该列 或该列的值不能相同 3、主键(PRIMARY KEY)约束:唯一标识表中的一行 4、外键(FOREIGN KEY)约束:用来维护子表和父表之 间的应用完整性 5、条件(CHECK)约束:表中每行都要满足该约束条件Oracle数据库设计与建模约束的定义强加在表上的规则或者条件,确保数据库满足业务规则,保证数据的完整性。当对表进行DML或者DDL操作时,如果此操作
2、会造成表中的数据违反约束条件或规则的话,系统会拒绝执行这个操作。Oracle数据库设计与建模约束的功能实现一些业务规则,防止无效的垃圾数据进入 数据库,维护数据库的完整性(也就是正确性和 一致性),从而使数据库的开发和维护都更加容 易Oracle数据库设计与建模完整性约束(主键约束)实现主键约束的两种常用方法:1、创建表的时候,在列中添加primary key2、在创建好的表中,通过关键字constraint为表中的某一列添加约束Oracle数据库设计与建模例1.1:create table A(id number(5) primary key,name varchar2(20);在创建表的时
3、候,在列中添加primary key(列级定义)完整性约束(主键约束)Oracle数据库设计与建模完整性约束(主键约束)在创建表的时候,在列中添加primary key(表级定义)例1.2:create table A(id number(5),name varchar2(20),constraint pk_a_id primary key(id);Oracle数据库设计与建模完整性约束(主键约束)在创建好的表中,通过constraint关键字为表中的某一列 添加约束。例2:alter table A add constraint PK_A_ID primary key(id)Oracle数据
4、库设计与建模外键约束引用完整性约束。例3: create table student( -学生表 s_id number(5) primary key, s_name varchar2(20), s_id varchar2(5), constraint fk_stu foreign key(c_id) references team(c_id) );create table class( -班级表 t_id varchar2(5) primary key, t_name varchar2(20) );Oracle数据库设计与建模外键约束note:1. 建外键的表具有子父关系,且外键建在子表中2
5、. 外键很好的保护两表之间的关系3. 外键值允许为空4. 插入有数据的值,外键中的值必须能够在父表中找到Oracle数据库设计与建模非空约束所约束的列不能为空例4. create table student(id number(5) primary key,name varchar2(20) not null);另一种实现非空约束的方式SQLalter table student modify name not null;Oracle数据库设计与建模唯一约束create table student(id number(2) primary key,name varchar2(10) uniqu
6、e -设置列“name”唯一约束另一种方式实现唯一约束SQLalter table student add constraint uk_stu unique(name);表中每一行所定义的该列或该列的值不能相同Oracle数据库设计与建模CHECK约束表中每行都要满足该约束条件。在一列上可以定义任意 多个条件约束。例6 创建一张文秘表,要求如下: (1)女性; (2)年龄1835岁之间Oracle数据库设计与建模CHECK约束create table clerk( id varchar2(5) primary key, name varchar2(20), age number, sex va
7、rchar2(2), constraint clerk_age_ck check(age between 18 and 35), constraint clerk_sex_ck check(sex=女) );Oracle数据库设计与建模查看有关约束信息1、利用数据字典user_constraints可以查看用户模式下的表的约束信息SQLselect owner,constraint_name,constraint_type,table_name2 from user_constraints;上述SQL语句可以查询出用户模式下每张表的约束情况2、利用数据字典user_cons_columns可以查看每张表定义的约束在哪一 列SQLcol column_name for a10;SQLcol owner for a10;SQLselect owner,constraint_name,table_name,column_name2 from user_cons_columns;