约束 主键、外键、非空、唯一、检查

2021.10.30

添加约束

表级约束和列级约束

列级约束只能作用在一个列上
表级约束可以作用在多个列上,也可以在一个列上

not null

非空约束,填入数据为空时会报错

create table emp2(
id number(10) constraint emp2_id_nn
not null, --可以给约束进行命名
name varchar2(20) not null,
salary number(10)

constraint emp2_salary_nn(email) not null--表级约束,括号内指定列名
)

unique

不可重复约束
但null值可以重复插入

主键primary key

唯一值,可以理解为身份证号
主键需要非空,并且不可重复

外键foreign key

可以简单理解为使用另一张表中的主键
在这里插入图片描述

create table emp3(
id number(10) constraint emp3_id_pk primary key,
department_id number(10),
constraint emp3_dptid_fk foreign key(department_id) references departments(department_id)
--取department表中的dpt_id列作为本表的外键
)

外键中的值必须存在于对应表的主键中

on delete cascade(级联删除)

父表中的列被删除时,子表中对应的列也被删除

on delete set null(级联置空)

对应列置空

constraint emp3_dptid_fk foreign key(department_id) references departments(department_id) on delete set null

check

添加限制条件

create table emp4(
salary number(10,2) check(salary >1500 and salary<10000)
--老资本家了
)

“修改”约束

使用alter table语句:
添加或删除约束,不能直接修改约束
有效化或无效化约束

添加not null约束要使用modify语句

alter table emp4
modify(salary number(10,2) not null)

删除约束

alter table emp4
drop constraint emp4_salary_nn

添加其他约束

atler table emp3
add constraint emp2_salary_uk unique(salary)

无效化/有效化约束

alter table emp3
disable constraint emp3_email_uk
alter table emp3
enable constraint emp3_email_uk

在enable时若原表不满足约束则无法有效化

查询约束

利用数据字典视图user_constraints

select constraint_name, constraint_type,
           search_condition
from user_constraints
where table_name = 'table1'

在这里插入图片描述

查询定义约束的列

利用user_cons_columns

select constraint_name, column_name,
from user_cons_columns
where table_name = 'table1'

在这里插入图片描述

总结

回头一定要把数据库再啃一遍,基础课程真的有用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值