oracle之约束解析

来源:互联网 发布:php 检验日期格式 编辑:程序博客网 时间:2024/05/16 15:56

oracle的约束主要作用是进行表面数据校验,保证数据的完整性。

主要有以下五类约束:

not null (非空)

unique(唯一键)

primary key  (主键)

foreign key  (外键)

check  (检查)

注意:约束可以用在表级或列级


1.建表的时候就建立约束

主键约束(primary key):非空,唯一

create table mytest(  id number(11) primary key,--指明主键约束  name varchar2(10),  age number(3));<pre name="code" class="sql">create table mytest(  id number(11) primary key,    name varchar2(10),  age number(3),  constraint my_id primary key(id)--指明主键约束 );<pre name="code" class="sql"><pre name="code" class="sql">create table mytest(  id number(11) primary key,    name varchar2(10),  age number(3),  constraint my_id primary key(id,name)--创建联合主键 );


非空约束(not null):指定字段不能插入空值,只能用于字段级定义

create table mytest(  id number(11) primary key,--指明主键约束  name varchar2(10) not null,--非空约束,不能插入非空数据  age number(3));

唯一约束(unique):

唯一约束用于保证数据不重复;

唯一约束可以为空;

唯一约束创建唯一索引;

唯一约束可以在表级,也可以在字段级;

create table mytest1(  id number(11) unique,--创建唯一约束  name varchar2(10) not null,  age number(3));create table mytest2(  id number(11),  name varchar2(10) not null,  age number(3),  constraint my_id unique(id)--创建唯一约束  );
外键约束(foreign key):

明确指明两表之间字段的关联参考关系;

外键参考的字段必须为另一个表的主键,或唯一键;

create table empinfo(  eid number(3) primary key,  ename varchar2(20),  job varchar2(20),  birth date);create table salary(  eid number(3),  basic_salary number(8,2),  job_allowance  number(8,2),  travelling_allowance number(8,2),  personal_income_tax number(8,2),  constraint salary_eid_fk foreign key(eid) references empinfo(eid));

检查约束(check):

字段级定义;每次插入值时必须满足检查表达式;

create table mytest(  id number(3) primary key,  name varchar2(20),  age number(3) check(age >0 and age <=130)--检查约束,年龄大于0小于等于130);


2.建表后添加约束

以上讨论的是建表的时候就把约束添加完成,但是,有时我们想修改,变动约束,就需要在建立后做手脚。

create table mytest(  id number(3),  name varchar2(20),  age number(3));--添加约束alter table mytest add constraint my_pk_id primary key(id);--禁用约束alter table mytest disable constraint my_pk_id;--启用约束alter table mytest enable constraint my_pk_id;--删除约束alter table mytest drop constraint my_pk_id;--修改约束alter table mytest modify name varchar2(20) not null;

0 0
原创粉丝点击