Oracle-约束小结

--not null只能作用于列级;
--unique可作用于列级和表级;
--primary key 可作用于列级和表级,相当于同时声明了not null 和unique;
--foreign key 可作用于列级和表级,一般作用于表级
--check() 可作用于列级和表级

--创建表的时候创建约束,两种不同的形式(自定义名和系统默认)
/*create table emp2(
id number(10) constraint emp2_id_nn not null,
name varchar2(20) not null,
salary number(10,2)
)*/

--同时为一列创建非空约束和唯一约束
/*create table emp4(
--列级约束
id number(10) constraint emp4_id_nn not null ,
name varchar2(20) constraint emp4_name_nn not null,
email varchar2(20),
salary number(10,2),
--表级约束
constraint emp4_id_uk unique(id),
constraint emp4_email_uk unique(email)
)*/

--constraint primary key
/*create table emp4(
--定义在列级
id number(10) constraint emp4_id_pk primary key,
name varchar2(20) not null,
salary number(10,2),
email varchar2(20),
constraint emp4_email_uk unique(email)
--定义在表级
--constraint emp4_id_pk primary key(id)
)*/

--定义外键约束
/*create table emp5(
id number(10) constraint emp5_id_pk primary key,
name varchar2(20) not null,
salary number(10,2),
email varchar2(20),
department_id number(20),
constraint emp5_email_uk unique(email),
--定义在表级
constraint emp5_dept_id_fk foreign key(department_id) references departments(department_id) on delete set null
)/*departments 为父表,emp5为子表*/
/*on delete cascade 级联删除,当父表中的列被删除时,子表中相对应的列也被删除*/
/*on delete set null 级联置空 ,。。。子表中相应的列置空*/

-- check约束
create table emp7(
id number(10) constraint emp7_id_pk primary key,
name varchar2(20) constraint emp7_name_nn not null,
salary number(10,2) constraint emp7_salary_ck check(salary>1500),
email varchar2(20),
constraint emp7_email_uk unique(email),
--定义在表级,不用再在后面额外追加列名,已经写在了check(里面)
--constraint emp7_salary_ck check(salary>1500)
)

--添加修改删除约束
alter table emp5
--add
add constraint emp5_name_uk unique
--modify
modify (salary number(10,2) not null)
--drop
drop constraint SYS_C005484
--disable
disable constraint emp5_name_uk
--enable
enable constraint emp5_name_uk

--查询约束
select constraint_name,constraint_type,search_condition,column_name
from user_constraints where table_name = 'employees'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流烟默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值