oracle之约束解析

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;

你可能感兴趣的:(null,unique,primary,key,key,check,not,foreign)