第九节----约束

约束是表级的强制规定
有以下五种约束:
NOT NULL
UNIQUE 
PRIMARY KEY
FOREIGN KEY
CHECK

注意:

如果不指定约束名 ,Oracle server 自动按照 SYS_Cn 的格式指定约束名
创建和修改约束:
建表的同时
建表之后
可以在表级或列级定义约束
可以通过数据字典视图查看约束

表级约束和列级约束

作用范围:
	①列级约束只能作用在一个列上
	②表级约束可以作用在多个列上(当然表级约束也   
      可以作用在一个列上)
定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。
非空(not null) 约束只能定义在列上
--NOT NULL 约束
create table emp2 (id number(10) constraint emp2_id_nn not null,name varchar2(20) not null,salary number(10,2));
--UNIQUE 约束
create table emp3 (id number(10) constraint emp3_id_uk unique,name varchar2(20) constraint emp3_name_nn not null ,email varchar(20),salary number(10,2),constraint emp3_email_uk unique(email));
--PRIMARY KEY(主键) 约束
列级:
create table emp4 (id number(10) constraint emp4_id_pk primary key,name varchar2(20) constraint emp4_name_nn not null ,email varchar(20),salary number(10,2),constraint emp4_email_uk unique(email));
表级:
create table emp5 (id number(10),name varchar2(20) constraint emp5_name_nn not null ,email varchar(20),salary number(10,2),constraint emp5_email_uk unique(email), constraint emp5_id_pk primary key(id));
--FOREIGN KEY(外键) 约束
FOREIGN KEY: 在表级指定子表中的列
REFERENCES: 标示在父表中的列
ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除
ON DELETE SET NULL(级联置空): 子表中相应的列置空
表级:
create table emp6 (id number(10),name varchar2(20) constraint emp6_name_nn not null ,email varchar(20),salary number(10,2),department_id number(10),constraint emp6_email_uk unique(email), constraint emp6_id_pk primary key(id),constraint emp6_dept_id_fk foreign key(department_id)references departments(department_id));
create table emp7 (id number(10),name varchar2(20) constraint emp7_name_nn not null ,email varchar(20),salary number(10,2),department_id number(10),constraint emp7_email_uk unique(email), constraint emp7_id_pk primary key(id),constraint emp7_dept_id_fk foreign key(department_id)references departments(department_id)on delete set null);
--CHECK 约束
create table emp8 (id number(10),name varchar2(20) constraint emp8_name_nn not null ,email varchar(20),salary number(10,2) check(salary > 1500 and salary<30000),department_id number(10),constraint emp8_email_uk unique(email), constraint emp8_id_pk primary key(id),constraint emp8_dept_id_fk foreign key(department_id)references departments(department_id)on delete set null);
添加约束:
使用 ALTER TABLE 语句:添加或删除约束,但是不能修改约束
有效化或无效化约束:添加 NOT NULL 约束要使用 MODIFY 语句
--添加约束
alter table emp5 modify(salary number(10) not null);
alter table emp5 add constraint emp5_name_uk unique(name);
--删除约束
alter table emp5 drop constraint emp5_name_nn;
无效化约束:在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。
alter table emp3 disable constraint emp3_email_uk;
激活约束:ENABLE 子句可将当前无效的约束激活 
alter table emp3 enable constraint emp3_email_uk;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值