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