玩轉(zhuǎn)Oracle10g實(shí)戰(zhàn)教程全套PPT韓順平_第1頁
玩轉(zhuǎn)Oracle10g實(shí)戰(zhàn)教程全套PPT韓順平_第2頁
玩轉(zhuǎn)Oracle10g實(shí)戰(zhàn)教程全套PPT韓順平_第3頁
玩轉(zhuǎn)Oracle10g實(shí)戰(zhàn)教程全套PPT韓順平_第4頁
玩轉(zhuǎn)Oracle10g實(shí)戰(zhàn)教程全套PPT韓順平_第5頁
已閱讀5頁,還剩177頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、神喻神喻 代神說話的人代神說話的人 甲骨文甲骨文暗示暗示 公司預(yù)作霸主的決心公司預(yù)作霸主的決心地位地位 全球第一大數(shù)據(jù)庫廠商全球第一大數(shù)據(jù)庫廠商 全球第二大獨(dú)立軟件供應(yīng)商全球第二大獨(dú)立軟件供應(yīng)商玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle公司介紹 oracle的含義玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracleoracle公司介紹公司介紹 公司發(fā)展與現(xiàn)狀公司發(fā)展與現(xiàn)狀 1970年 數(shù)據(jù)庫起家 1980年 ORACLE6版本 1990年 ORACLE7版本,多元化產(chǎn)品,以數(shù)據(jù)庫為優(yōu)先發(fā)展方向 1995年 ORACLE8版本 1999年 ORACLE8i版本 2001年 ORACLE9i relea

2、se1 2002年 ORACLE9i release2 2003年 ORACLE10g版本 2007年 ORACLE11g版本 2009年年,甲骨文以每股甲骨文以每股9.5美元的價格收購美元的價格收購Sun,交易總價值約為,交易總價值約為74億億美元。美元。玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle 10g 比oracle 9i增加了什么?簡要說:簡要說:10g支持網(wǎng)格(Grid),支持自動管理(Automatic Management)。詳細(xì)說:詳細(xì)說:10g的g是“Grid”縮寫,支持網(wǎng)格計算,即,多臺結(jié)點(diǎn)服務(wù)器利用高速網(wǎng)絡(luò)組成一個虛擬的高性能服務(wù)器,負(fù)載在整個網(wǎng)格中均衡(Load Ba

3、lance),按需增點(diǎn),避免單點(diǎn)故障(Single Point of Faliure)。安裝容易,安裝工作量比9i減少了一半。新增基于瀏覽器的企業(yè)管理器(Enterprise Manager)。oracleoracle公司介紹公司介紹 公司發(fā)展與現(xiàn)狀公司發(fā)展與現(xiàn)狀玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracleoracle公司介紹公司介紹 Larry Ellisin Larry Ellisin 2013福布斯全球富豪榜拉里埃利森以430億美元名列第五 ORACLE的建立者和發(fā)展者 IT風(fēng)云人物玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle管理工具的介紹管理工具的介紹(1)sql*plus是oracl

4、e自帶的工具軟件,主要用于執(zhí)行sql語句,plsql塊.如何使用如何使用:1)在開始-程序-oracle oradb_home10g-application development-sql*plus2)在運(yùn)行欄中輸入: sqlplusw即可玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle管理工具的介紹管理工具的介紹(2)概述:sqlplus 是 dos下操作oracle的工具,其功能和sql*plus相似.1)在運(yùn)行欄中輸入 sqlplus2)找到該可執(zhí)行文件sqlplus.exe,在oracle主目錄ora10gbinsqlplus.exe ,鼠標(biāo)雙擊即可玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程orac

5、le管理工具的介紹管理工具的介紹(3)概述:pl/sql developer 屬于第三方軟件,主要用于開發(fā),測試,優(yōu)化 oracle pl/sql 的存儲過程比如: 觸發(fā)器,此軟件oracle不帶,需要單獨(dú)安裝。玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle管理工具的介紹管理工具的介紹(4) Enterprise manager console(企業(yè)管理器企業(yè)管理器) oracle 10g是通過web管理的 一般默認(rèn)端口是5500, 也有1158的。 訪問url(請一定保證oracle服務(wù)啟動了): http:/ip:1158 (也可能是5500)/em http:/機(jī)器名:端口/em玩轉(zhuǎn)ora

6、cle 10g實(shí)戰(zhàn)教程sql*plus常用命令常用命令 連接命令 (1)connect用法: conn 用戶名/密碼網(wǎng)絡(luò)服務(wù)名 as sysdba/sysoper當(dāng)用特權(quán)用戶身份連接時,必須帶上 as sysdba 或是 as sysoper(2)disconnect說明:該命令用來斷開與當(dāng)前數(shù)據(jù)庫的連接(3)password說明:該命令用于修改用戶的密碼.如果要想修改其它用戶的密碼,需要用sys/system登陸.(4)show user說明:顯示當(dāng)前用戶名(5)exit說明:該命令會斷開與數(shù)據(jù)庫的連接,同時會退出sql*plus玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql*plus常用命令常用命

7、令 交互式命令(1)& 說明:可以替代變量,而該變量在執(zhí)行時,需要用戶輸入。 sqlselect * from emp where job=&job(2)edit 說明:該命令可以編輯指定的sql腳本 案例:sqledit d:a.sql(3)spool 說明:該命令可以將sql*plus屏幕上的內(nèi)容輸出到指定文件中去. 案例:sqlspool d:b.sql 并輸入 sqlspool off玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql*plus常用命令常用命令 顯示和設(shè)置環(huán)境變量概述:可以用來控制輸出的各種格式。(1)linesize 說明:設(shè)置顯示行的寬度,默認(rèn)是80個字符 sq

