小編給大家分享一下oracle中數據完整性的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯公司是專業(yè)的西華網站建設公司,西華接單;提供網站制作、網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業(yè)做網站服務;采用PHP框架,可快速的進行西華網站開發(fā)網頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網站,專業(yè)的做網站團隊,希望更多企業(yè)前來合作!
1. 數據的完整性簡介
就是正確性、準確性,包含三種:實體完整性、參照完整性、
用戶自定義完整性。Oracle中主要通過約束、觸發(fā)器、過程函數
實現的。 以下內容講通過約束實現數據完整性。
舉例兩個表:
學生(學號,姓名,系編號)
系(系編號,系名稱)
員工(編號,姓名,出生日期,工作日期)
那么:
學號是主鍵列,其值不能錯誤,如不能負值,這就是實體完整性;
系編號是外鍵,學生表的系編號參照系表,也就是說學生表的系編號的值必須在系表的系編號的值范圍內【或者為空】,這就是參照完整性;
員工表的出生日期一定需要小宇工作日期,這就是用戶自定義完整性。
2. 維護數據的完整性,有not null、unique、check、primary key、foreign key五種。
not null例如學生的姓名;unique例如學生的學號;primary key主鍵、foreign key外鍵、check可以按照用戶要求,進行自動檢查。
unique不可以重復,但是可以為空。
primary key不可以重復,也不能為空。
一個表只能一個primary key,卻可以多個unique。
not null只能在列內定義,其他4種約束可以在列定義結束后,在表內定義。
not null示例(這里的not null約束由系統(tǒng)自動起名):
create table yg2(bh number(4) not null,xm varchar2(8));
check示例:
create table yg3(bh number(4) not null check (bh>0 and bh<10000), xm varchar2(8));
unique示例:
create table yg4(部門號 number(4) not null, 部門內號 number(4) , xm varchar2(8) , unique(部門號,部門內號) );
default的使用
create table gz_新員工 (bh number(4),xm varchar2(8),gz number(10) default 1000 ); //適用于沒有向列顯式的指定數值的情況。
primary key示例(此列不允許為空,而且ORACLE會自動為主鍵列創(chuàng)建索引,這里的primary key約束由用戶顯式起名):
create table student(xh number(6) constraint code_pk primary key , xm varchar2(20));
foreign key示例(實現兩個表之間參照與被參照的關系,外鍵只能取主鍵已經有的值,這里的foreign key由系統(tǒng)自動起名):
create table address (xh number(8) ,zz varchar2(50) , foreign key(xh) references student(xh));
試驗primary key和foreign key約束:
insert into student values(1,'張一');
insert into address values(1,'鄭州');
insert into address values(2,'鄭州');
(3)用戶的約束在user_constraints表、和user_cons_columns表中
select * from user_constraints;
實踐練習題目:
問題:
建立2個表,一個是StudentInformatino(學號sno,姓名
sname,年齡sage,性別smale,系編號
deptNo),一個是department(系編號deptno,
系名稱deptname)。
要求:
每個表有主鍵。
StudentInformation表建立外鍵。
學生的姓名不能為空。
學生的年齡要在18到50之間。
學生的性別必須是男女之一,默認是男。
StudentInformation表的deptno列,要參照department表的
deptno列。
3.2 給已有的表添加約束:
除了添加not null需要使用modify命令,其他都是類似alter table tablename add CONSTRAINTS的方式。
上面例子,允許stuInfo中的姓名可以為空:alter table stuinfo modify sname null;
允許stuInfo中的姓名不能重復:alter table stuinfo add constraints sname_unique unique(sname) ;
要求department的系名稱列的內容,必須大于4個字符長度:alter table
department add constraints deptName_check check(length(deptName)>4);
3.3 刪除約束:
alter table 表名 drop constraint 約束名;
alter table department drop constraint deptName_check; -- 刪除剛才建立的department表上的deptName_check 約束
刪除主鍵語句:alter table 表名 drop primary key;
如果出錯:ORA-02273: 此唯一/主鍵已被某些外鍵引用,可以:alter table department drop primary key cascade;
如果刪除一個主鍵被引用的表,可以:drop table 表名 cascade constraints;
看完了這篇文章,相信你對“oracle中數據完整性的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道,感謝各位的閱讀!