Oracle--约束

为什么要有约束

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

分类:

  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))

posted @ 2020-03-03 14:15  Jason–json  阅读(331)  评论(0编辑  收藏  举报