版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一數(shù)據(jù)庫(kù)模型第章企業(yè)級(jí)卓越人才培養(yǎng)目標(biāo)了解數(shù)據(jù)庫(kù)相關(guān)概念理解數(shù)據(jù)庫(kù)的定義理解Oracle數(shù)據(jù)庫(kù)管理系統(tǒng)體系結(jié)構(gòu)掌握關(guān)系型數(shù)據(jù)庫(kù)E-R建模,掌握Oracle數(shù)據(jù)庫(kù)體系結(jié)構(gòu)的組成及相關(guān)概念數(shù)據(jù)庫(kù)的相關(guān)概念數(shù)據(jù)(DATA):描述現(xiàn)實(shí)世界事物的符號(hào)標(biāo)記。包括:數(shù)字、文字、圖形、聲音等。數(shù)據(jù)庫(kù)(DATABASE)相關(guān)數(shù)據(jù)的集合按照一定的數(shù)據(jù)模型組織存儲(chǔ)在一起能為多個(gè)應(yīng)用程序共享數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS-Database Management System): 幫助用戶使用和管理數(shù)據(jù)庫(kù)的軟件系統(tǒng)數(shù)據(jù)庫(kù)的相關(guān)概念數(shù)據(jù)(DATA):描述現(xiàn)實(shí)世界事物的符號(hào)標(biāo)記。包括:數(shù)字、文字、圖形、聲音等。數(shù)據(jù)庫(kù)(DATAB
2、ASE)相關(guān)數(shù)據(jù)的集合按照一定的數(shù)據(jù)模型組織存儲(chǔ)在一起能為多個(gè)應(yīng)用程序共享數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS-Database Management System): 幫助用戶使用和管理數(shù)據(jù)庫(kù)的軟件系統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的相關(guān)概念檢索數(shù)據(jù)插入數(shù)據(jù)更新數(shù)據(jù)刪除數(shù)據(jù)數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS至尊寶A004白晶晶A003盤絲大仙B008菩提老祖B007數(shù)據(jù)數(shù)據(jù)庫(kù)的相關(guān)概念數(shù)據(jù)庫(kù)管理系統(tǒng)的組成 數(shù)據(jù)描述語(yǔ)言DDL數(shù)據(jù)操作語(yǔ)言DML 其它的管理與控制程序(TCL,DCL)數(shù)據(jù)庫(kù)的特點(diǎn):數(shù)據(jù)的結(jié)構(gòu)化數(shù)據(jù)共享9減少數(shù)據(jù)冗余優(yōu)良的永久存儲(chǔ)功能數(shù)據(jù)庫(kù)的相關(guān)概念關(guān)系型數(shù)據(jù)庫(kù)以關(guān)系數(shù)學(xué)模型來(lái)表示的數(shù)據(jù)庫(kù)以二維表的形式來(lái)描述數(shù)據(jù) 完整的
3、關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)包含5層結(jié)構(gòu) 用戶關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)操作系統(tǒng)硬件數(shù)據(jù)庫(kù)設(shè)計(jì)概念結(jié)構(gòu)(概念模型):對(duì)現(xiàn)實(shí)世界的一種抽象 概念結(jié)構(gòu)要點(diǎn):獨(dú)立于數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu),也獨(dú)立于DBMS是現(xiàn)實(shí)世界與機(jī)器世界的中介是現(xiàn)實(shí)世界的一個(gè)真實(shí)模型 ,易于理解,便于用戶的參與當(dāng)現(xiàn)實(shí)世界需求改變時(shí),概念結(jié)構(gòu)可以很容易地作相應(yīng)調(diào)整 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)模型抽象推理實(shí)現(xiàn)現(xiàn)實(shí)世界機(jī)器世界信息世界強(qiáng)調(diào)語(yǔ)義描述強(qiáng)調(diào)結(jié)構(gòu)描述客觀事物用戶要求概念結(jié)構(gòu)關(guān)系,網(wǎng)狀,層次數(shù)據(jù)模型DBMS數(shù)據(jù)庫(kù)管理系統(tǒng)(語(yǔ)義和結(jié)構(gòu))概念設(shè)計(jì)邏輯設(shè)計(jì)物理設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)概念結(jié)構(gòu)設(shè)計(jì)方法自頂向下自底向上逐步擴(kuò)張混合策略描述概念結(jié)構(gòu)的工具
4、- E-R模型數(shù)據(jù)庫(kù)設(shè)計(jì)E-R模型E-R模型三要素:實(shí)體(用矩形表示)屬性(用橢圓表示)聯(lián)系(用菱形表示 )一對(duì)一(1 : 1)一對(duì)多(1 : n)多對(duì)多(m : n)數(shù)據(jù)庫(kù)設(shè)計(jì)E-R模型抽象的三種方法: 學(xué)生姓名學(xué)號(hào)年齡性別學(xué)生本科生??粕芯可M(jìn)修生學(xué)生張三李四王五李六分類聚集概括數(shù)據(jù)庫(kù)設(shè)計(jì)E-R模型建立E-R圖時(shí)應(yīng)避免沖突和冗余合并分E-R圖時(shí)沖突主要有三類屬性沖突命名沖突結(jié)構(gòu)沖突 合并分E-R圖需要注意的冗余問(wèn)題冗余屬性的消除 冗余聯(lián)系的消除 實(shí)體類型的合并 數(shù)據(jù)庫(kù)設(shè)計(jì)E-R模型 一個(gè)E-R模型實(shí)例:學(xué)生選修課程及班主任任課情況 分析:王老師黎明王小趙華利斯自然歷史C語(yǔ)言Java語(yǔ)言班
5、主任表學(xué)生表課程表數(shù)據(jù)庫(kù)設(shè)計(jì)E-R模型學(xué)生選修課程及班主任任課情況 的E-R模型如圖所示:學(xué)號(hào)姓名年齡性別學(xué)生選修成績(jī)課程號(hào)課程名學(xué)分課程班主任教授任課教師號(hào)教師名1nnm1n范式范式:關(guān)系數(shù)據(jù)庫(kù)規(guī)范化設(shè)計(jì)的規(guī)則目前關(guān)系數(shù)據(jù)庫(kù)有六種范式 :第一范式(1NF) 第六范式(6NF)一般說(shuō)來(lái),數(shù)據(jù)庫(kù)只需滿足第三范式 范式第一范式(1NF):是指數(shù)據(jù)庫(kù)表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng)員工的名稱員工職務(wù)員工薪水和住址黎明程序員2000.00,蘇州市梟雄軟件工程師1500.00,上海市王麗項(xiàng)目經(jīng)理8000.00,蘇州市里程總經(jīng)理10000.00,北京市員工的名稱員工職務(wù)員工薪水員工住址黎明程序員2000
6、.00蘇州市梟雄軟件工程師1500.00上海市王麗項(xiàng)目經(jīng)理8000.00蘇州市里程總經(jīng)理10000.00北京市“員工薪水和住址”屬性可以再分拆,不符合第一范式的定義 滿足第一范式,因?yàn)槊苛卸疾荒芊植?,無(wú)重復(fù)的列,屬性單一 范式第二范式(2NF)是在第一范式的基礎(chǔ)上建立起來(lái)的,即滿足第二范式必須先滿足第一范式要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分 (要有一個(gè)主關(guān)鍵字)要求實(shí)體的屬性完全依賴于主關(guān)鍵字 員工號(hào)員工的名稱員工職務(wù)員工薪水員工住址0001黎明程序員2000.00蘇州市0002梟雄軟件工程師1500.00上海市0003王麗項(xiàng)目經(jīng)理8000.00蘇州市0004里程總經(jīng)理10000
7、.00北京市增加了主鍵(員工號(hào))來(lái)唯一標(biāo)識(shí)一個(gè)員工,符合第二范式的要求 范式第三范式(3NF)滿足第三范式必須先滿足第二范式要求一個(gè)數(shù)據(jù)庫(kù)表中不包含在其它表中已包含的非主關(guān)鍵字信息 部門號(hào)部門名稱部門主管1001開(kāi)發(fā)部王維1002人事部李白1003總辦杜甫1004行政部羅斯福員工號(hào)員工的名稱所在部門編號(hào)員工職務(wù)員工薪水員工住址0001黎明1001程序員2000.00蘇州市0002梟雄1002軟件工程師1500.00上海市0003王麗1003項(xiàng)目經(jīng)理8000.00蘇州市0004里程1004總經(jīng)理10000.00北京市Oracle體系結(jié)構(gòu)Oracle是全球最大的關(guān)系型數(shù)據(jù)庫(kù)和信息管理軟件供應(yīng)商,其
8、數(shù)據(jù)庫(kù)產(chǎn)品運(yùn)行穩(wěn)定、性能卓越。Oracle產(chǎn)品的突出特點(diǎn)支持大數(shù)據(jù)庫(kù)、多用戶的高性能的事務(wù)處理遵守?cái)?shù)據(jù)存取語(yǔ)言、操作系統(tǒng)、用戶接口和網(wǎng)絡(luò)通訊協(xié)議的工業(yè)標(biāo)準(zhǔn)優(yōu)秀的安全控制和完整性控制支持分布式數(shù)據(jù)庫(kù)和分布式處理具有可移植性、可兼容性和可延續(xù)性對(duì)象關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)等Oracle體系結(jié)構(gòu)Oracle server:第一個(gè)面性對(duì)象的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng) Oracle server 組成:實(shí)例(INSTANCE)數(shù)據(jù)庫(kù)(DATABASE)管理數(shù)據(jù)庫(kù)的后臺(tái)進(jìn)程和內(nèi)存結(jié)構(gòu)的集合稱為 Oracle 實(shí)例 Oracle 服務(wù)器 Oracle 數(shù)據(jù)庫(kù) Oracle 實(shí)例Oracle體系結(jié)構(gòu)ORACLE SERVE
9、R概圖 ORACLE SEVER實(shí)例SGA(內(nèi)存結(jié)構(gòu)組) 重做日志緩沖區(qū) SMON共享池?cái)?shù)據(jù)高速緩存數(shù)據(jù)文件控制文件重做日志文件后臺(tái)進(jìn)程組PMONDBWRCKPTLGWROracle體系結(jié)構(gòu)Oracle數(shù)據(jù)庫(kù)物理結(jié)構(gòu)數(shù)據(jù)文件用于存儲(chǔ)數(shù)據(jù)庫(kù)數(shù)據(jù),如表、索引數(shù)據(jù)等。重做日志文件參數(shù)文件數(shù)據(jù)文件 物理結(jié)構(gòu)控制文件重做日志文件記錄對(duì)數(shù)據(jù)庫(kù)的所有修改信息,用于故障恢復(fù)控制文件是記錄數(shù)據(jù)庫(kù)物理結(jié)構(gòu)的二進(jìn)制文件。參數(shù)文件是用來(lái)定義數(shù)據(jù)庫(kù)參數(shù)的二進(jìn)制文件Oracle體系結(jié)構(gòu)ORACLE數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)與物理結(jié)構(gòu)關(guān)系圖數(shù)據(jù)庫(kù)表空間段區(qū)塊數(shù)據(jù)文件O/S塊Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)在物理上是存放在數(shù)據(jù)文件中的,而在邏輯
10、上是存放在表空間中Oracle體系結(jié)構(gòu)表空間(TABLESPACE)表空間用于組織數(shù)據(jù)庫(kù)數(shù)據(jù)一個(gè) Oracle 數(shù)據(jù)庫(kù)至少包含一個(gè)表空間,就是名為SYSTEM的系統(tǒng)表空間表空間物理上由一個(gè)或多個(gè)物理文件組成 Oracle建議把不同類型的數(shù)據(jù)存放到不同表空間。通過(guò)使用不同的表空間,可以控制使用的磁盤空間量,提高系統(tǒng)的性能。Oracle體系結(jié)構(gòu)段(SEGMENT)段用于存儲(chǔ)特定邏輯結(jié)構(gòu)的數(shù)據(jù),段由一個(gè)或多個(gè)區(qū)組成段的類型包括:數(shù)據(jù)段、索引段、臨時(shí)段、回滾段 區(qū)(EXTENT)區(qū)由連續(xù)的數(shù)據(jù)塊組成,它是Oracle空間分配的邏輯單元。塊(DATABASE BLOCK)數(shù)據(jù)塊也被稱為Oracle塊,它
11、是數(shù)據(jù)庫(kù)文件上執(zhí)行I/O操作的最小單位,并且尺寸應(yīng)該是O/S塊的整數(shù)倍 Oracle體系結(jié)構(gòu)后臺(tái)進(jìn)程DBWR:完成用戶提出的數(shù)據(jù)變動(dòng)請(qǐng)求,把數(shù)據(jù)寫入數(shù)據(jù)文件;LGWR:把事務(wù)信息寫入重做日志文件;SMON:當(dāng)數(shù)據(jù)庫(kù)突然斷電等情況發(fā)生時(shí),該進(jìn)程用于恢復(fù)實(shí)例。其它后臺(tái)進(jìn)程:PMON進(jìn)程監(jiān)控進(jìn)程,CKPT發(fā)出檢查點(diǎn)進(jìn)程等 總結(jié)本章從了解數(shù)據(jù)庫(kù)基本概念出發(fā),從宏觀上了解了數(shù)據(jù)庫(kù)的組成和用途 根據(jù)用戶需求創(chuàng)建E-R圖模型,掌握E-R模型,了解數(shù)據(jù)模型在概念設(shè)計(jì)中的重要地位,以及在邏輯設(shè)計(jì)中的基礎(chǔ)作用怎樣通過(guò)范化設(shè)計(jì)數(shù)據(jù)庫(kù)表是本章重要內(nèi)容之一,深入理解范化的目的:使結(jié)構(gòu)更合理,消除存儲(chǔ)異常,使數(shù)據(jù)冗余盡量
12、小,便于插入、刪除和更新數(shù)據(jù) 理解Oracle體系結(jié)構(gòu),Oracle物理設(shè)計(jì)和邏輯設(shè)計(jì) 二數(shù)據(jù)類型第章企業(yè)級(jí)卓越人才培養(yǎng)目標(biāo)了解Oracle數(shù)據(jù)庫(kù)類型,建立Oracle數(shù)據(jù)庫(kù)對(duì)象的基本步驟理解數(shù)據(jù)類型在數(shù)據(jù)庫(kù)設(shè)計(jì)中的地位及使用方法掌握Oracle常用的數(shù)據(jù)類型、常用的函數(shù),熟練使用OracleOracle SQL數(shù)據(jù)類型Oracle的數(shù)據(jù)類型主要有:標(biāo)量類型(Scalar)復(fù)合類型(Composite)參照類型(Reference)LOB類型(Large Object)本章在數(shù)據(jù)類型方面主要掌握基本數(shù)據(jù)類型:標(biāo)量數(shù)據(jù)類型 標(biāo)量數(shù)據(jù)類型類型說(shuō)明char(n)定長(zhǎng)字符類型,n=1 to 2000字
13、節(jié)varchar2(n)變長(zhǎng)字符類型,n=1 to 4000字節(jié)number(m,n)可變長(zhǎng)的數(shù)值類型,m是所有有效數(shù)字的位數(shù),n是小數(shù)點(diǎn)以后的位數(shù)date日期和時(shí)間類型,缺省格式:DD-MON-YYlong變長(zhǎng)字符類型,最大長(zhǎng)度限制是2GBraw(n)變長(zhǎng)二進(jìn)制數(shù)據(jù)類型,n=1 to 2000long raw變長(zhǎng)二進(jìn)制數(shù)據(jù)類型,最大長(zhǎng)度是2GBboolean布爾數(shù)據(jù)類型,其值為TRUE、FALSE、NULL,非表列數(shù)據(jù)類型,是PL/SQL數(shù)據(jù)類型binary_integer整數(shù)類型,取值范圍為:-2147483647和2147483647之間,是PL/SQL數(shù)據(jù)類型,不能用于表列Oracle
14、內(nèi)置函數(shù)主要的函數(shù)分類有:數(shù)字函數(shù)字符函數(shù)日期函數(shù)轉(zhuǎn)換函數(shù)集合函數(shù)分組函數(shù)等數(shù)字函數(shù)數(shù)字函數(shù)的輸入?yún)?shù)和返回值都是數(shù)字型 select ABS(-100) from dual ;ABS(n) 返回?cái)?shù)字n的絕對(duì)值select FLOOR(15.1) from dual ;FLOOR(n) 返回小于等于數(shù)字n的最大整數(shù) select CEIL(10.3) from dual ;CEIL(n) 返回大于等于數(shù)字n的最小整數(shù) 數(shù)字函數(shù)select MOD(10, 3) from dual ;MOD(m,n) 返回兩個(gè)數(shù)字相除后的余數(shù)select POWER(-2, 3) from dual ;POWE
15、R(m,n) 返回?cái)?shù)字m的n次冪 select ROUND(99.989, 2) from dual ;ROUND(n,m) 執(zhí)行四舍五入運(yùn)算,m為要保留的小數(shù)位數(shù) 數(shù)字函數(shù)select SIN(0.3) from dual ;SIN(n) 返回?cái)?shù)字n的正弦值(以弧度表示角) select COS(0.5) from dual ;COS(n) 返回?cái)?shù)字n的余弦值 select LOG(2, 8) from dual ;LOG(m,n) 返回?cái)?shù)字m為底的數(shù)字n的對(duì)數(shù) 字符函數(shù)字符函數(shù)輸入的參數(shù)是字符類型,返回值是數(shù)字類型或字符類型 select ASCII(a) from dual ;ASCII
16、(char) 返回字符串首字符的ASCII碼值 select CHR(56) from dual ;CHR(n) 將ASCII碼值轉(zhuǎn)為字符 select CONCAT(Good, morning) from dual;CONCAT(char1, char2) 將兩個(gè)字符串連接 字符函數(shù)select LENGTH(wish) from dual ;LENGTH(char) 返回字符串的長(zhǎng)度 select LOWER(SQL) from dual ;LOWER(char) 將字符串轉(zhuǎn)為小寫 select UPPER(sql) from dual ;UPPER(char) 將字符串轉(zhuǎn)為大寫 字符函數(shù)
17、select SUBSTR(good, 1, 2) from dual ;SUBSTR(char,m,n) 返回字符串中指定位置的子串 select INSTR(wish, s) from dual ;INSTR(char1,char2,n,m) 返回子串在字符串中的位置 select TRIM( sql ) from dual ;TRIM(char) 將字符串左右空格清除 日期和時(shí)間函數(shù)select SYSDATE from dual ;SYSDATE 返回系統(tǒng)當(dāng)前日期 select CURRENT_DATE from dual ;CURRENT_DATE 返回當(dāng)前會(huì)話時(shí)區(qū)所對(duì)應(yīng)的日期時(shí)間
18、select EXTRACT(year from sysdate) from dual ;EXTRACT 從日期時(shí)間值中取得特定數(shù)據(jù) 日期和時(shí)間函數(shù)select ADD_MONTHS(sysdate, 1) from dual ;ADD_MONTHS(d, n) 返回特定日期時(shí)間d加上n個(gè)月后的日期時(shí)間 select NEXT_DAY(sysdate, 星期一) from dual ;NEXT_DAY(d, char) 返回指定日期后的第一個(gè)指定工作日所對(duì)應(yīng)的日期 select LAST_DAY(sysdate) from dual ;LAST_DAY(d) 返回特定日期所在月份最后一天 轉(zhuǎn)換
19、函數(shù) 轉(zhuǎn)換函數(shù):將數(shù)值從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型 select TO_CHAR(n星期一) from dual ;TO_CHAR(char) 將NCHAR,NVARCHAR2等轉(zhuǎn)換成數(shù)據(jù)庫(kù)字符集數(shù)據(jù) select TO_CHAR(sysdate, yyyy-mm-dd) from dual ;TO_CHAR (date, fmt) 將日期按指定的日期時(shí)間格式轉(zhuǎn)換成字符串 select TO_DATE(2006-09-21, yyyy-mm-dd) from dual ;TO_DATE (char, fmt) 將字符串按指定的格式轉(zhuǎn)換成日期時(shí)間數(shù)據(jù)分組函數(shù)分組函數(shù):執(zhí)行數(shù)據(jù)的統(tǒng)計(jì)或匯總操
20、作 計(jì)算雇員表中雇員的平均工資select AVG(sal) from emp ;AVG (ALL|DISTINCT|EXPR) 計(jì)算平均值 計(jì)算雇員表中雇員的總?cè)藬?shù)select COUNT(*) from emp ;COUNT (ALL|DISTINCT|EXPR) 計(jì)算記錄的總計(jì)行數(shù) 分組函數(shù)找出最高工資select MAX(sal) from emp ;MAX (ALL|DISTINCT|EXPR) 取得列或表達(dá)式的最大值 找出最低工資select MIN(sal) from emp ;MIN (ALL|DISTINCT|EXPR) 取得列或表達(dá)式的最小值計(jì)算工資總額select SUM
21、(sal) from emp ;SUM (ALL|DISTINCT|EXPR) 取得列或表達(dá)式的值的總和 其它重要的常用函數(shù)NVL (expr1,expr2):將空轉(zhuǎn)換為實(shí)際值。如果expr1是null,則返回expr2,否則返回expr1。注意expr1和expr2類型要匹配 select NVL(sal, 10000.00) from emp;sequence序列號(hào)sequence :自動(dòng)增長(zhǎng)的序列號(hào)create sequence 定義CREATE SEQUENCE empseq -自定義的序列名INCREMENT BY 1 - 每次加幾個(gè),即遞增的間隔START WITH 1 - 從1開(kāi)
22、始計(jì)數(shù) NOMAXVALUE - 不設(shè)置最大值 NOCYCLE - 一直累加,不循環(huán) CACHE 10;sequence序列號(hào)sequence序列用法CURRVAL:返回 sequence的當(dāng)前值 NEXTVAL:增加sequence的值,然后返回 sequence 值 在DML中使用序列INSERT INTO emp VALUES (empseq.nextval, LEWIS, CLERK,7902, SYSDATE, 1200, NULL, 20); SELECT empseq.currval FROM DUAL;sequence序列號(hào) 使用ALTER SEQUENCE修改序列ALTER
23、SEQUENCE empseq INCREMENT BY 10 MAXVALUE 10000 CYCLE - 到10000后從頭開(kāi)始 NOCACHE ;使用 DROP SEQUENCE刪除序列DROP SEQUENCE empseq同義詞同義詞:是數(shù)據(jù)庫(kù)對(duì)象,允許給Oracle表取不同的名字,可以大大簡(jiǎn)化數(shù)據(jù)庫(kù)的操作,提高數(shù)據(jù)庫(kù)的安全。同義詞分為私有同義詞和公有同義詞。創(chuàng)建同義詞語(yǔ)法:Create public synonym 同義詞名 for object其中object可以是:表(table)、視圖(view)、快照(snapshot)、序列(sequence)、過(guò)程(procedure)
24、、函數(shù)(function)、包(package)、對(duì)象類型(object type)同義詞創(chuàng)建私有同義詞 create synonym TTC for B. T_trade_current ;通過(guò)同義詞訪問(wèn)數(shù)據(jù)表select * from TTCdelete * from TTC刪除同義詞建立符合完整性約束表約束主鍵約束(PRIMARY KEY)外鍵約束(FOREIGN KEY)唯一約束(UNIQUE)檢查約束(CHECK)默認(rèn)約束(DEFAULT)非空約束(NOT NULL)建立符合完整性約束表-1.建立部門表Create table dept(deptno number(5) primar
25、y key, -主鍵dname varchar2(20) unique not null, -唯一,非空dnum number(7) check(enum 0) -檢查)-2.建立員工表 Create table emp( Empno number(6) primary key, Ename varcahr2(30) not null, Sal number(10,2) check(sal800) Deptno number(5), Constraint fk-deptno foreign key (deptno) References dept(deptno) -外鍵)總結(jié)牢記Oracle數(shù)
26、據(jù)庫(kù)常用數(shù)據(jù)類型牢記Oracle常用的內(nèi)置函數(shù)數(shù)字函數(shù)字符函數(shù)日期時(shí)間函數(shù)轉(zhuǎn)換函數(shù)熟練使用數(shù)據(jù)庫(kù)的基本對(duì)象,如序列號(hào)、同義詞,包括對(duì)象的創(chuàng)建、使用、刪除等。第三章三Oracle數(shù)據(jù)庫(kù)安全第章企業(yè)級(jí)卓越人才培養(yǎng)目標(biāo)了解Oracle數(shù)據(jù)庫(kù)的基本安全體系掌握Oracle數(shù)據(jù)庫(kù)管理與應(yīng)用的相關(guān)知識(shí)掌握數(shù)據(jù)庫(kù)安全基本要素,如賬戶、權(quán)限、角色Oracle用戶管理當(dāng)使用Oracle客戶端訪問(wèn)Oracle數(shù)據(jù)庫(kù)時(shí)必須提供密碼和帳號(hào) 用戶(User)是定義在數(shù)據(jù)庫(kù)中的一個(gè)名稱,是Oracle的基本訪問(wèn)控制機(jī)制 。Oracle用戶管理用戶與模式SCOTTSYSTEM模式SCOTT模式SYSTEM模式(Schema
27、)是用戶所擁有對(duì)象的集合用戶與模式是一一對(duì)應(yīng)的關(guān)系,并且二者名稱相同Oracle用戶管理建立用戶:數(shù)據(jù)庫(kù)驗(yàn)證Oracle中的用戶主要由DBA來(lái)創(chuàng)建,使用CREATE USER命令其他用戶需要有CREATE USER系統(tǒng)權(quán)限才能創(chuàng)建新用戶Oracle采用數(shù)據(jù)庫(kù)驗(yàn)證方式Oracle用戶管理建立用戶的語(yǔ)法:CREATE USER 自定義用戶名 IDENTIFIED BY 帳戶密碼DEFAULT TABLESPACE 表空間名TEMPORARY TABLESPACE 臨時(shí)表空間名QUOTA 使用空間大小 ON 表空間名;建立用戶示例:CREATE USER test IDENTIFIED BY tes
28、tDEFAULT TABLESPACE orcltbsTEMPORARY TABLESPACE orcltbsEMPQUOTA 3m ON orcltbs;Oracle用戶管理連接到數(shù)據(jù)庫(kù)執(zhí)行初步操作-給數(shù)據(jù)庫(kù)帳戶授予會(huì)話權(quán)限SQLconnect system/managerSQLgrant create session to testSQLconnect test/test新建的用戶在創(chuàng)建初無(wú)任何權(quán)限,需要授予create session權(quán)限才能連接到Oracle -給數(shù)據(jù)庫(kù)帳戶授予create table的權(quán)限SQLconnect system/managerSQLgrant create
29、 table to testSQLconnect test/testSQLcreate table Oracle用戶管理特權(quán)用戶:具有特殊權(quán)限的數(shù)據(jù)庫(kù)用戶(如:SYSDBA 或 SYSOPER )特權(quán)用戶主要執(zhí)行數(shù)據(jù)庫(kù)維護(hù)操作:?jiǎn)?dòng)和關(guān)閉Oracle Server建立數(shù)據(jù)庫(kù)備份和恢復(fù)數(shù)據(jù)庫(kù)等Oracle用戶管理修改用戶-修改用戶口令CONNECT test/testtestALTER USER test IDENTIFIED BY test;-修改用戶空間配額sqlplus system/managertest SQLALTER USER test QUOTA 10m ON users_ts用
30、戶的信息一般由DBA來(lái)修改用戶口令可以由用戶自身修改Oracle用戶管理刪除用戶DROP USER test ;刪除用戶一般是由DBA來(lái)完成.如果模式中包含有數(shù)據(jù)庫(kù)對(duì)象,則必須帶有CASCADE選項(xiàng).DROP USER test CASCADE ;管理權(quán)限權(quán)限(privilege):執(zhí)行特定類型的SQL命令或訪問(wèn)其他模式對(duì)象的權(quán)利。它限制用戶可執(zhí)行的操作 權(quán)限包括:系統(tǒng)權(quán)限(system privilege)對(duì)象權(quán)限(object privilege)系統(tǒng)權(quán)限系統(tǒng)權(quán)限:執(zhí)行特定類型SQL命令的權(quán)限權(quán)限說(shuō)明create tablespace創(chuàng)建表空間的權(quán)限create user創(chuàng)建用戶的權(quán)限cr
31、eate session創(chuàng)建會(huì)話的權(quán)限create role創(chuàng)建角色的權(quán)限create table為用戶創(chuàng)建表的權(quán)限create view為用戶創(chuàng)建視圖的權(quán)限create procedure為用戶創(chuàng)建存儲(chǔ)過(guò)程的權(quán)限create sequence為用戶創(chuàng)建序列的權(quán)限create synonym為用戶創(chuàng)建同義詞的權(quán)限create any table為任意用戶創(chuàng)建表的權(quán)限create any view為任意用戶創(chuàng)建視圖的權(quán)限Oracle中包含了一類ANY系統(tǒng)權(quán)限,當(dāng)用戶具有該類權(quán)限時(shí),可以在任何模式中執(zhí)行相應(yīng)的操作系統(tǒng)權(quán)限初始用戶沒(méi)有任何權(quán)限,需要由DBA(或有DBA權(quán)限的用戶)授予系統(tǒng)權(quán)限授予系統(tǒng)
32、權(quán)限語(yǔ)法:grant 系統(tǒng)權(quán)限列表(多個(gè)權(quán)限用“,”分隔) to 用戶sqlplus system/managertestSQLgrant create session, create table to test ;授權(quán)示例:系統(tǒng)權(quán)限回收系統(tǒng)權(quán)限r(nóng)evoke 系統(tǒng)權(quán)限列表 from 用戶sqlplus system/managertestSQLrevoke create session, create table from test;回收權(quán)限示例:系統(tǒng)權(quán)限顯示當(dāng)前用戶和當(dāng)前會(huì)話的系統(tǒng)權(quán)限select * from user_sys_privsGRANTEE PRIVILEGE TEST CRE
33、ATE SESSIONTEST CREATE TABLETEST CREATE CUSTERTEST CREATE VIEWTEST CREATE SYNONYMTEST CREATE SEQUENCETEST CREATE USER顯示當(dāng)前用戶和當(dāng)前會(huì)話的系統(tǒng)權(quán)限select * from session_privsPRIVILEGE CREATE SESSIONCREATE TABLECREATE CUSTERCREATE VIEWCREATE SYNONYMCREATE SEQUENCECREATE USER顯示當(dāng)前會(huì)話權(quán)限(session_privs)GRANTEE:權(quán)限擁有者PRIV
34、ILEGE:權(quán)限名稱對(duì)象權(quán)限對(duì)象權(quán)限:訪問(wèn)其它模式對(duì)象的權(quán)利。它用于控制一個(gè)用戶對(duì)另一個(gè)用戶的訪問(wèn) A帳戶B帳戶B.TX訪問(wèn)表B.TX權(quán)限?Oracle中常用對(duì)象權(quán)限:SELECTINSERTUPDATEDELETEEXECUTE對(duì)象權(quán)限授予對(duì)象權(quán)限GRANT 權(quán)限列表 ON 對(duì)象 TO 帳戶 ;示例:SQLconnect b/b -連接B帳戶SQLGRANT SELECT, INSERT ON TX TO A;對(duì)象權(quán)限回收對(duì)象的權(quán)限REVOKE 權(quán)限列表 ON 對(duì)象 FROM 帳戶 ;示例:connect b/b -連接B帳戶REVOKE SELECT, INSERT ON TX FROM
35、A;對(duì)象權(quán)限顯示當(dāng)前用戶所具有的對(duì)象權(quán)限select * from user_tab_privsGRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE TEST SYSTEM TEMP TEST SELECT 管理角色角色:權(quán)限的集合。角色的目的:簡(jiǎn)化權(quán)限管理。ABC權(quán)限X權(quán)限Y權(quán)限Z權(quán)限HABC權(quán)限X角色權(quán)限Y權(quán)限Z權(quán)限H四種權(quán)限授予三個(gè)賬戶需要執(zhí)行大量的授權(quán)過(guò)程步驟:1.創(chuàng)建角色,把單個(gè)的權(quán)限賦值給角色2.把角色賦給不同的用戶管理角色Oracle預(yù)定義角色CONNECT權(quán)限ALTER SESSIONCREATE SESSIONCREATE CLUSTERCRE
36、ATE DATABSE LINKCRAETE SEQUENCECREATE SYNONYMCREATE TABLECREATE VIEWRESOURCE權(quán)限CREATE INDEXTYPECREATE OPERATORCREATE PROCEDURECREATE TRIGGERCREATE TYPECREATE CLUSTERCREATE TABLEDBA擁有所有系統(tǒng)權(quán)限權(quán)限管理角色創(chuàng)建角色CREATE ROLE 自定義角色名字;示例:CREATE ROLE test_role ;管理角色給角色授權(quán)GRANT 權(quán)限列表 TO 自定義角色名字;示例:GRANT CRAETE SESSION, C
37、REATE TABLE TO test_role;使用角色給用戶授權(quán)GRANT 角色列表 TO 自定義用戶名字;示例:GRANT test_role TO test ;管理角色刪除角色DROP ROLE 自定義角色名字;示例:DROP ROLE test_role ;數(shù)據(jù)字典數(shù)據(jù)字典是Oracle的最重要組成部分,它用于提供數(shù)據(jù)庫(kù)的相關(guān)信息。數(shù)據(jù)字典主要是由表和視圖組成數(shù)據(jù)字典中的表是不能直接被訪問(wèn)的,但可以訪問(wèn)數(shù)據(jù)字典中的視圖數(shù)據(jù)字典的維護(hù)和修改是由系統(tǒng)自動(dòng)完成的,用戶只能執(zhí)行SELECT查詢系統(tǒng)信息數(shù)據(jù)字典屬于SYS模式,并且存放在表空間SYSTEM。Oracle中的數(shù)據(jù)字典有靜態(tài)和動(dòng)態(tài)之
38、分 靜態(tài)數(shù)據(jù)字典靜態(tài)數(shù)據(jù)字典中的視圖分為三類user_* (當(dāng)前用戶所擁有對(duì)象的信息)all_* (當(dāng)前用戶能夠訪問(wèn)的對(duì)象的信息 )dba_* (數(shù)據(jù)庫(kù)中所有對(duì)象的信息,需要有DBA權(quán)限才能訪問(wèn) )靜態(tài)數(shù)據(jù)字典常用的靜態(tài)視圖示例:select * from user_usersuser_users描述當(dāng)前用戶的信息,包括用戶名、帳戶id、帳戶狀態(tài)、表空間名、創(chuàng)建時(shí)間等 select * from user_tablesuser_tables描述當(dāng)前用戶擁有的所有表的信息,主要包括表名、表空間名、簇名等 select object_type, status from user_objects w
39、here object_name = upper(package1)user_objects當(dāng)前用戶擁有的所有對(duì)象的信息,包括表、視圖、存儲(chǔ)過(guò)程、觸發(fā)器、索引等 動(dòng)態(tài)數(shù)據(jù)字典動(dòng)態(tài)數(shù)據(jù)字典(通常稱為:動(dòng)態(tài)性能視圖 ),由系統(tǒng)管理員維護(hù)(如:SYS)當(dāng)數(shù)據(jù)庫(kù)運(yùn)行的時(shí)候它們會(huì)不斷進(jìn)行更新只能對(duì)其進(jìn)行只讀訪問(wèn)而不能修改它們 動(dòng)態(tài)性能視圖都是以v$開(kāi)頭的視圖 靜態(tài)數(shù)據(jù)字典常用的動(dòng)態(tài)性能視圖:v$access顯示數(shù)據(jù)庫(kù)中鎖定的數(shù)據(jù)庫(kù)對(duì)象以及訪問(wèn)這些對(duì)象的會(huì)話對(duì)象(session) v$session 列出當(dāng)前會(huì)話的詳細(xì)信息。該視圖字段較多,要查看視圖結(jié)構(gòu)可使用語(yǔ)句: desc v$session v$co
40、ntext列出當(dāng)前會(huì)話的屬性信息(如:命名空間、屬性、值 )總結(jié)掌握Oracle數(shù)據(jù)庫(kù)驗(yàn)證賬戶的概念,用戶與模式的關(guān)系。能夠創(chuàng)建賬戶/密碼,修改賬戶基本要素。掌握Oracle數(shù)據(jù)庫(kù)的權(quán)限體系(系統(tǒng)權(quán)限、對(duì)象權(quán)限),能夠根據(jù)需求,給數(shù)據(jù)庫(kù)賬戶授予相應(yīng)的SQL權(quán)限,對(duì)不需要的權(quán)限能夠收回。掌握Oracle數(shù)據(jù)庫(kù)角色的重要地位,能夠分類和分配權(quán)限集合,并把角色授予賬戶,并能回收角色權(quán)限。第四章四Oracle與簡(jiǎn)單的SQL語(yǔ)句第章企業(yè)級(jí)卓越人才培養(yǎng)目標(biāo)理解SQL語(yǔ)句的特點(diǎn)等概念理解事務(wù)的概念和簡(jiǎn)單用法掌握基本SQL的用法掌握這些數(shù)據(jù)庫(kù)操作的基本命令熟練使用Oracle事務(wù)提交與回滾命令SQL概述SQL
41、語(yǔ)言的特點(diǎn)一體化的語(yǔ)言,包括數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱和數(shù)據(jù)控制的功能 高度非過(guò)程化的語(yǔ)言 語(yǔ)言簡(jiǎn)潔,切近英語(yǔ)自然語(yǔ)言可以直接以命令方式交互使用,也可以嵌入到應(yīng)用程序中 SQL概述SQL語(yǔ)言分類數(shù)據(jù)查詢(SELECT):檢索數(shù)據(jù)庫(kù)數(shù)據(jù)數(shù)據(jù)定義(DDL):建立、刪除、修改數(shù)據(jù)庫(kù)對(duì)象CREATE、DROP、ALTER數(shù)據(jù)操縱(DML):改變數(shù)據(jù)庫(kù)數(shù)據(jù)INSERT-增加新數(shù)據(jù)UPDATE-修改已有數(shù)據(jù)DELETE-刪除已有數(shù)據(jù)數(shù)據(jù)控制(DCL):執(zhí)行權(quán)限的授權(quán)和回收工作GRANT-授權(quán)REVOKE-回收權(quán)限SQL概述SQL三級(jí)模式結(jié)構(gòu)概念模式(邏輯模式或模式):是數(shù)據(jù)庫(kù)中全部數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的
42、描述。外模式(用戶模式或子模式):是用戶與數(shù)據(jù)庫(kù)系統(tǒng)的接口,是用戶用到的那部分?jǐn)?shù)據(jù)的描述。內(nèi)模式(存儲(chǔ)模式):是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,數(shù)據(jù)庫(kù)內(nèi)部的表示方式。 SQL概述三級(jí)模式結(jié)構(gòu)SQL視圖1視圖2基表1基表2基表3存儲(chǔ)文件1存儲(chǔ)文件2物理層邏輯層視圖層外模式概念模式內(nèi)模式SQL概述SQL的基本組成數(shù)據(jù)定義語(yǔ)言(DDL)交互式數(shù)據(jù)庫(kù)操縱語(yǔ)言(DML)事務(wù)控制(transaction control)嵌入式SQL和動(dòng)態(tài)SQL(embeded SQL and dynamic SQL)完整性(integrity)權(quán)限管理(authorization)SQL概述SQL語(yǔ)句編寫規(guī)則SQLSELE
43、CT 1+2 FROM dual;SQLselect 1+2 from dual;SQL Select 1+2 from dual;SQL關(guān)鍵字不區(qū)分大小寫,下面三條語(yǔ)句等效SQLSELECT sal FROM emp;SQL SELECT Sal FROM Emp;SQL SELECT SAL FROM EMP;對(duì)象名和列名不區(qū)分大小寫,下面三條語(yǔ)句等效SQL概述SQL語(yǔ)句編寫規(guī)則SQLSELECT ename FROM emp where ename=SCOTT;SQLSELECT ename FROM emp where ename=scott;字符和日期值區(qū)分大小寫,以下兩條語(yǔ)句不等效
44、 -單行書寫一條SQL語(yǔ)句SQLSELECT ename FROM emp where ename=SCOTT;-多行書寫一條SQL語(yǔ)句SQLSELECT ename SQLFROM emp SQLwhere ename= SCOTT ;SQL語(yǔ)句可以換行書寫 SQL*Plus工具介紹SQL*Plus是Oracle公司提供的一個(gè)工具程序,它用于運(yùn)行SQL語(yǔ)句和PL/SQL塊,并且用于跟蹤調(diào)試SQL語(yǔ)句和PL/SQL塊。如果在windows平臺(tái)上安裝了oracle客戶端或服務(wù)器產(chǎn)品,那么可以在窗口環(huán)境中運(yùn)行SQL*Plus。 演 示SQL*Plus工具介紹在命令行運(yùn)行SQL*PlusSqlplu
45、s username/passwordserversqlplus scott/tigerusername 數(shù)據(jù)庫(kù)賬戶名password 賬戶密碼server 網(wǎng)絡(luò)服務(wù)器名,連接本地?cái)?shù)據(jù)庫(kù)時(shí)可省略連接本地?cái)?shù)據(jù)庫(kù)示例sqlplus scott/tigeroracle11連接遠(yuǎn)程數(shù)據(jù)庫(kù)示例使用SQL語(yǔ)句以scott模式下的emp和dept表為例:字段名說(shuō)明EMPNO雇員編號(hào)ENAME雇員姓名JOB職務(wù)MGR管理者HIREDATE雇傭日期SAL薪水COMM補(bǔ)助DEPTNO部門編號(hào)字段名說(shuō)明DEPTNO部門編號(hào)DNAME部門名稱LOC部門所在地emp 表dept 表使用基本SQL語(yǔ)句使用SQL語(yǔ)句des
46、c emp ;確定表結(jié)構(gòu) select * from emp ;檢索所有的列select deptno, dname from dept ;檢索特定列使用SQL語(yǔ)句select sal * 12 as 年薪 from emp ;使用列別名 select ename, nvl(comm, 0) from emp ;處理NULL值(使用nvl函數(shù))select distinct deptno, job, from emp ;取消重復(fù)行select sal * 12 from emp ;使用算術(shù)表達(dá)式 使用SQL語(yǔ)句查詢語(yǔ)句中使用WHERE子句select ename, hiredate from
47、empwhere to_char(hiredate, yyyymmdd)100 and sal 1000;在WHERE條件中使用BETWEENAND操作符查詢EMP表中補(bǔ)助大于100且工資大于1000的員工姓名和薪水 select ename, sal from emp where ename like _M% ;在WHERE條件中使用LIKE查詢 查詢員工姓名中第二個(gè)字符為“M”的員工姓名和薪水信息 使用SQL語(yǔ)句查詢語(yǔ)句中使用ORDER BY子句select ename, sal from emp order by sal desc;降序排序查詢EMP雇員姓名和薪水信息,并以薪水由大到小順
48、序顯示select ename, sal from emp order by sal asc ;升序排序查詢EMP雇員姓名和薪水信息,要求以薪水由小到大順序顯示使用SQL語(yǔ)句使用INSERT增加新數(shù)據(jù)insert into dept values(50, SECURITY, SHANGHAI) ;在DEPT部門表中插入一行全部數(shù)據(jù)insert into emp (empno, ename, sal) values (9999, test, 10000.00 )在EMP雇員表中插入一行部分?jǐn)?shù)據(jù)使用SQL語(yǔ)句使用UPDATE修改現(xiàn)有數(shù)據(jù)delete from empwhere empno = 77
49、88 ;將編號(hào)為7788的雇員記錄刪除update emp set sal = 10000where empno = 7788;將編號(hào)為7788的雇員工資修改為10000元使用DELETE刪除現(xiàn)有數(shù)據(jù)事務(wù)概述事務(wù)是用于確保數(shù)據(jù)庫(kù)的一致性,它由一組相關(guān)的DML語(yǔ)句組成,該組的DML語(yǔ)句要么全部成功,要么全部取消。數(shù)據(jù)庫(kù)事務(wù)主要由INSERT、UPDATE、DELETE和SELECT FOR UPDATE語(yǔ)句組成 當(dāng)在應(yīng)用程序中執(zhí)行第一條SQL語(yǔ)句時(shí)事務(wù)開(kāi)始,當(dāng)執(zhí)行COMMIT或ROLLBACK命令時(shí)提交或回滾事務(wù),事務(wù)結(jié)束。事務(wù)概述事務(wù)和鎖DEPTNODNAMELOC30ResearchDall
50、as40SalesChicago拒絕訪問(wèn)修改數(shù)據(jù)修改數(shù)據(jù)查看數(shù)據(jù)允許訪問(wèn)事務(wù)概述事務(wù)提交和回滾SQLdelete from emp where empno = 7788;SQLrollback;使用ROLLBACK回滾事務(wù) SQLdelete from emp where empno = 7788;SQLcommit;使用COMMIT提交事務(wù) 一個(gè)完整的事務(wù)樣例總結(jié)掌握和使用基本的SQL語(yǔ)句和命令,如:select、insert、update、delete、commit、rollback等 幾個(gè)重要概念,如:事務(wù)與鎖,事務(wù)的提交和回滾等第五章第四章五Oracle與高級(jí)的SQL語(yǔ)句第章企業(yè)級(jí)卓越
51、人才培養(yǎng)目標(biāo)了解復(fù)雜查詢的概念理解高級(jí)查詢的概念以及對(duì)其各個(gè)復(fù)雜、查詢的應(yīng)用掌握SQL語(yǔ)句在Oracle數(shù)據(jù)庫(kù)的高級(jí)應(yīng)用:分組查詢、連接查詢、子查詢、合并查詢等分組查詢當(dāng)執(zhí)行數(shù)據(jù)統(tǒng)計(jì)時(shí),需要將表中的數(shù)據(jù)劃分成幾個(gè)組,最終統(tǒng)計(jì)每個(gè)組的數(shù)據(jù)結(jié)果數(shù)據(jù)分組統(tǒng)計(jì)是通過(guò)GROUP BY子句、分組函數(shù)以及HAVING子句共同實(shí)現(xiàn)分組查詢分組函數(shù):作用于多行,并返回單一的值分組函數(shù)一般要與GROUP BY結(jié)合使用。如果沒(méi)有GROUP BY子句會(huì)匯總所有的行,并產(chǎn)生一個(gè)結(jié)果 select avg ( sal ) as 平均工資 from emp ;雇員表中所有員工的平均工資select count ( * )
52、from emp where sal = 2000 ;工資大于等于2000的員工人數(shù)分組查詢GROUP BY:對(duì)查詢結(jié)果進(jìn)行分組統(tǒng)計(jì)select deptno, avg(sal), max(sal) from emp group by deptno ;使用GROUP BY進(jìn)行單列分組 顯示每個(gè)部門平均工資和最高工資 select deptno, job, avg(sal), max(sal) from emp group by deptno, job ;使用GROUP BY進(jìn)行多列分組 顯示每個(gè)部門每種崗位的平均工資和最高工資 注意:SELECT選擇列表中的列必須出現(xiàn)在group by子句中分
53、組查詢HAVING:限制分組統(tǒng)計(jì)結(jié)果HAVING子句必須跟在GROUP BY之后 select deptno, avg(sal), max(sal) from emp group by deptno having avg(sal) 2500 ;顯示平均工資低于2500的部門號(hào)、平均工資及最高工資 連接查詢相等連接:檢索主從表之間的相關(guān)數(shù)據(jù) select e.ename, e.sal, d.dname from emp e, dept dwhere e.deptno = d.deptno ;顯示所有雇員的姓名、和工資及其所在的部門名稱 enamesaldeptnodeptnodnameselec
54、t e.ename, e.sal, d.dname from emp e, dept dwhere e.deptno = d.deptnoand d.deptno = 10 ;使用AND指定其它條件連接查詢不等連接:在連接條件中使用除相等比較符外的其它比較操作符的連接查詢 select e.ename, e.sal, d.dname from emp e, dept dwhere e.deptno between 10 and 20 ;查詢部門號(hào)在10和20之間的部門名稱、雇員名稱、雇員薪水 連接查詢自連接:在同一張表之間的連接查詢。用在自參照表上顯示上下級(jí)關(guān)系或者層次關(guān)系 select a.
55、ename from emp a, emp bwhere a.empno = b.mgr and b.ename = BLAKE ;顯示雇員“BLAKE”的上級(jí)經(jīng)理的名字EMPNOENAMEMGR7839KING7566JONES78397698BLAKE78397782CLARK7839連接查詢內(nèi)連接和外連接內(nèi)連接用于返回滿足條件的記錄外連接不僅返回滿連接足條件的所有記錄,而且還返回不滿足條件的記錄 SELECT table1.column, table2.column FROM table1 INNER | LEFT | RIGHT | FULL JOIN table2 ON table1
56、.column = table2.column;INNER JOIN 表示內(nèi)連接LEFT JOIN 表示左聯(lián)接RIGHT JOIN 表示右連接FULL JOIN 表示完全連接ON 后跟連接條件連接的語(yǔ)法:連接查詢內(nèi)連接 ( INNER JOIN )select e.ename, d.dname from emp e inner join dept don e.deptno = d.deptnoand e.deptno = 20 ;查詢部門編號(hào)為“20”的所有雇員姓名及雇員所在部門的名稱select e.ename, d.dname from emp e, dept dwhere e.deptn
57、o = d.deptnoand e.deptno = 20 ;另一種寫法(相等連接)連接查詢左外連接 ( LEFT OUTER JOIN )select d.dname, e.enamefrom dept d left join emp eon d.deptno = e.deptnoand d.deptno = 20 ;顯示所有部門的名稱,及部門編號(hào)為20的所有雇員名字連接查詢右外連接 ( RIGHT OUTER JOIN )select d.dname, e.enamefrom dept d right join emp eon d.deptno = e.deptnoand e.deptno
58、 = 20 ;顯示所有雇員名字,及部門編號(hào)為20的雇員所在的部門的名稱連接查詢完全外連接( FULL OUTER JOIN ) select d.dname, e.enamefrom dept d full join emp eon d.deptno = e.deptnoand e.deptno = 20 ;顯示部門編號(hào)為20的所有雇員名字及對(duì)應(yīng)的部門名稱,同時(shí)列出其他的雇員名字和部門名稱子查詢子查詢:嵌入在其它SQL語(yǔ)句中的SELECT語(yǔ)句,也叫做嵌套查詢 子查詢又被分為單行子查詢多行子查詢多列子查詢子查詢單行子查詢:內(nèi)層子查詢只返回單行數(shù)據(jù)外層查詢的WHERE子句中可以使用單行比較運(yùn)算符(
59、 、= 、=、 、 all(select sal from emp wheredeptno=20) ;使用 ALL顯示比部門編號(hào)為20的所有雇員的工資都高的雇員信息select ename, deptno from emp where sal any(select sal from emp wheredeptno=10) ;使用 ANY顯示比部門編號(hào)為10的任一雇員的工資高的雇員信息子查詢多列子查詢:內(nèi)層子查詢返回多列數(shù)據(jù)select ename, job, sal, deptno from empwhere ( deptno, job ) =( select deptno, job from
60、 emp where ename = SMITH ) ;顯示與“SMITH”同一部門,同一職務(wù)的雇員信息子查詢其它常用的子查詢select ename, job, sal, deptno from emp where exists( select * from dept where dept.deptno = emp.deptno and loc = NEW YORK ) ;相關(guān)子查詢:內(nèi)部子查詢需要引用外部主查詢列表顯示工作在NEW YORK的所有雇員信息相關(guān)子查詢常用EXISTS謂詞來(lái)實(shí)現(xiàn)如果子查詢存在返回結(jié)果,則條件為TRUE ,否則為FALSE子查詢insert into employ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【2021屆備考】2021屆全國(guó)名校數(shù)學(xué)試題分類解析匯編(12月第三期):M單元-推理與證明
- 音樂(lè)教師培訓(xùn)總結(jié)5篇
- 【紅對(duì)勾】2021-2022學(xué)年人教版高中政治必修一習(xí)題-第一單元-生活與消費(fèi)-課時(shí)作業(yè)6
- 【每日一練】《晨讀晚練》英語(yǔ)高三年級(jí)上學(xué)期第五周參考答案及解析5
- 【全程復(fù)習(xí)方略】2022屆高考數(shù)學(xué)(文科人教A版)大一輪專項(xiàng)強(qiáng)化訓(xùn)練(五)圓錐曲線的綜合問(wèn)題-
- 2025年七年級(jí)統(tǒng)編版語(yǔ)文寒假預(yù)習(xí) 第01講 孫權(quán)勸學(xué)
- 【全程復(fù)習(xí)方略】2020年高考化學(xué)單元評(píng)估檢測(cè)(四)(魯科版-福建專供)
- 浙江省溫州蒼南2023-2024學(xué)年第二學(xué)期期末檢測(cè)卷 六年級(jí)下冊(cè)科學(xué)
- 【全程復(fù)習(xí)方略】2022屆高考數(shù)學(xué)(文科人教A版)大一輪課時(shí)作業(yè):10.3-幾何概型-
- 【全程復(fù)習(xí)方略】2022屆高考數(shù)學(xué)(文科人教A版)大一輪課時(shí)作業(yè):2.3-函數(shù)的奇偶性與周期性-
- 泰州市2022-2023學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題【帶答案】
- JGJ276-2012 建筑施工起重吊裝安全技術(shù)規(guī)范 非正式版
- QCT1067.4-2023汽車電線束和電器設(shè)備用連接器第4部分:設(shè)備連接器(插座)的型式和尺寸
- 2019電子保單業(yè)務(wù)規(guī)范
- 學(xué)堂樂(lè)歌 說(shuō)課課件-2023-2024學(xué)年高中音樂(lè)人音版(2019) 必修 音樂(lè)鑒賞
- 幕墻工程材料組織、運(yùn)輸裝卸和垂直運(yùn)輸方案
- 灌溉用水循環(huán)利用技術(shù)
- 泌尿科一科一品匯報(bào)課件
- 2024年江西省三校生高職英語(yǔ)高考試卷
- 中國(guó)古代文學(xué)智慧樹(shù)知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 重慶市南岸區(qū)2022-2023學(xué)年五年級(jí)上學(xué)期期末語(yǔ)文試卷
評(píng)論
0/150
提交評(píng)論