8、lshow linesize sqlset linesize 90(2)pagesize 說明:設(shè)置每頁顯示的行數(shù)目,默認(rèn)是14,用法和linesize一樣。至于其它環(huán)境參數(shù)的使用也是大同小異玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle用戶管理用戶管理 創(chuàng)建用戶創(chuàng)建用戶(簡單版簡單版)概述:在oracle中要創(chuàng)建一個新的用戶使用 create user 語句,一般是具有dba(數(shù)據(jù)庫管理員)的權(quán)限才能使用?;菊Z法:create user 用戶名用戶名 identified by 密碼密碼 給用戶修改密碼給用戶修改密碼 概述:如果給自己修改密碼可以直接使用 sqlpassword 用戶名 如果

9、給別人修改密碼則需要具有dba的權(quán)限,或是擁有alter user的系統(tǒng)權(quán)限 sqlalter user 用戶名 identified by 新密碼玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle用戶管理用戶管理 創(chuàng)建用戶(細(xì)節(jié))例子: sql create user shunping identified by m123default tablespace userstemporary tablespace tempquota 3m on users;identified by 表明該用戶shunping 將用數(shù)據(jù)庫方式驗(yàn)證 default tablespace users /用戶的表空間在us

10、ers上temporary tablespace temp /用戶shunping的臨時表健在temp 空間quota 3m on users /表明用戶shunping 建立的數(shù)據(jù)對象(表,索引,視圖,pl/sql塊.)最大只能是3m剛剛創(chuàng)建的用戶是沒有任何權(quán)限的,因此,需要dba給該用戶授權(quán).sqlgrant connect to shunping 如果你希望該用戶建表沒有空間的限制sqlgrand resource to shunping如果你希望該用戶成為dbasqlgrant dba to shunping玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle用戶管理用戶管理 刪除用戶刪除用戶

11、概述:一般以dba的身份去刪除某個用戶,如果用其它用戶去刪除用戶則需要具有 drop user的權(quán)限。比如 drop user 用戶名用戶名 【cascade】玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle用戶管理用戶管理 用戶管理的綜合案例概述:創(chuàng)建的新用戶是沒有任何權(quán)限的,甚至連登錄的數(shù)據(jù)庫的權(quán)限都沒有,需要為其指定相應(yīng)的權(quán)限。給一個用戶賦權(quán)限使用命令grant,回收權(quán)限使用命令 revoke。基本語法基本語法: grant 權(quán)限權(quán)限/角色角色 to 用戶用戶為了給講清楚用戶的管理,這里我給大家舉一個案例。創(chuàng)建 xiaoming,并賦予 connect 和 resource 回收權(quán)限玩轉(zhuǎn)or

12、acle 10g實(shí)戰(zhàn)教程oracle用戶管理用戶管理 使用profile管理用戶口令概述:profile是口令限制,資源限制的命令集合,當(dāng)建立數(shù)據(jù)時,oracle會自動建立名稱為default的profile,當(dāng)建立用戶沒有指定profile選項(xiàng),那oracle就會將default分配給用戶。(1)帳戶鎖定帳戶鎖定概述: 指定該帳戶(用戶)登陸時最多可以輸入密碼的次數(shù),也可以指定用戶鎖定的時間(天)一般用dba的身份去執(zhí)行該命令例子:指定scott這個用戶最多只能嘗試3次登陸,鎖定時間為2天,讓我們看看怎么實(shí)現(xiàn)。創(chuàng)建創(chuàng)建profile文件文件sql create profile lock_ac

13、count limit failed_login_attempts 3 password_lock_time 2;sqlalter user tea profile lock_account;玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle用戶管理用戶管理2)給帳戶給帳戶(用戶用戶)解鎖解鎖sql alter user tea account unlock;(3)終止口令終止口令為了讓用戶定期修改密碼可以使用終止口令的指令來完成,同樣這個命令也需要dba身份來操作.例子:給前面創(chuàng)建的用戶tea創(chuàng)建一個profile文件,要求該用戶每隔10天要修改自家的登陸密碼,寬限期為2天。看看怎么做.sql c

14、reate profile myprofile limit password_life_time 10 password_grace_time 2;sqlalter user tea profile myprofile玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle用戶管理用戶管理 口令歷史口令歷史概述:如果希望用戶在修改密碼時,不能使用以前使用過的密碼,可使用口令歷史,這樣oracle就會將口令修改的信息存放到數(shù)據(jù)字典中,這樣當(dāng)用戶修改密碼時,oracle就會對新舊密碼進(jìn)行比較,當(dāng)發(fā)現(xiàn)新舊密碼一樣時,就提示用戶重新輸入密碼。例子: 1)建立建立profile sql create profile

15、 password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10 password_reuse_time /指定口令可重用時間即10天后就需要修改 2)分配給某個用戶分配給某個用戶. sqlalter user tea profile myprofile玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle用戶管理用戶管理 刪除刪除profileprofile概述:當(dāng)不需要某個profile文件時,可以刪除該文件.sql drop profile sql drop profile prof

