1、约束constraint
a、列级约束和表级约束
create table emp2(
id number(10) not null,
name varchar2(20) constraint emp2_name_nn not null,
email varchar2(20)
)
constraint emp2_name_nn是给约束命名,左侧myobject–>constraint目录下有对应约束。
以上是一个列级约束,表级约束如下:
drop table emp2;
create table emp2(
id number(10) constraint emp2_id_nn not null,
name varchar2(20) not null,
salary number(10,2),
constraint emp2_name_uk unique(name)
)
–两者无本质区别。
b、unique 和primary key的区别:
unique允许同时为null,后者不允许。
c、foreign key
drop table emp6;
create table emp6(
id number(10) constraint emp6_id_nn not null,
name varchar2(20) not null,
salary number(10,2),
constraint emp6_name_uk unique(name),
constraint emp6_id_fk foreign key(id) references employees
)
此时,插入数据的id必须在employees表内存在,否则报错。
c、check加限制
drop table emp6;
create table emp6(
id number(10) constraint emp6_id_nn not null,
name varchar2(20) not null,
salary number(10,2) check(salary<30000 and salary>1500),
constraint emp6_name_uk unique(name),
constraint emp6_id_fk foreign key(id) references employees
)
此时插入的salary必须满足check条件。
—疑问:PLsql依赖手机wifi;emp2插入数据会覆盖从前数据;