Oracel 之约束

 

什么是约束:

约束是表级的强制规定

有以下五种约束:

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

猜你喜欢

转载自blog.csdn.net/qq_34741755/article/details/81214312