16、ileprofile文件名文件名玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle數(shù)據(jù)庫啟動流程數(shù)據(jù)庫啟動流程oracle也可以通過命令行的方式啟動,我們看看具體是怎樣操作。 oracle啟動流程啟動流程-windows下下 1)lsnrctl start (啟動監(jiān)聽啟動監(jiān)聽) 2)oradim startup sid 數(shù)據(jù)庫實(shí)例名數(shù)據(jù)庫實(shí)例名 oracle啟動流程啟動流程-linux下下 1)lsnctl start(啟動監(jiān)聽啟動監(jiān)聽) 2)sqlplus sys/change_on_install as sysdba (以以sysdba身份登錄身份登錄,在在oracle10g后可以這樣寫后可以這

17、樣寫)sqlplus /nologconn sys/change_on_install as sysdba 3)startup 玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle登錄認(rèn)證方式登錄認(rèn)證方式 oracle登錄認(rèn)證方式登錄認(rèn)證方式-windows下下概述:oracle登錄認(rèn)證在windows下和linux下是不完全相同的,這里我們先說說windows下oracle的登錄認(rèn)證方式.操作系統(tǒng)認(rèn)證操作系統(tǒng)認(rèn)證如果當(dāng)前用戶屬于本地操作系統(tǒng)的ora_dba組(對于Windows操作系統(tǒng)而言),即可通過操作系統(tǒng)認(rèn)證。oracle數(shù)據(jù)庫驗(yàn)證數(shù)據(jù)庫驗(yàn)證(密碼文件驗(yàn)證密碼文件驗(yàn)證)對于普通用戶對于普通用戶,

18、oracle默認(rèn)使用數(shù)據(jù)庫驗(yàn)證。對于特權(quán)用戶對于特權(quán)用戶(比如比如sys用戶用戶),oracle默認(rèn)使用操作系統(tǒng)認(rèn)證,如果驗(yàn)證不通過,再到數(shù)據(jù)庫驗(yàn)證(密碼文件驗(yàn)證)。通過配置sqlnet.ora文件,可以修改oracle登錄認(rèn)證方式SQLNET.AUTHENTICATION_SERVICES= (NTS)是基于操作系統(tǒng)驗(yàn)證;SQLNET.AUTHENTICATION_SERVICES= (NONE)是基于Oracle驗(yàn)證;SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存。玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle登錄認(rèn)證方式登錄認(rèn)證方式 orac

19、le登錄認(rèn)證方式登錄認(rèn)證方式-linux下下這里大家了解即可:默認(rèn)情況下linux下的oracle數(shù)據(jù)庫sqlnet.ora文件沒有SQLNET.AUTHENTICATION_SERVICES參數(shù),此時是基于操作系統(tǒng)認(rèn)證和oracle密碼驗(yàn)證共存的,加上SQLNET.AUTHENTICATION_SERVICES參數(shù)后,不管SQLNET.AUTHENTICATION_SERVICES設(shè)置為NONE或者NTS,都是基于oracle密碼驗(yàn)證的。玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程丟失管理員密碼怎么辦丟失管理員密碼怎么辦恢復(fù)辦法:把原有密碼文件刪除,生成一個新的密碼文件?;謴?fù)步驟如下:恢復(fù)步驟如下: 搜

20、索名為 PWD數(shù)據(jù)庫實(shí)例名.ora 文件 刪除該文件,為預(yù)防萬一,建議大家備份 生成新的密碼文件,在dos控制臺下輸入命令:orapwd file=原來密碼文件的全路徑密碼文件名.ora password=新密碼 entries=10;/entries:允許幾個特權(quán)用戶 密碼文件名 一定要和原來的密碼文件名一樣。玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程基本概念基本概念-數(shù)據(jù)庫服務(wù)器、數(shù)據(jù)庫和表的關(guān)系數(shù)據(jù)庫服務(wù)器、數(shù)據(jù)庫和表的關(guān)系MySQLDBDB表表Clientl所謂安裝數(shù)據(jù)庫服務(wù)器,只是在機(jī)器上裝了一個數(shù)據(jù)庫管理程序,這個管理程序可以管理多個數(shù)據(jù)庫,一般開發(fā)人員會針對每一個應(yīng)用創(chuàng)建一個數(shù)據(jù)庫。l為保

21、存應(yīng)用中實(shí)體的數(shù)據(jù),一般會在數(shù)據(jù)庫創(chuàng)建多個表,以保存程序中實(shí)體的數(shù)據(jù)。l數(shù)據(jù)庫服務(wù)器、數(shù)據(jù)庫和表的關(guān)系如圖所示:表玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程基本概念-數(shù)據(jù)在數(shù)據(jù)庫中的存儲方式id=1name=“l(fā)isi”age=23User對象idnameage1lisi232wang24User表id=2name=“wang”age=24行(row)列(column)l表的一行稱之為一條記錄l表中一條記錄對應(yīng)一個java對象的數(shù)據(jù)User對象玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程表的管理-創(chuàng)建表(基本語句)CREATE TABLE table_name(field1 datatype,field2 data

22、type,field3 datatype,)field:指定列名datatype:指定列類型注意:創(chuàng)建表時,要根據(jù)需保存的數(shù)據(jù)創(chuàng)建相應(yīng)的列,并根據(jù)數(shù)據(jù)的類型定義相應(yīng)的列類型。例:user對象 id int name string password string birthday dateIdName Passwordbirthday玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程表的管理表的管理oracle常用數(shù)據(jù)類型常用數(shù)據(jù)類型分類數(shù)據(jù)類型說明文本、二進(jìn)制類型CHAR(size) char(20)VARCHAR(size) varchar(20)nchar(n) nvarchar2(n)clob(chara

23、cter large object)blob(binary large object) 定長 最大2000字符變長 最大4000字符Unicode數(shù)據(jù)類型 ,定長 最大2000字符Unicode數(shù)據(jù)類型 ,變長 最大4000字符字符型大對象 ,最大8tb二進(jìn)制數(shù)據(jù) 可以存放圖片/聲音 8tb數(shù)值類型number(p,s)p為整數(shù)位,s為小數(shù)位.范圍: 1 = p =38, -84 = s = 127保存數(shù)據(jù)范圍:-1.0e-130 = number value 1.0e+126 保存在機(jī)器內(nèi)部的范圍: 1 22 bytes時間日期dateTIMESTAMP(n)包含年月日,時分秒。默認(rèn)格式:D

