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 約束名 約束類型 具體的約束説明。
1234 | ALTERTABLEt_studentADDCONSTRAINTuq_usernameUNIQUE(stuname)--創建唯一約束 ADDCONSTRAINTck_userpassCheck(LENGTH(stupass)>3)--創建檢查約束(密碼長度大於3位) ADDCONSTRAINTpk_uidprimarykey(stuID)--主鍵約束 ADDCONSTRAINTfk_cidforeignkey(cid)referencest_class(cid)--外鍵約束 |
三、刪除約束
語法:ALTER TABLE DROPCONSTRAINT 約束名
1 | ALTERTABLEt_studentDROPCONSTRAINTPK_UID |
四、查看約束
查看T_STUDENT表中所有的約束。注意:這裏的表明必須全大寫否則查不到結果。
1 | SELECT*FROMUSER_CONSTRAINTSWHEREtable_name= 'T_STUDENT' |
-
PHP如何使用curl發送GET和POST請求
導語:PHP如何使用curl發送GET和POST請求,具體詳情請閲讀下面代碼,更多詳情請關注應屆畢業生考試網。使用CURL發送請求的基本流程使用CURL的PHP擴展完成一個HTTP請求的發送一般有以下幾個步驟:1.初始化連接句柄;2.設置CURL選項;3.執行並獲取結果;4.釋放VURL連接句柄。...
-
PHP如何遞歸實現json類
PHP如何遞歸實現json類呢?下面是小編給大家提供的實現方法,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。代碼如下:<?php/**@anthor:QD*@time:2013-09-27*/classjson{private$Arr=array();//傳入數組//構造器publicfunctionjson($array){if(!is_array($arr...
-
PHP入門學習方法
每個人的學習方式不同,寫這篇文章的目的是分享一下自己的學習過程,僅供參考,不要一味的用別人的學習方法,找對自己有用的學習方式,關於php語言怎麼學呢?下面是相關的知識,歡迎閲讀。其實學習一門新語言並不是太難,重要的是你有沒有準備好去學好它,時間的長短和個人的能...
-
PHP編程常用技巧四則
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。下面就來和小編一起看看PHP編程常用技巧四則吧。1.配置PHP文件目錄作為服務器端解釋執行的腳本語言,PHP程序放置在某個服務器可以訪問的目錄下,一般可以通過修改Apache的進行配置,例如我們在該文件中的一句:Ali...