约束
约束是表级的强制规定
有以下五种约束
-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 varchar2(20),
salary number(10,2),
--表级约束
constraint emp3_email_uk unique(email)
)
-------PRIMARY KEY-------------
通过主键能够唯一定位数据表中的一条数据
非空+unique
create table emp4(
--列级约束
id number(10) constraint emp4_id_pk primary key,
name varchar2(20) constraint emp4_name_nn not null,
email varchar2(20),
salary number(10,2),
--表级约束
constraint emp4_email_uk unique(email)
)
----------FOREIGN KEY---------------------
create table emp6(
--列级约束
id number(10),
name varchar2(20) constraint emp6_name_nn not null,
email varchar2(20),
salary number(10,2),
department_id number(10),
--表级约束
constraint emp6_id_pk primary key(id),
constraint emp6_email_uk unique(email),
constraint emp6_dept_id_fk foreign key(department_id) references departments(department_id)
)
关键字:
--foreign key:在表级指定子表中的列
--references:标示在父表中的列
--ON DELETE CASCADE(级联删除):当父表中的列被删除时,子表中相应的列也被删除
--ON DELETE SET NULL(级联置空):子表中相应的列置空
---------CHECK--------------------------
create table emp8(
--列级约束
id number(10),
name varchar2(20) constraint emp8_name_nn not null,
email varchar2(20),
salary number(10,2) constraint emp8_salary_ck check (salary>=1500 and salary <=30000),
department_id number(10),
--表级约束
constraint emp8_id_pk primary key(id),
constraint emp8_email_uk unique(email),
constraint emp8_dept_id_fk foreign key(department_id) references departments(department_id) on delete set null
)
使用alter table语法
只能添加或删除约束,但是不能修改约束
有效化或无效化约束
添加NOT NULL约束要用MODIFY语句
------添加非空约束--------
alter table emp4
modify(salary number(10,2) not null)
-----添加唯一约束----------
alter table emp4
add constraint ep4_name_uk unique(name)
-----删除约束------------------
alter table emp4
drop constraint emp4_name_nn
------无效化约束---------------
alter table emp3
disable constraint emp3_email_uk
将无效约束有效化之前需要先满足约束条件
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战