24、D-MON-YYYY。從公元前4712年1月1日到公元4712年12月31日的所有合法日期n的取值為09.表示指定TIMESTAMP中秒的小數(shù)位數(shù)。N為可選。如果n為0,timestamp與date等價不推薦 number可以理解成是一個可變的數(shù)值類型,比如 number(12) ,你放一個小整數(shù),它占用的字節(jié)數(shù)就少,你放一個大整數(shù),它占用的字節(jié)數(shù)就多,很好!玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表的管理表的管理-oracle支持的數(shù)據(jù)類型支持的數(shù)據(jù)類型 數(shù)值型數(shù)值型 NUMBER(precision , scale) NUMBER(p,s)范圍: 1 = p =38, -84 = s

25、= 127保存數(shù)據(jù)范圍:-1.0e-130 = number value 0精確到小數(shù)點(diǎn)右邊s位,并四舍五入。然后檢驗(yàn)有效位是否 = p。s 0 精確到小數(shù)點(diǎn)左邊s位,并四舍五入。然后檢驗(yàn)有效位是否 all (select sal from emp where deptno=30);擴(kuò)展要求:大家想想還有沒有別的查詢方法.Select ename,sal,deptno from emp where sal(select max(sal) from emp where deptno=30);玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢子查詢子查詢 在多在多行子查詢中使用在多在

26、多行子查詢中使用any操作符操作符請思考:如何顯示工資比部門30的任意一個員工的工資高的員工的姓名、工資和部門號擴(kuò)展要求:大家想想還有沒有別的查詢方法.玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢子查詢子查詢 多列子查詢多列子查詢單行子查詢是指子查詢只返回單列、單行數(shù)據(jù),多行子查詢是指返回單列多行數(shù)據(jù),都是針對單列而言的,而多列子查序則是指查詢返回多個列數(shù)據(jù)的子查詢語句玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢子查詢子查詢 在在from子句中使用子查詢子句中使用子查詢請思考:如何顯示高于自己部門平均工資的員工的信息這里要用到數(shù)據(jù)查詢的小技巧,把一個子查

27、詢當(dāng)作一個臨時表使用解法select e1.*,e2.myavg from emp e1,(select avg(sal) myavg,deptno from emp group by deptno) e2 where e1.deptno=e2.deptno and e1.sale2.myavg解法select e1.* from emp e1 where e1.sal(select avg(sal) from emp where deptno=e1.deptno)玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢子查詢子查詢 在在fromfrom子句中使用子查詢子句中使用子查詢

28、請思考:查找每個部門工資最高的人的詳細(xì)資料解法解法思路:得到所有的員工,進(jìn)行篩選,每拿到一個員工,判斷該員工的工資是否是他們部門的最高工資。select * from emp e where sal=(select max(sal) from emp where deptno=e.deptno);玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢子查詢子查詢 在在fromfrom子句中使用子查詢子句中使用子查詢請思考:顯示每個部門的信息和人員數(shù)量解法自己完成解法查詢獲得所有的部門信息,每獲得一個部門,我們就查詢該部門的人數(shù),保存為一個新的列。select d.*,(select

29、count(*) from emp where deptno=d.deptno) allnum from dept d; 玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢子查詢子查詢 在from子句中使用子查詢這里需要說明的當(dāng)在from子句中使用子查詢時,該子查詢會被作為一個臨時表來對待,當(dāng)在from子句中使用子查詢時,必須給子查詢指定別名.玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢子查詢子查詢 用查詢結(jié)果創(chuàng)建新表用查詢結(jié)果創(chuàng)建新表這個命令是一種快捷的建表方法.create table mytable (id,name,sal,job,deptno) as

30、 select empno,ename,sal,job,deptno from emp; 自我復(fù)制數(shù)據(jù)自我復(fù)制數(shù)據(jù)(蠕蟲復(fù)制蠕蟲復(fù)制)有時,為了對某個sql語句進(jìn)行效率測試,我們需要海量數(shù)據(jù)時,可以使用此法為表創(chuàng)建海量數(shù)據(jù)。insert into mytable (id,name,sal,job,deptno) select empno,ename,sal,job,deptno from emp;玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢合并查詢合并查詢 合并查詢合并查詢有時在實(shí)際應(yīng)用中,為了合并多個select語句的結(jié)果,可以使用集合操作符號 union , union

31、 all,intersect , minus1)union 1)union 該操作符用于取得兩個結(jié)果集的并集。當(dāng)使用該操作符時,會自動去掉結(jié)果集中重復(fù)行。select ename,sal,job from emp where sal2500 union select ename,sal,job from emp where job=MANAGER;玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢合并查詢合并查詢2)union all2)union all該操作賦與union相似,但是它不會取消重復(fù)行,而且不會排序。select ename,sal,job from emp wh

32、ere sal2500 union all select ename,sal,job from emp where job=manager; 3)intersect3)intersect使用該操作符用于取得兩個結(jié)果集的交集。select ename,sal,job from emp where sal2500 intersect select ename,sal,job from emp where job=manager;玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢合并查詢合并查詢4) minus4) minus使用該操作符用于取得兩個結(jié)果集的差集,它只會顯示存在第一個集

33、合中,而不存在第二個集合中的數(shù)據(jù)。select ename,sal,job from emp where sal2500 minus select ename,sal,job from emp where job=manager;玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表內(nèi)連接和外連接表內(nèi)連接和外連接 概述概述表連接分為內(nèi)連接和外連接。 內(nèi)連接內(nèi)連接內(nèi)連接實(shí)際上就是利用 where 子句對兩張表形成的笛卡爾積進(jìn)行篩選,我們前面學(xué)習(xí)的查詢都是內(nèi)連接,也是在開發(fā)過程中用的最多的連接查詢。 玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表內(nèi)連接和外連接表內(nèi)連接和外連接 外連接外連接左外連接左外連接

