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,若想要系统为它自动分配约束名称,则能够省略constraintoracle

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,...);

注意:code

若是表中已存在数据,而且主键列具备相同的值或存在NULL值,则添加主键约束的操做失败。io

参照完整性(外键约束)

在建立表时建立外键约束

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 ActionSet NullCascadetable

No Action:当删除被引用的表被引用的列的数据时,将违反外键约束,该操做将被禁止。(默认)date

Set Null:当删除被引用的表被引用的列的数据时,外键表中对应外键列值将被设置成Null。(前提是该列支持null)引用

Cascade:“级联删除”,当删除被引用的表被引用的列的数据时,外键表中对应数值也会被删除。方法

alter table [表名] add constraint [约束名] foreign key(字段名) references [表名](字段名) on[delete|update...] [约束行为]

用户自定义完整性(惟一键约束、check约束、默认值约束、not null约束等)

惟一性约束

定义惟一性约束,则该列不能有相同的值,能够为null(除非列自己就设置为not null),关键字为unique,设置方法和Primary key同样im

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。
相关文章
相关标签/搜索