码迷,mamicode.com
首页 > 数据库 > 详细

Oracle--约束

时间:2020-03-03 15:00:00      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:ide   otto   reference   sele   constrain   margin   enable   uniq   column   

为什么要有约束

  约束可以限制数据不超出范围,可以更好的保证数据库中数据的完整性。

分类:

  1.主键约束

  2.唯一约束

  3.检查约束

  4.非空约束

  5.外键约束

  6.默认约束

1-主键约束:primary key

  主键表示是一个唯一的标识,本身不能为空。

CREATE TABLE person
(
              ---主键约束
pid VARCHAR2(18) primary key,
name VARCHAR2(200) ,
age NUMBER(3) ,
birthday DATE ,
sex VARCHAR2(3)  DEFAULT  
) ;
CREATE TABLE person
(
              ---主键约束
pid VARCHAR2(18) ,
name VARCHAR2(200) ,
age NUMBER(3) ,
birthday DATE ,
sex VARCHAR2(3)  DEFAULT  ,
--CONSTRAINT 约束名  约束类型 [值]    
constraint pid_key primary key (pid)
);
--修改表结构添加约束
alter table person add constraint pid_key primary key (pid);

2-唯一约束:unique

  在一个表中只允许建立一个主键约束,而其他列不希望出现重复值的话,则就可以使用唯一约束。一张表中的唯一约束可以有多个, 并且允许有空值,空值只能有一个。

--唯一约束
/*UNIQUE
    表示一个字段中的内容是唯一的,其他列不允许重复。*/
    create table person
(
  pid varchar2(18),
  name varchar2(200) unique not null,
  age number not null,
  birthday date,
  sex varchar2(3) default ,
 constraint person_pid_pk  primary key (pid),
 constraint person_pid_uk  unique(name)
)

3-检查约束:check

  检查一个列的内容是否合法

    例如:年龄,只能在0~150 ?

    例如:性别,只能是男、女

-- check 检查约束
/*使用检查约束来判断一个列中插入的内容是否合法,例如:年龄的取值范围、性别的取值范围。*/
create table person
(
  pid varchar2(18),
  name varchar2(200) not null,
  age number not null check (age between 0 and 120) ,
  birthday date,
  sex varchar2(6) default  check (sex in (,,不详)) , 
 constraint person_pid_pk  primary key (pid),
 constraint person_pid_uk  unique(name)
)

4-非空约束:not null

  字段里面的内容就不能为空。

create table person
(
  pid varchar2(18),
  name varchar2(200) not null,
  age number not null,
  birthday date,
  sex varchar2(3) default ,
 constraint person_pid_pk  primary key (pid)
)

 

5-外键约束:foreign key

  在两张表中进行约束操作。

create table book
(
   bid number primary key ,
   bname varchar(30),
   bprice number(5,2),
   pid varchar2(18)  references person(pid)  -- 外键
                     --参照               主表    主键
)
create table book
(
   bid number primary key ,
   bname varchar(30),
   bprice number(5,2),
   pid varchar2(18)  , -- 外键
                                       --参照               主表    主键                
   constraint p_b_pid_pk foreign key (pid) REFERENCES  person (pid)                  
)
--alter
alter table book add constraint p_b_pid_pk foreign key (pid) REFERENCES  person (pid) ; 

 

6-默认约束:default

 

默认约束也是用来限制列数据

create table person
(
  pid varchar2(18),
  name varchar2(200) not null,
  age number not null,
  birthday date,
  sex varchar2(3) default ,
 constraint person_pid_pk  primary key (pid)
)

--锁定约束

alter table person1 disable constraint person1_name_uq;

--解除约束

alter table person1 enable constraint person1_name_uq;

--查询数据字典视图

--查询数据字典视图user_constraints 1
select constraint_name,constraint_type
from user_cons_columns where table_name = test2;

 

 

create table person(  pid varchar2(18),  name varchar2(200) not null,  age number not null,  birthday date,  sex varchar2(3) default ‘男‘, constraint person_pid_pk  primary key (pid))

Oracle--约束

标签:ide   otto   reference   sele   constrain   margin   enable   uniq   column   

原文地址:https://www.cnblogs.com/jasonjson/p/12402109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!