34、 (如果左側(cè)的表完全顯示我們就說是左外連接)右外連接右外連接 (如果右側(cè)的表完全顯示我們就說是右外連接)完全外連接完全外連接(完全顯示兩個表,沒有匹配的記錄置為空)為了講清楚,我們舉例說明。 -表stuid name 1, Jack2, Tom3, Kity4, nono-表examid grade1, 562, 7611, 8玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表內(nèi)連接和外連接表內(nèi)連接和外連接 外連接外連接1)內(nèi)連接案例(顯示兩表內(nèi)連接案例(顯示兩表id匹配的)匹配的)2)2)左連接(顯示所有人的成績,如果沒有成績,也要顯示該人的姓名左連接(顯示所有人的成績,如果沒有成績,也要顯示該

35、人的姓名和和idid號號, ,成績顯示為空)成績顯示為空)select stu.id,, exam.grade from stu left join exam on stu.id=exam.id 有的程序員喜歡這樣寫左外連接select stu.id,, exam.grade from stu , exam where stu.id=exam.id(+)玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表內(nèi)連接和外連接表內(nèi)連接和外連接 外連接外連接3)3)右連接(顯示所有成績,如果沒有名字匹配,顯示空)右連接(顯示所有成績,如果沒有名字匹配,顯示空)select ex

36、am.id,, exam.grade from stu right join exam on stu.id=exam.id 有的程序員喜歡這樣寫左外連接select exam.id,, exam.grade from stu , exam where stu.id(+)=exam.id4)4)完全外連接(顯示所有成績和所有人的名字,如果相應(yīng)的匹配值,完全外連接(顯示所有成績和所有人的名字,如果相應(yīng)的匹配值,則顯示空)則顯示空)玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表內(nèi)連接和外連接表內(nèi)連接和外連接 一個小練習(xí)一個小練習(xí)為加深大家對外連接的理解,我們做一個小練

37、習(xí)列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門。玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle表復(fù)雜查詢表復(fù)雜查詢創(chuàng)建新數(shù)據(jù)庫實(shí)例創(chuàng)建新數(shù)據(jù)庫實(shí)例 創(chuàng)建數(shù)據(jù)庫有兩種方法創(chuàng)建數(shù)據(jù)庫有兩種方法:1) 通過oracle提供的向?qū)Чぞ?2) 我們可以用手工步驟直接創(chuàng)建.玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle第第3講講1. java程序如何操作oracle 2. 如何在oracle中操作數(shù)據(jù) 3. oracle事務(wù)處理4. sql函數(shù)的使用玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程java連接連接oracle 介紹介紹前面我們一直在plsql中操作oracle,那么如何在java程序中操作數(shù)據(jù)

38、庫呢?下面我們舉例說明,寫一個ShowEmp.java(jsp),分頁顯示emp表的用戶信息。java連接oracle odbc橋連接:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connection ct=DriverManager.getConnection(jdbc:odbc:testsp,scott,m123);java連接oracle jdbc連接Class.forName(oracle.jdbc.driver.OracleDriver);Connection ct=DriverManager.getConnection(jdbc:orac

39、le:thin::1521:myora1,scott,m123);玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程在在oracle中操作數(shù)據(jù)中操作數(shù)據(jù)使用特定的格式插入日期使用特定的格式插入日期 使用 to_date函數(shù)請大家思考:如何插入列帶有日期的表,并按照年-月-日的格式插入?玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中操作數(shù)據(jù)中操作數(shù)據(jù)使用子查詢插入數(shù)據(jù)使用子查詢插入數(shù)據(jù) 介紹介紹當(dāng)使用values子句時,一次只能插入一行數(shù)據(jù),當(dāng)使用子查詢插入數(shù)據(jù)時,一條insert語句可以插入大量的數(shù)據(jù).當(dāng)處理行遷移或者裝載外部表的數(shù)據(jù)到數(shù)據(jù)庫時,可以使用子查詢來插入數(shù)據(jù).玩轉(zhuǎn)oracle 10

40、g實(shí)戰(zhàn)教程oracle中操作數(shù)據(jù)中操作數(shù)據(jù)使用子查詢更新數(shù)據(jù)使用子查詢更新數(shù)據(jù) 介紹介紹使用update語句更新數(shù)據(jù)時,既可以使用表達(dá)式或者數(shù)值直接修改數(shù)據(jù),也可以使用子查詢修改數(shù)據(jù)。?希望員工scott的崗位、工資、補(bǔ)助與smith員工一樣玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 什么是事務(wù)什么是事務(wù)事務(wù)用于保證數(shù)據(jù)的一致性,它由一組相關(guān)的dml語句組成,該組的dml語句要么全部成功,要么全部失敗。如:網(wǎng)上轉(zhuǎn)賬就是典型的要用事務(wù)來處理,用以保證數(shù)據(jù)的一致性。 事務(wù)和鎖事務(wù)和鎖當(dāng)執(zhí)行事務(wù)操作時(dml語句),oracle會在被作用的表上加鎖,防止其它用戶改表表的結(jié)構(gòu).這

