Oracle数据库知识学习之约束的注意事项和实例解析

什么是约束:

约束是表级的强制规定

有以下五种约束:

not null (非空)

unique (唯一)

primary key (主键)

foreign key (外键)

check (检查)

注意事项:

如果不指定约束名 ,oracle server 自动按照 sys_cn 的格式指定约束名

创建和修改约束:

建表的同时

建表之后

可以在表级或列级定义约束

可以通过数据字典视图查看约束

表级约束和列级约束:

作用范围:

①列级约束只能作用在一个列上

②表级约束可以作用在多个列上(当然表级约束也 可以作用在一个列上)

定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。

非空(not null) 约束只能定义在列上

not null 约束:

值不为空

unique 约束:

不允许出现相同的记录

允许出现多个空值:null。

代码:

create table teacher3(
fid number primary key,
fname varchar2(50) not null,
femail varchar2(50) unique,
ftel varchar2(20),
constraint teacher3_tel_uq unique(ftel)
)

下图空值是允许的:

primary key 约束:

可以定义在表级或者列级

唯一标示,不允许空值

代码示例:

fid number primary key,

foreign key 约束:

外键:在一个表作外键,另外一个表做主键

可以定义在表级或者列级

代码(表级):

--建表clas_info
create table class_info(
cid number primary key,
students_count number
)
--插入记录
insert into class_info values(1,20);
insert into class_info values(2,30);
insert into class_info values(3,50);
insert into class_info values(4,70);

--建表teacher4用外键fclass_id 关联表class_info
create table teacher4(
fid number primary key,
fname varchar2(30) not null,
femail varchar2(50) unique,
fclass_id number ,
constraint teacher4_fclass_id_fk foreign key(fclass_id)
references class_info(cid)
)

换一种方法(列级):

--换一种方法
create table teacher5(
fid number primary key,
fname varchar2(30) not null,
femail varchar2(50) unique,
fclass_id number references class_info(cid)
)

foreign key 约束的关键字:

foreign key: 在表级指定子表中的列

references: 标示在父表中的列

on delete cascade(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除

on delete set null(级联置空): 子表中相应的列置空

check 约束:

定义每一行必须满足的条件。

代码示例:

--检查约束
create table teacher7(
fid number primary key,
fname varchar2(30),
fage number check(fage>=18 and fage<=120),
ftel varchar(30)
)

添加约束的语法:

使用 alter table 语句:

添加或删除约束,但是不能修改约束

有效化或无效化约束

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

alter table table(名)

add constraint constraint(约束名)type (column)

代码示例:

alter table teacher7
add constraint teacher7_fname_qu unique(fname)

删除约束:

语法:

alter table table(要修改的表)

drop constraint constraint(约束名)

代码示例:

alter table teacher7
drop constraint  teacher7_fname_qu

无效化约束:

在alter table 语句中使用 disable 子句将约束无效化。

代码示例:

alter table teacher7
disable constraint teacher7_fname_uq

激活约束:

enable 子句可将当前无效的约束激活 。

当定义或激活unique 或 primary key 约束时会自动创建unique 或 primary key索引。

代码示例:

alter table teacher7
enable constraint teacher7_fname_uq
(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