标签:var tab check div _id not 理解 width IV
这个字段的值必须满足非空且该字段的值不能重复
一张表中只能有一个主键
这个字段的值不能重复
一张表中的唯一性约束个数不受限制
不能检查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无法区分唯一性,实际中可以再设一个非空就可以了
标签:var tab check div _id not 理解 width IV
原文地址:https://www.cnblogs.com/cjaaron/p/9216459.html