41、里對我們用戶來講是非常重要的。 提交事務(wù)提交事務(wù)當(dāng)執(zhí)使用commit語句可以提交事務(wù).當(dāng)執(zhí)行了commit語句子后,會確認(rèn)事務(wù)的變化、結(jié)束事務(wù)、刪除保存點(diǎn)、釋放鎖,當(dāng)使用commit語句結(jié)束事務(wù)子后,其它會話將可以查看到事務(wù)變化后的新數(shù)據(jù)玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 回退事務(wù)回退事務(wù)在介紹回退事務(wù)前,我們先介紹一下保存點(diǎn)(savepoint)的概念和作用.保存點(diǎn)是事務(wù)中的一點(diǎn).用于取消部分事務(wù),當(dāng)結(jié)束事務(wù)時,會自動的刪除該事務(wù)所定義的所有保存點(diǎn).當(dāng)執(zhí)行rollback時,通過指定保存點(diǎn)可以回退到指定的點(diǎn),這里我們作圖說明 事務(wù)的幾個重要操作事務(wù)的幾個重要操作

42、1) 設(shè)置保存點(diǎn) savepoint 保存點(diǎn)名2) 取消部分事務(wù) rollback to 保存點(diǎn)名3) 取消全部事務(wù) rollback玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 java程序中如何使用事務(wù)程序中如何使用事務(wù)在java操作數(shù)據(jù)庫時,為了保證數(shù)據(jù)的一致性,比如轉(zhuǎn)帳操作(圖):(1)從一個帳戶減掉10$(2)在另一個帳戶上加入10$,我們看看如何使用事務(wù)?玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 事務(wù)隔離級別事務(wù)隔離級別 事務(wù)隔離級別事務(wù)隔離級別概念:隔離級別定義了事務(wù)與事務(wù)之間的隔離程度。ANSI/ISO SQL92標(biāo)準(zhǔn)定義了一些數(shù)據(jù)庫

43、操作的隔離級別(這是國際標(biāo)準(zhǔn)化組織定義的一個標(biāo)準(zhǔn)而已,不同的數(shù)據(jù)庫在實(shí)現(xiàn)時有所不同不同的數(shù)據(jù)庫在實(shí)現(xiàn)時有所不同):隔離級別隔離級別 臟讀臟讀 不可重復(fù)讀不可重復(fù)讀 幻讀幻讀 讀未提交(Read uncommitted)VVV讀已提交(Read committed)xVV可重復(fù)讀(Repeatable read)xxV可串行化(Serializable )xxxV 可能出現(xiàn) x 不會出現(xiàn) 玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 事務(wù)隔離級別事務(wù)隔離級別 事務(wù)隔離級別事務(wù)隔離級別臟讀(臟讀(dirty read):當(dāng)一個事務(wù)讀取另一個事務(wù)尚未提交的修改時,產(chǎn)生臟讀。不可重

44、復(fù)讀(不可重復(fù)讀(nonrepeatable read):同一查詢在同一事務(wù)中多次進(jìn)行,由于其他提交事務(wù)所做的修改或刪除,每次返回不同的結(jié)果集,此時發(fā)生非重復(fù)讀。幻讀(幻讀(phantom read):同一查詢在同一事務(wù)中多次進(jìn)行,由于其他提交事務(wù)所做的插入操作,每次返回不同的結(jié)果集,此時發(fā)生幻讀。玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 事務(wù)隔離級別事務(wù)隔離級別 oracle的事務(wù)隔離級別的事務(wù)隔離級別 ORACLE提供了SQL92標(biāo)準(zhǔn)中的read committed和serializable,同時提供了非SQL92標(biāo)準(zhǔn)的read-only oracle的 read

45、committed 說明: 這是ORACLE缺省的事務(wù)隔離級別。 保證不會臟讀;但可能出現(xiàn)非重復(fù)讀和幻像。 oracle的 serializable 說明: serializable就是使事務(wù)看起來象是一個接著一個地順序地執(zhí)行(從效果上可以這樣理解) 僅僅能看見在本事務(wù)開始前由其它事務(wù)提交的更改和在本事務(wù)中所做的更改 保證不會出現(xiàn)臟讀、不可重復(fù)讀和幻讀 Serializable隔離級別提供了read-only事務(wù)所提供的讀一致性(事務(wù)級的讀一致性),同時又允許DML操作玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 事務(wù)隔離級別事務(wù)隔離級別 oracle的事務(wù)隔離級別的事務(wù)隔

46、離級別 oracle的 read only 說明: 遵從事務(wù)級的讀一致性,僅僅能看見在本事務(wù)開始前由其它事務(wù)提交的更改。 不允許在本事務(wù)中進(jìn)行DML操作。 read only是serializable的子集。它們都避免了不可重復(fù)讀和幻讀。區(qū)別是在read only中是只讀;而在serializable中可以進(jìn)行DML操作玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 事務(wù)隔離級別事務(wù)隔離級別 oracle的事務(wù)隔離級設(shè)置的事務(wù)隔離級設(shè)置 設(shè)置一個事務(wù)的隔離級別 設(shè)置整個會話的隔離級別玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 事務(wù)隔離級別事務(wù)隔離級別 o

47、racle的事務(wù)隔離級的事務(wù)隔離級-案例案例 我們舉例一個案例來說明oracle的事務(wù)隔離級別. 以對emp表進(jìn)行操作為例。sqlplus控制臺sqlplus控制臺玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理 事務(wù)隔離級別事務(wù)隔離級別 oracle的事務(wù)隔離級在的事務(wù)隔離級在java程序中如何使用程序中如何使用connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);特別說明特別說明:java程序中Connection.XXXXXX有五個,但不是所有的數(shù)據(jù)庫對有對應(yīng)的五個事務(wù)隔離級別實(shí)

48、現(xiàn)。在實(shí)際工作中,我們極少去修改各個數(shù)據(jù)庫默認(rèn)的隔離級別。 玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle中事務(wù)處理中事務(wù)處理只讀事務(wù)只讀事務(wù) 只讀事務(wù)實(shí)際運(yùn)用案例只讀事務(wù)實(shí)際運(yùn)用案例只讀事務(wù)是指只允許執(zhí)行查詢的操作,而不允許執(zhí)行任何其它dml操作的事務(wù),使用只讀事務(wù)可以確保用戶只能取得某時間點(diǎn)的數(shù)據(jù)。假定機(jī)票代售點(diǎn)每天18點(diǎn)開始統(tǒng)計今天的銷售情況,這時可以使用只讀事務(wù).在設(shè)置了只讀事務(wù)后,盡管其它會話可能會提交新的事務(wù),但是只讀事務(wù)將不會取得最新數(shù)據(jù)的變化,從而可以保證取得特定時間點(diǎn)的數(shù)據(jù)信息。(圖示) 設(shè)置只讀事務(wù)設(shè)置只讀事務(wù)set transaction read only玩轉(zhuǎn)oracle

49、 10g實(shí)戰(zhàn)教程sql函數(shù)的使用函數(shù)的使用字符函數(shù)字符函數(shù) 介紹介紹字符函數(shù)是oracle中最常用的函數(shù),我們來看看有哪些字符函數(shù): replace(char1,search_string,replace_string) instr(char1,char2,n,m)取子串在字符串的位置?顯示所有員工的姓名,用”我是A”替換所有A“玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql函數(shù)的使用函數(shù)的使用數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) 介紹介紹數(shù)學(xué)函數(shù)的輸入?yún)?shù)和返回值的數(shù)據(jù)類型都是數(shù)字類型的.數(shù)學(xué)函數(shù)包括cos,cosh,exp,ln,log,sin,sinh,sqrt,tan, tanh,acos,asin,atan,r

