亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語言

PHP數(shù)據(jù)庫Oracle數(shù)據(jù)完整性

時(shí)間:2024-09-05 17:43:04 php語言 我要投稿
  • 相關(guān)推薦

PHP數(shù)據(jù)庫Oracle數(shù)據(jù)完整性

  學(xué)習(xí)是艱苦的,只要熬過學(xué)習(xí)期就會(huì)有大大的收獲。以下是百分網(wǎng)小編精心為大家整理的PHP的相關(guān)學(xué)習(xí)內(nèi)容Oracle數(shù)據(jù)完整性,希望對(duì)大家學(xué)習(xí)有所幫助!更多內(nèi)容請(qǐng)關(guān)注應(yīng)屆畢業(yè)生網(wǎng)!

  一、數(shù)據(jù)完整性

  數(shù)據(jù)完整性要求數(shù)據(jù)庫中的數(shù)據(jù)具有準(zhǔn)確性。準(zhǔn)確性是通過數(shù)據(jù)庫表的設(shè)計(jì)和約束來實(shí)現(xiàn)的。為了實(shí)現(xiàn)數(shù)據(jù)完整性,數(shù)據(jù)庫需要做兩方面的工作:

  確保每行的數(shù)據(jù)符合要求。

  去報(bào)沒咧的數(shù)據(jù)符合要求。

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

  1、實(shí)體完整性約束

  實(shí)體完整性要求表中的每一行數(shù)據(jù)都反映不同的實(shí)體,不能存在相同的數(shù)據(jù)行。通過主鍵約束,唯一約束來實(shí)現(xiàn)實(shí)體完整性。

  (1)主鍵約束:

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

  主鍵自帶唯一性,并且不能為空,一個(gè)表只能有一個(gè)主鍵,主鍵確保了表中數(shù)據(jù)行的唯一,同一張表中,可以使用多個(gè)列共同作為主鍵。在選擇主鍵時(shí),應(yīng)遵循兩個(gè)原則,最少性和穩(wěn)定性。

  (2)唯一約束:

  保證數(shù)據(jù)行中的某一列的數(shù)據(jù)是唯一的,不重復(fù)的。這樣可以添加唯一約束。

  唯一約束和主鍵的區(qū)別:

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

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

  主鍵可以由多個(gè)表來組成,唯一只能是單列。

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

  2、域完整性:

  與完整性是指給定咧的輸入的有效性。通過數(shù)據(jù)類型、檢查約束、輸入格式、外鍵約束、默認(rèn)值、非空約束等方法來實(shí)現(xiàn)。

  3、引用完整性:

  引用完整性是指為兩個(gè)表中存在一定的聯(lián)系,從而保證數(shù)據(jù)的完整性。例如:班級(jí)和學(xué)生,學(xué)生所在班級(jí)一定是在班級(jí)表中所存在的,不然就會(huì)出現(xiàn)不準(zhǔn)確。引用完整性我們可以通過外鍵約束來實(shí)現(xiàn)。

  4、自定義完整性:

  用戶自己定義約束規(guī)則。主要通過存儲(chǔ)過程和觸發(fā)器對(duì)象來實(shí)現(xiàn)。

  二、添加約束

  在創(chuàng)建表時(shí),我們可以再字段后添加各種約束。這里分為列級(jí)定義和表級(jí)定義:

  1、列級(jí)定義

  列級(jí)定義是指在定義列的同時(shí)定義定義約束。

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

1
2
3
--創(chuàng)建班級(jí)表 CREATE TABLE t_class
(
  cid NUMBER CONSTRAINT pk_cid PRIMARY KEY, --為cid添加主鍵約束 cname VARCHAR2(20) constraint uq_sortname UNIQUE --為cname添加唯一約束 )

  說明:在列級(jí)定義時(shí),加不加constraint pk_department都是可以的,區(qū)別是不加的話,系統(tǒng)會(huì)自動(dòng)分配一個(gè)主鍵約束名稱,可讀性差。

  2、表級(jí)定義

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

  以在建立學(xué)生和班級(jí)表時(shí)定義主鍵約束和外鍵約束為例:

1
2
3
4
5
6
7
8
--創(chuàng)建學(xué)生表 create table t_student(
    stuID number(4),
    stuname varchar2(20) NOT NULL,
    stupass varchar2(20) NOT NULL,
    cid NUMBER NOT NULL, constraint uq_username UNIQUE(stuname), --創(chuàng)建唯一約束 
    constraint ck_userpass Check(LENGTH(stupass) > 3), --創(chuàng)建檢查約束(密碼長(zhǎng)度大于3位)     
    constraint pk_uid primary key(stuID), --主鍵約束     
    constraint fk_cid foreign key(cid) references t_class(cid) --外鍵約束   );

  3、創(chuàng)建表后,我們也可以在已經(jīng)建好的表上添加約束,需要使用ALTER TABLE語句。

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

1
2
3
4
ALTER TABLE t_student ADD CONSTRAINT uq_username UNIQUE(stuname) --創(chuàng)建唯一約束 
ADD CONSTRAINT ck_userpass Check(LENGTH(stupass) > 3) --創(chuàng)建檢查約束(密碼長(zhǎng)度大于3位)   
ADD CONSTRAINT pk_uid primary key(stuID) --主鍵約束   
ADD CONSTRAINT fk_cid foreign key(cid) references t_class(cid) --外鍵約束

  三、刪除約束

  語法:ALTER TABLE DROPCONSTRAINT 約束名

1
ALTER TABLE t_student DROP CONSTRAINT PK_UID

  四、查看約束

  查看T_STUDENT表中所有的約束。注意:這里的表明必須全大寫否則查不到結(jié)果。

1
SELECT * FROM USER_CONSTRAINTS WHERE table_name = 'T_STUDENT'

【PHP數(shù)據(jù)庫Oracle數(shù)據(jù)完整性】相關(guān)文章:

PHP怎么插入數(shù)據(jù)庫03-29

php連接mysql數(shù)據(jù)庫代碼03-22

PHP數(shù)據(jù)庫:mysql重置密碼12-03

php備份數(shù)據(jù)庫類的方法12-02

PHP使用中數(shù)據(jù)庫使用方法05-21

數(shù)據(jù)庫設(shè)計(jì)和訪問數(shù)據(jù)庫的PHP代碼中出現(xiàn)的五個(gè)常見問題07-31

關(guān)于php操作mysql執(zhí)行數(shù)據(jù)庫查詢11-18

PHP語言:數(shù)據(jù)類型12-03

如何實(shí)現(xiàn)PHP獲取表單數(shù)據(jù)與HTML嵌入PHP腳本03-25