Oracle笔记——表数据完整性和约束性
Oracle笔记——表数据完整性和约束性
实体完整性(主键约束)
在创建表时创建主键约束
create table Books_1
(
BookNo number(4),
BookName varchar2(20),
Author varchar2(10),
ISBN varchar2(20)
constraint BOOK_PK primary key(BookNo) // constraint 约束名 primary key(字段名1,字段名2,...)
);
用修改的方式创建主键约束
alter table [表名] add constraint [约束名] primary key(字段名1,字段名2,...);
上面因为定义了约束名,因此没法省略constraint,若想要系统为它自动分配约束名称,则可以省略constraint
create table Books_1
(
BookNo number(4),
BookName varchar2(20),
Author varchar2(10),
ISBN varchar2(20)
primary key(BookNo) // primary key(字段名1,字段名2,...)
);
alter table [表名] add primary key(字段名1,字段名2,...);
注意:
如果表中已存在数据,并且主键列具有相同的值或存在NULL值,则添加主键约束的操作失败。
参照完整性(外键约束)
在创建表时创建外键约束
create table Books_1
(
BookNo number(4),
BookName varchar2(20),
Author varchar2(10),
ISBN varchar2(20)
constraint BOOK_FK
foreign key(BookName)
references books(BookName) // 若原来的表和映射的表的列名重名则可以省略列名
);
用修改的方式创建主键约束
alter table [表名] add constraint [约束名] foreign key(字段名) references [表名](字段名)
设置外键约束行为
约束行为有三个:No Action、Set Null、 Cascade
No Action:当删除被引用的表被引用的列的数据时,将违反外键约束,该操作将被禁止。(默认)
Set Null:当删除被引用的表被引用的列的数据时,外键表中对应外键列值将被设置成Null。(前提是该列支持null)
Cascade:“级联删除”,当删除被引用的表被引用的列的数据时,外键表中对应数值也会被删除。
alter table [表名] add constraint [约束名] foreign key(字段名) references [表名](字段名) on[delete|update...] [约束行为]
用户自定义完整性(唯一键约束、check约束、默认值约束、not null约束等)
唯一性约束
定义唯一性约束,则该列不能有相同的值,可以为null(除非列本身就设置为not null),关键字为unique,设置方法和Primary key一样
alter table [表名] add constraint [约束名] unique key(字段名1,字段名2,...);
check约束
create table Books_1
(
BookNo number(4),
BookName varchar2(20),
Author varchar2(10),
ISBN varchar2(20),
constraint ISBN_CK check(ISBN like 'ISBN%'), // 数据不符合'ISBN%'都会报错
constraint BOOK_PK primary key(BookNo)
);
默认值约束
create table Books_1
(
BookNo number(4),
BookName varchar2(20) default '书名', // 默认值
Author varchar2(10),
ISBN varchar2(20),
constraint ISBN_CK check(ISBN like 'ISBN%'),
constraint BOOK_PK primary key(BookNo)
);
not null 约束
create table Books_1
(
BookNo number(4) not null, // null 不被允许在这一列出现
BookName varchar2(20) default '书名',
Author varchar2(10),
ISBN varchar2(20),
constraint ISBN_CK check(ISBN like 'ISBN%'),
constraint BOOK_PK primary key(BookNo)
);
删除约束
drop constraint [约束名]
禁用和启用约束
在创建时禁用约束
create table Books_1
(
BookNo number(4) not null,
BookName varchar2(20) default '书名',
Author varchar2(10),
ISBN varchar2(20),
constraint ISBN_CK check(ISBN like 'ISBN%') disable, // 禁用约束
constraint BOOK_PK primary key(BookNo)
);
禁用已存在的约束
alter table [表名] disable constraint [约束名];
启动约束
alter table [表名] enable [NOvalidate|validate] constraint [约束名];
[validate|NOvalidate]:表示在激活约束时验不验证表中的数据是否满足约束,默认validate。

浙公网安备 33010602011771号