--not null 非空
--unique 唯一
--primary key 主键
--foreign key 外键
--check 检查
非空约束只能建立在列上
--not null 非空
create table emp3( id number(10) constraint emp3_id_nn not null, name varchar2(20) not null, salary number(10,2) );
--unique 唯一
create table emp5( id number(10) constraint emp3_id_uk unique, name varchar2(20) constraint emp5_nn not null, email varchar2(20), salary number(10,2), --表级约束 constraint emp3_email_uk unique(email) );
--primary key 主键 自身也有非空性,唯一性
create table emp7( id number(10) constraint emp7_id_pk primary key, name varchar2(20) constraint emp7_nn not null, email varchar2(20), salary number(10,2), --表级约束 constraint emp7_email_uk unique(email) );
create table emp8( id number(10), name varchar2(20) constraint emp8_nn not null, email varchar2(20), salary number(10,2), --表级约束 constraint emp8_email_uk unique(email), constraint emp8_id_pk primary key(id) );
--foreign key 外键
create table emp9(
--列级约束 id number(10), name varchar2(20) constraint emp9_nn not null, email varchar2(20), salary number(10,2), department_id number(10), --表级约束 constraint emp9_email_uk unique(email), constraint emp9_id_pk primary key(id), constraint emp9_dept_id_fk foreign key(department_id) references departments(department_id) );
foreign key约束的 关键字:
--foreign key :在表级指定子表中的列
--referencrces :标示在父表中的列
-- on delete cascade(级联删除) :当父表中的列被删除时, 子表中对应的列也被删除
-- on delete set null(级联置空):当子表中相应的列置空
--check 检查
create table emp10( id number(10), name varchar2(20) constraint emp10_nn not null, email varchar2(20), salary number(10,2) check(salary>1500 and salary<30000), department_id number(10), --表级约束 constraint emp10_email_uk unique(email), constraint emp10_id_pk primary key(id), constraint emp10_dept_id_fk foreign key(department_id) references departments(department_id)on delete cascade );
使用alte table语句:
添加或删除约束,但不能修改约束 :
修改 -- alter table emp5 modify(salary number(10,2) not null);
删除 -- alter table emp5 drop constraint emp5_name_nn ;
添加 -- alter table emp5 add constraint emp5_uk unique(name) ;
有效化或无效化:
失效 -- alter table emp3 disable constraint emp3_email_uk ;
有效 -- alter table emp3 enable constraint emp3_email_uk ;
添加not null 约束要使用modify语句