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。