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
oracle
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 Action
、Set Null
、 Cascade
table
No Action
:当删除被引用的表被引用的列的数据时,将违反外键约束,该操做将被禁止。(默认)date
Set Null
:当删除被引用的表被引用的列的数据时,外键表中对应外键列值将被设置成Null。(前提是该列支持null)引用
Cascade
:“级联删除”,当删除被引用的表被引用的列的数据时,外键表中对应数值也会被删除。方法
alter table [表名] add constraint [约束名] foreign key(字段名) references [表名](字段名) on[delete|update...] [约束行为]
定义惟一性约束,则该列不能有相同的值,能够为null(除非列自己就设置为not null),关键字为unique
,设置方法和Primary key
同样im
alter table [表名] add constraint [约束名] unique key(字段名1,字段名2,...);
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) );
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。