约束

 约束是表级的强制规定

有以下五种约束

-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

将无效约束有效化之前需要先满足约束条件

 

posted @   桥桥泽  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示