这个字段的值必须满足非空且该字段的值不能重复
一张表中只能有一个主键
这个字段的值不能重复
一张表中的唯一性约束个数不受限制
不能检查NULL值
这个字段的值不能是NULL值
一张表中的非空约束个数不受限
字段的值必须符合检查条件(条件由自己指定,where里写的这里都可以写)
建立两张表的关联关系
foreign key(外键) 指定字段
on delete cascade 级联删除
on delete set nill 级联置空
在建立表时,直接在表的某一列之后加约束限制
在建立(定义)完表的所有列之后,再选择某些列加约束限制
create table testcolumn_cons(id primary key, name varchar2(30));
insert into testcolumn_cons values(1, 'test1');
出错:00001,唯一性错误
如果不给约束起名字,则系统会自动为约束建立一个唯一的名字(但该名字比较难以理解)
constraint(关键字) 约束名(表名_加约束的字段名_约束类型)
create table testcolumn_cons(id number constraint testcolumn_cons_idpl primary key, name varchar2(30));
这样出错时就知道是哪里出了错(起名要有规律)
drop table testcolunm_cons;
create table testcolumn_cons( id number constraint testcolumn_cons_id_pk primary key, fname varchar2(30) constraint testcolumn_cons_fname_nn not null, sname varchar2(30) constraint testcolumn_cons_sname_un unique );
查看:
desc table testcolumn_cons;
增加检查约束:salary number 检查条件:要求工资大于3500。
create table testcolumn_cons(id number constraint testcolumn_cons_id_pk primary key, fname varchar2(30) constraint testcolumn_cons_fname_nn not null, sname varchar2(30) constraint testcolumn_cons_sname_un unique, salary number constraint testcolumn_cons_salary_ck check(salary>3500)
);
检测一下:
insert into testcolumn_cons values(1, 'a', 'b', 3499);
create table testtable_cons( id number, fname varchar2(30), sname varchar2(30), salary number, constraint testtable_cons_id_pk primary key(id), constraint testtable_cons_sname_un unique(sname), constraint testtable_cons_salary_ck check(salary>3500), );
not null 没有表级约束
在表级约束时,指定约束的字段时,可以约束多个字段
没有“联合非空”的说法,所以非空没有表级约束
把id和fname联合起来非空且唯一
这样是只有一个主键的!id+fname是主键
id fname
1 a
1 b
1 NULL
都可以,id重复了也没关系,因为主键是联合的;
fname是NULL也没关系,联合的不为空就行。
create table testtable_cons( id number, fname varchar2(30), sname varchar2(30), salary number, constraint testtable_cons_id_pk primary key(id), constraint testtable_cons_sname_un unique(sname), constraint testtable_cons_salary_ck check(salary>3500), );
实际应用中混着用
唯一性(unique)只能区分非空值,不可以区分空值(NULL)
两个或多个NULL无法区分唯一性,实际中可以再设一个非空就可以了
如对本文有疑问, 点击进行留言回复!!
Oracle查询用户,表结构,表索引,存储过程,触发器等信息整理
oracle的自连接、内连接、外连接、交叉连接、自然连接、等值连接、不等值连接
Oracle数据库使用replace函数批量删除数据中的双引号
网友评论