當前位置:才華齋>計算機>php語言>

PHP資料庫Oracle資料完整性

php語言 閱讀(8.56K)

學習是艱苦的,只要熬過學習期就會有大大的收穫。以下是本站小編精心為大家整理的PHP的相關學習內容Oracle資料完整性,希望對大家學習有所幫助!更多內容請關注應屆畢業生網!

PHP資料庫Oracle資料完整性

  一、資料完整性

資料完整性要求資料庫中的資料具有準確性。準確性是通過資料庫表的設計和約束來實現的。為了實現資料完整性,資料庫需要做兩方面的工作:

確保每行的資料符合要求。

去報沒咧的資料符合要求。

為了實現以上要求,Oracle提供了一下4種類型的約束(Constraint)。

 1、實體完整性約束

實體完整性要求表中的每一行資料都反映不同的實體,不能存在相同的資料行。通過主鍵約束,唯一約束來實現實體完整性。

(1)主鍵約束:

表中的一列或者紀略組合的值能用來唯一的.表示表中的每一行,這樣的一列或者多列的組合叫做表的主鍵。

主鍵自帶唯一性,並且不能為空,一個表只能有一個主鍵,主鍵確保了表中資料行的唯一,同一張表中,可以使用多個列共同作為主鍵。在選擇主鍵時,應遵循兩個原則,最少性和穩定性。

(2)唯一約束:

保證資料行中的某一列的資料是唯一的,不重複的。這樣可以新增唯一約束。

唯一約束和主鍵的區別:

主鍵不能為空,唯一可以為空,但只允許有一個空值。

主鍵一張表中只有一個,而唯一可以有多個。

主鍵可以由多個表來組成,唯一隻能是單列。

主鍵可以作為其他表的外來鍵,唯一不可以。

 2、域完整性:

與完整性是指給定咧的輸入的有效性。通過資料型別、檢查約束、輸入格式、外來鍵約束、預設值、非空約束等方法來實現。

 3、引用完整性:

引用完整性是指為兩個表中存在一定的聯絡,從而保證資料的完整性。例如:班級和學生,學生所在班級一定是在班級表中所存在的,不然就會出現不準確。引用完整性我們可以通過外來鍵約束來實現。

 4、自定義完整性:

使用者自己定義約束規則。主要通過儲存過程和觸發器物件來實現。

二、新增約束

在建立表時,我們可以再欄位後新增各種約束。這裡分為列級定義和表級定義:

 1、列級定義

列級定義是指在定義列的同時定義定義約束。

如在t_class表定義主鍵和唯一約束

123--建立班級表CREATETABLEt_class(cidNUMBERCONSTRAINTpk_cidPRIMARYKEY,--為cid新增主鍵約束cnameVARCHAR2(20)constraintuq_sortnameUNIQUE--為cname新增唯一約束)

說明:在列級定義時,加不加constraint pk_department都是可以的,區別是不加的話,系統會自動分配一個主鍵約束名稱,可讀性差。

 2、表級定義

表級定義是指在定義了所有列後,再定義約束。需要注意:not null只能在列級上定義。

以在建立學生和班級表時定義主鍵約束和外來鍵約束為例:

12345678--建立學生表createtablet_student(    stuIDnumber(4),    stunamevarchar2(20)NOTNULL,    stupassvarchar2(20)NOTNULL,    cidNUMBERNOTNULL,constraintuq_usernameUNIQUE(stuname),--建立唯一約束    constraintck_userpassCheck(LENGTH(stupass)>3),--建立檢查約束(密碼長度大於3位)        constraintpk_uidprimarykey(stuID),--主鍵約束        constraintfk_cidforeignkey(cid)referencest_class(cid)--外來鍵約束  );

3、建立表後,我們也可以在已經建好的表上新增約束,需要使用ALTER TABLE語句。

語法:ALTER TABLE ADD CONSTRAINT 約束名 約束型別 具體的約束說明。

1234ALTERTABLEt_studentADDCONSTRAINTuq_usernameUNIQUE(stuname)--建立唯一約束ADDCONSTRAINTck_userpassCheck(LENGTH(stupass)>3)--建立檢查約束(密碼長度大於3位)  ADDCONSTRAINTpk_uidprimarykey(stuID)--主鍵約束  ADDCONSTRAINTfk_cidforeignkey(cid)referencest_class(cid)--外來鍵約束

三、刪除約束

語法:ALTER TABLE DROPCONSTRAINT 約束名

1ALTERTABLEt_studentDROPCONSTRAINTPK_UID

四、檢視約束

檢視T_STUDENT表中所有的約束。注意:這裡的表明必須全大寫否則查不到結果。

1SELECT*FROMUSER_CONSTRAINTSWHEREtable_name='T_STUDENT'