这个字段的值必须知足非空且该字段的值不能重复sql
一张表中只能有一个主键spa
这个字段的值不能重复3d
一张表中的惟一性约束个数不受限制blog
不能检查NULL值table
这个字段的值不能是NULL值class
一张表中的非空约束个数不受限test
字段的值必须符合检查条件(条件由本身指定,where里写的这里均可以写)引用
创建两张表的关联关系im
foreign key(外键) 指定字段margin
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没法区分惟一性,实际中能够再设一个非空就能够了