首页 > 数据库 > Oracle >

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

2018-07-28

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
相关文章
最新文章
热点推荐