50、ound,我們講最常用的 : round(n,m) trunc(n,m) mod(m,n) floor(n) ceil(n)對數(shù)字的處理,在財務(wù)系統(tǒng)或銀行系統(tǒng)中用的最多,不同的處理方法,對財務(wù)報表有不同的結(jié)果。玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql函數(shù)的使用函數(shù)的使用數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) 介紹介紹 round(n,m) 該函數(shù)用于執(zhí)行四舍五入,如果省掉m,則四舍五入到整數(shù);如果m是正數(shù),則四舍五入到小數(shù)點(diǎn)的m位后.如果m是負(fù)數(shù),則四舍五入到小數(shù)點(diǎn)的m位前 trunc(n,m) 該函數(shù)用于截取數(shù)字.如果省掉m,就截去小數(shù)部分,如果m是正數(shù)就截取到小數(shù)點(diǎn)的m位后,如果m是負(fù)數(shù),則截取到小數(shù)點(diǎn)的前m位

51、mod(m,n) floor(n) 返回小于或是等于n的最大整數(shù) ceil(n) 返回大于或是等于n的最小整數(shù)案例數(shù)據(jù): 2345.56 45.94?顯示在一個月為30天的情況所有員工的日薪金,忽略余數(shù).玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql函數(shù)的使用函數(shù)的使用數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) 介紹介紹其它的數(shù)學(xué)函數(shù),有興趣的同學(xué)可以自己去看看:abs(n) 返回數(shù)字n的絕對值select abs(-13) from dual;acos(n) :返回數(shù)字的反余旋值asin(n): 返回數(shù)字的反正旋值atan(n): 返回數(shù)字的反正切cos(n)exp(n): 返回e的n次冪log(m,n)返回對數(shù)值power

52、(m,n):返回m的n次冪玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql函數(shù)的使用函數(shù)的使用日期函數(shù)日期函數(shù) 介紹介紹日期函數(shù)用于處理date類型的數(shù)據(jù).默認(rèn)情況下日期格式是dd-mon-yy 即12-7月-78(1)sysdate: 該函數(shù)返回系統(tǒng)時間(2)add_months(d,n)(3)last_day(d):返回指定日期所在月份的最后一天?查找已經(jīng)入職8個月多的員工?顯示滿10年服務(wù)年限的員工的姓名和受雇日期.?對于每個員工,顯示其加入公司的天數(shù).?找出各月倒數(shù)第3天受雇的所有員工.玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql函數(shù)的使用函數(shù)的使用轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù) 介紹介紹 轉(zhuǎn)換函數(shù)用于將數(shù)據(jù)類型從

53、一種轉(zhuǎn)為另外一種.在某些情況下,oracle server允許值的數(shù)據(jù)類型和實(shí)際的不一樣,這時oracle server會隱含的隱含的轉(zhuǎn)化數(shù)據(jù)類型轉(zhuǎn)化數(shù)據(jù)類型,比如:create table t1(id number);insert into t1 values(10) -這樣oracle會自動的將10-10create table t2 (id varchar2(10);insert into t2 values(1); -這樣oracle 就會自動的將1-1;我們要說的是盡管oracle可以進(jìn)行隱含的數(shù)據(jù)類型的轉(zhuǎn)換,但是它并不適應(yīng)所有的情況,為了提高程序的可靠性,我們應(yīng)該使用轉(zhuǎn)換函數(shù)進(jìn)行轉(zhuǎn)

54、換玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql函數(shù)的使用函數(shù)的使用轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù) to_char你可以使用 select ename,hiredate,sal from emp where deptno=10;顯示信息,可是,在某些情況下,這個并不能滿足你的需求。?日期是否可以顯示 時/分/秒?薪水是否可以顯示指定的貨幣符號yy: yy: 兩位數(shù)字的年份兩位數(shù)字的年份 2004-04 2004-04 yyyy: yyyy: 四位數(shù)字的年份四位數(shù)字的年份 20042004年年mm :mm :兩位數(shù)字的月份兩位數(shù)字的月份 8 8月月-08-08dd: 2dd: 2位數(shù)字的天位數(shù)字的天 3030號號-3

