Oracle資料庫的約束,序列,索引

2022-05-09 03:42:09 字數 3108 閱讀 3656

約束

1:概念:也叫完整性約束條件。

是資料表中的一些限制條件,當資料表中的資料發生變化時,必須遵循

這些限制條件,不遵循,不能進行dml操作。

2:分類

(1)非空約束 not null 簡稱un

(2)唯一性約束 unique 簡稱uk

(3)主鍵約束 primary key 簡稱pk

(4)外來鍵約束 foreign key 簡稱fk

(5)檢查約束 check 簡稱ck

3:非空約束的建立

建表時:

reg:create table tname(

name varchar2(20) not null,

age number(3) constraint tname_age_nn not null--列級約束

);約束:列級約束和表級約束兩種寫法

列級約束:就是在建表時寫在列型別後面。

表級約束:就是在建表時寫在最後乙個欄位後。

非空約束沒有表級約束的寫法。

建表後修改非空約束:

解除非空約束:

alter table tname modify age number(3) null;

新增非空約束:

alter table tname modify age number(3) not null;

4:唯一性約束:unique

對欄位進行此約束時,欄位的值是唯一的,不能重複,可以為null。

reg:

create table temp_101(

name varchar2(20) not null,

idcard varchar2(30),

constraint t_idcard_uk unique(idcard)--表級約束寫法

);建表後設定唯一性約束:

alter table temp_101 add constraint t_idcard_uk unique(idcard);

5:主鍵約束:(非空且唯一)

主鍵:是一張表中能給記錄唯一標識的字段,通常此欄位除了作為唯一識別符號,沒有其他意義。

(1)一張表中只能有乙個主鍵約束。其他約束沒有個數限制。

(2)主鍵約束相當於非空約束和唯一性約束

(3)主鍵要選擇表中盡可能沒有資料邏輯的字段。

--建表時:

create table tname(

id number(3) primary key,

name varchar2(20)

);6:外來鍵約束

兩張表的兩個字段存在關係或者一張表的兩個欄位的關係。

其中表b的乙個欄位的值依賴表a乙個欄位中的某乙個值或者可以為null。

那麼:表a叫主表、父表

表b叫從表,子表

建表時:

create table tname(

empno number(4) primary key,

mgr number(4),

constraint te_mgr_fk foreign key(mgr) references tname(empno)

);create table temp(

empno number(4) primary key,

mgr number(4) reference temp(empno)

);建表後:

create table temp_1(

in number(4),

mgr number(4)

);alter table temp_1 add constraint t_107_mgr_fk foreign key(mgr) reference temp(empno);

7:檢查約束

對某一字段或某些欄位做一些條件的限制,必須滿足條件的可以dml。

建表時:

create table temp_108(

name varchar2(20),

gender char(1) check(gender in('f','m'))

);insert into temp_108 values ('張三','f');

create table temp_109(

name varchar2(20),

sal number(9,2) check(sal>1000 and sal<10000)

);建表後:

create table temp_110(

name varchar2(20),

gender char(3)

);alter table temp_110 add constraint 

t_gender_ck check(gender ='女' or gender='男');

序列1:概念

是資料庫中為資料表提供的可以自動生成的唯一數值,通常用來給主鍵字段賦值,可以遞增或者遞減,作為主鍵的字段,通常不認為賦值,需要使用序列自動生成的值。

2:關鍵字

sequence,序列和表一樣,都是資料庫中的物件,通常序列為一張表提供主鍵值,也可以為多張表提供主鍵值。

3:序列的建立

create sequence seqname

[start with i] -->從i開始,不指定時預設從1開始

[increment by j] -->每次遞增或遞減j/預設遞增1,j為正表示遞增,為負表示遞減

[maxvalue m | nomaxvalue]-->表示最大值m

[minvalue n | nominvalue]-->表示最小值n

[cycle | nocycle]-->表示迴圈|不迴圈

[cache n| nocache]-->表示快取n個數,預設儲存20個數

索引1:

作用:為了方便快速查詢資料表中的記錄。

索引也是資料庫中的乙個物件。

索引內部資訊包含記錄的rowid,相當於位址資訊。

2:索引被建立後,由資料庫自動維護。

3:建立:create [unique] index indexname on tname(colname,[,......]);

4:索引的優缺點:

當資料表需要頻繁進行dml操作時,此時資料庫會自動維護索引

會增加開銷,索引索引的使用需要看錶的操作情況

oracle 資料庫的約束

為了使我們的資料符合一定的規則 約束有五種型別,主鍵約束,外來鍵約束,非空約束,唯一性約束,檢查約束 約束有兩種定義方法 第一種是在定義列的時候定義約束,叫做列級定義。第二種是所有列全部定義完後,在定義約束,該約束叫做表級定義 注意 not null只能在列級中定義 對於多個屬性構成的碼只能使用表級...

oracle資料庫之約束

一 非空約束 1 在建立表時設定非空約束 在資料型別後面加上 not null create table tablename username varchar2 20 not null,2 在修改表時新增非空約束 其實也就是修改欄位的定義,但是需要表中沒有資料 確切的說是要新增非空約束的列沒有非空資...

Oracle資料庫之約束

約束 資料的完整性用於確保資料庫資料遵從一定的商業和邏輯規則。在oracle中,資料完整性可以使用約束 觸發器 應用程式 過程 函式 三種實現。而約束易於維護並且效能最好,所以作為維護資料完整性的首選。約束包括五種 not null 不為空 unique 唯一 primary key 主鍵 fore...