55、0-30hh24: 8hh24: 8點(diǎn)點(diǎn)2020hh12: 8hh12: 8點(diǎn)點(diǎn)0808mimi、ss -ss -顯示分鐘顯示分鐘 秒秒9:9:顯示數(shù)字顯示數(shù)字, ,并忽略前面并忽略前面0 00:0:顯示數(shù)字顯示數(shù)字, ,如位數(shù)不足如位數(shù)不足, ,則用則用0 0補(bǔ)齊補(bǔ)齊. .:在指定位置顯示小數(shù)點(diǎn):在指定位置顯示小數(shù)點(diǎn),: ,: 在指定位置顯示逗號在指定位置顯示逗號$: $: 在數(shù)字前加美元在數(shù)字前加美元L: L: 在數(shù)字前加本地貨幣符號在數(shù)字前加本地貨幣符號C: C: 在數(shù)字前加國際貨幣符號在數(shù)字前加國際貨幣符號G:G:在指定位置顯示組分隔符、在指定位置顯示組分隔符、D:D:在指定位置顯示小

56、數(shù)點(diǎn)符號在指定位置顯示小數(shù)點(diǎn)符號(.)(.)select ename,to_char(sal,L99G999D99) from emp ;玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql函數(shù)的使用函數(shù)的使用轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù) 小練習(xí)小練習(xí)(to_char)?顯示1980年入職的所有員工?顯示所有12月份入職的員工 to_date函數(shù)to_date用于將字符串轉(zhuǎn)換成date類型的數(shù)據(jù).?能否按照中國人習(xí)慣的方式年-月-日添加日期 玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程sql函數(shù)的使用函數(shù)的使用系統(tǒng)系統(tǒng)函數(shù)函數(shù) sys_context1) terminal :當(dāng)前會話客戶所對應(yīng)的終端的標(biāo)識符2) lanuage:

57、語言3) db_name: 當(dāng)前數(shù)據(jù)庫名稱4) nls_date_format:當(dāng)前會話客戶所對應(yīng)的日期格式5) session_user: 當(dāng)前會話客戶所對應(yīng)的數(shù)據(jù)庫用戶名6) current_schema: 當(dāng)前會話客戶所對應(yīng)的默認(rèn)方案名?7) host: 返回數(shù)據(jù)庫所在主機(jī)的名稱通過該函數(shù),可以查詢一些重要信息,比如你怎在使用哪個數(shù)據(jù)庫?select sys_context(userenv,db_name) from dual;玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程oracle第第4講講1. 1. 維護(hù)數(shù)據(jù)的完整性維護(hù)數(shù)據(jù)的完整性 2. 2. 序列序列(sequence) (sequence)

58、 3. 3. 管理管理索引索引4. 4. 管理權(quán)限和角色管理權(quán)限和角色玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程維護(hù)數(shù)據(jù)的完整性維護(hù)數(shù)據(jù)的完整性 介紹介紹數(shù)據(jù)的完整性用于確保數(shù)據(jù)庫數(shù)據(jù)遵從一定的商業(yè)的邏輯規(guī)則。在oracle中,數(shù)據(jù)完整性可以使用約束、觸發(fā)器、應(yīng)用程序(過程、函數(shù))三種方法來實(shí)現(xiàn),在這三種方法中,因?yàn)榧s束易于維護(hù),并且具有最好的性能,所以作為維護(hù)數(shù)據(jù)完整性的首選.玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程維護(hù)數(shù)據(jù)的完整性維護(hù)數(shù)據(jù)的完整性 約束約束約束用于確保數(shù)據(jù)庫數(shù)據(jù)滿足特定的商業(yè)規(guī)則。在oracle中,約束包括: not null、unique,primary key,foreign key,和

59、check 五種.玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程維護(hù)數(shù)據(jù)的完整性維護(hù)數(shù)據(jù)的完整性 not null(非空非空)如果在列上定義了not null,那么當(dāng)插入數(shù)據(jù)時,必須為列提供數(shù)據(jù)。 unique(唯一唯一)當(dāng)定義了唯一約束后,該列值是不能重復(fù)的.但是可以為null。 primary key(主鍵主鍵)用于唯一的標(biāo)示表行的數(shù)據(jù),當(dāng)定義主鍵約束后,該列不但不能重復(fù)而且不能為null。需要說明的是:一張表最多只能有一個主鍵,但是可以有多個unqiue約束。 foreign key(外鍵外鍵)用于定義主表和從表之間的關(guān)系.外鍵約束要定義在從表從表上,主表則必須具有主鍵約束或是unique約束.,當(dāng)定

60、義外鍵約束后,要求外鍵列數(shù)據(jù)必須在主表的主鍵列存在或是為null玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程維護(hù)數(shù)據(jù)的完整性維護(hù)數(shù)據(jù)的完整性 check用于強(qiáng)制行數(shù)據(jù)必須滿足的條件,假定在sal列上定義了check約束,并要求sal列值在10002000之間如果不再10002000之間就會提示出錯。玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程維護(hù)數(shù)據(jù)的完整性維護(hù)數(shù)據(jù)的完整性 商店售貨系統(tǒng)表設(shè)計案例商店售貨系統(tǒng)表設(shè)計案例(1)(1)現(xiàn)有一個商店的數(shù)據(jù)庫,記錄客戶及其購物情況,由下面三個表組成:現(xiàn)有一個商店的數(shù)據(jù)庫,記錄客戶及其購物情況,由下面三個表組成:商品商品goodsgoods(商品號(商品號goodsIdgoodsId,商品名,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論