《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》(微課視頻版)課件全套 趙德玉 第1-11章 數(shù)據(jù)庫技術(shù)基礎(chǔ)- Java 操作 Oracle數(shù)據(jù)庫_第1頁
《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》(微課視頻版)課件全套 趙德玉 第1-11章 數(shù)據(jù)庫技術(shù)基礎(chǔ)- Java 操作 Oracle數(shù)據(jù)庫_第2頁
《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》(微課視頻版)課件全套 趙德玉 第1-11章 數(shù)據(jù)庫技術(shù)基礎(chǔ)- Java 操作 Oracle數(shù)據(jù)庫_第3頁
《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》(微課視頻版)課件全套 趙德玉 第1-11章 數(shù)據(jù)庫技術(shù)基礎(chǔ)- Java 操作 Oracle數(shù)據(jù)庫_第4頁
《Oracle大型數(shù)據(jù)庫基礎(chǔ)開發(fā)教程》(微課視頻版)課件全套 趙德玉 第1-11章 數(shù)據(jù)庫技術(shù)基礎(chǔ)- Java 操作 Oracle數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩350頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章數(shù)據(jù)庫技術(shù)基礎(chǔ)1.1數(shù)據(jù)庫技術(shù)概述一、數(shù)據(jù)庫基本概念1.數(shù)據(jù)數(shù)據(jù)是描述事物的符號記錄。一個(gè)事物如果用一個(gè)符號來描述,那么該符號就是數(shù)據(jù),數(shù)據(jù)根據(jù)其特征可以分為:字符、數(shù)值、圖形、聲音、視頻等類型。2.數(shù)據(jù)庫數(shù)據(jù)庫(DataBase,DB)是一個(gè)有結(jié)構(gòu)的數(shù)據(jù)集合,該集合可以為各種用戶共享,按照一定的數(shù)據(jù)模型組織的。3.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,DBMS)是管理數(shù)據(jù)庫的系統(tǒng),它是一個(gè)系統(tǒng)軟件,介于用戶和操作系統(tǒng)之間。1.1數(shù)據(jù)庫技術(shù)概述4.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,DBS)是計(jì)算機(jī)引入了數(shù)據(jù)庫之后的系統(tǒng),包括計(jì)算機(jī)的硬件、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫應(yīng)用系統(tǒng)和各種用戶等。5.數(shù)據(jù)管理數(shù)據(jù)庫技術(shù)的主要任務(wù)就是數(shù)據(jù)管理,數(shù)據(jù)管理是指對數(shù)據(jù)的分類組織、編碼、存儲、檢索和維護(hù)。它是數(shù)據(jù)處理的中心問題。二、數(shù)據(jù)管理技術(shù)的發(fā)展1、人工管理階段數(shù)據(jù)不保存,用完后就刪除。由應(yīng)用程序自己管理數(shù)據(jù)。數(shù)據(jù)不共享。數(shù)據(jù)和應(yīng)用程序的依賴性高。1.1數(shù)據(jù)庫技術(shù)概述2、文件系統(tǒng)階段數(shù)據(jù)可以長期保存。數(shù)據(jù)由操作系統(tǒng)提供的文件系統(tǒng)功能來管理。數(shù)據(jù)共享性不高。數(shù)據(jù)和應(yīng)用程序的依賴性還是比較高。3、數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)內(nèi)部結(jié)構(gòu)化和整體結(jié)構(gòu)化。數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充。數(shù)據(jù)和應(yīng)用程序的依賴性低。數(shù)據(jù)由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理和控制。1.1數(shù)據(jù)庫技術(shù)概述三、數(shù)據(jù)模型1、概念模型實(shí)體:實(shí)體是客觀存在并可相互區(qū)別的事物。例如,一個(gè)蘋果、一部手機(jī)等都是實(shí)體,人的一次活動(dòng)也是一個(gè)實(shí)體,如學(xué)生的一次選課。屬性:實(shí)體所具有的某一特征。例如,學(xué)生的特征:學(xué)號、姓名、年齡等都是屬性。鍵:鍵是能夠唯一標(biāo)識實(shí)體的屬性或?qū)傩越M合。例如,學(xué)號是學(xué)生實(shí)體的鍵。實(shí)體型:所有的同類實(shí)體的結(jié)構(gòu)是相同的,稱為實(shí)體型。聯(lián)系:聯(lián)系是指事物與事物之間,事物內(nèi)部的存在的相關(guān)聯(lián)系。聯(lián)系分為以下幾類。一對一(1:1):一對一是兩個(gè)實(shí)體集之間實(shí)體與實(shí)體的一一對應(yīng)的關(guān)系,例如,班長(正職)和班級之間就屬于一對一的聯(lián)系。一個(gè)班長只能管理一個(gè)班級,而一個(gè)班級只能由一個(gè)班長來管理。一對多(1:m):一對多是兩個(gè)實(shí)體集之間實(shí)體與實(shí)體的一個(gè)對應(yīng)多個(gè)的關(guān)系,例如,班級和學(xué)生之間就屬于一對多的聯(lián)系。一個(gè)班級有多名學(xué)生,而一個(gè)學(xué)生只屬于一個(gè)班級。1.1數(shù)據(jù)庫技術(shù)概述多對多(m:n):多對多是兩個(gè)實(shí)體集之間實(shí)體與實(shí)體的多對多的關(guān)系,例如,學(xué)生和課程之間就屬于多對多的聯(lián)系。一個(gè)學(xué)生可以選修多門課程,而一門課程可由多名學(xué)生選修。2、數(shù)據(jù)模型數(shù)據(jù)模型是按照計(jì)算機(jī)的觀點(diǎn)來對數(shù)據(jù)建模,根據(jù)其邏輯結(jié)構(gòu)的不同可分為:層次模型、網(wǎng)狀模型、關(guān)系模型、對象關(guān)系模型、面向?qū)ο竽P?。NoSQL數(shù)據(jù)庫。鍵值數(shù)據(jù)庫:Redis、Memcached、Riak。文檔數(shù)據(jù)庫:Mongodb、CouchDB。簇?cái)?shù)據(jù)庫:Cassandra、Hbase。圖數(shù)據(jù)庫:Neo4j。3、物理模型物理模型是數(shù)據(jù)模型在存儲設(shè)備上存儲結(jié)構(gòu)和存取方法,該模型由DBMS實(shí)現(xiàn)。1.1數(shù)據(jù)庫技術(shù)概述四、概念模型的表示方法概念模型的表示方法有很多,最常用的表示方法為E-R方法,也叫實(shí)體-聯(lián)系法。實(shí)體型用矩形框表示,矩形框內(nèi)標(biāo)明實(shí)體型的名稱。屬性用橢圓表示,橢圓內(nèi)標(biāo)明屬性的名稱,并用直線與對應(yīng)的實(shí)體相連。聯(lián)系用菱形框表示,菱形框內(nèi)標(biāo)明聯(lián)系的名稱,并用直線與相應(yīng)的實(shí)體相連,最后在直線上標(biāo)明聯(lián)系類型。五、數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)1、三級模式結(jié)構(gòu)概念模式:概念模式是指數(shù)據(jù)庫全體數(shù)據(jù)的邏輯結(jié)構(gòu)特征描述。例如,屬性的命名,屬性數(shù)據(jù)類型、大小長度等描述。一個(gè)數(shù)據(jù)庫只有一個(gè)概念模式。外模式:外模式是指數(shù)據(jù)庫中局部數(shù)據(jù)的邏輯結(jié)構(gòu)特征描述。外模式一般用視圖來實(shí)現(xiàn)。應(yīng)用程序是根據(jù)外模式來寫的。內(nèi)模式:內(nèi)模式是指數(shù)據(jù)庫中數(shù)據(jù)的物理結(jié)構(gòu)和存儲方式的描述。一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式。2、二級映像1.1數(shù)據(jù)庫技術(shù)概述概念模式/內(nèi)模式映像:當(dāng)數(shù)據(jù)庫的內(nèi)模式改變時(shí),只需要修改概念模式/內(nèi)模式映像就可以保證概念模式不變,概念模式不變,則外模式就不變,外模式不變則應(yīng)用程序不變。外模式/概念模式映像:當(dāng)數(shù)據(jù)庫的概念模式改變時(shí),只需要修改外模式/概念模式映像就可以保證外模式不變,外模式不變則應(yīng)用程序不變。1.2關(guān)系數(shù)據(jù)模型一、關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)是一張二維表1、關(guān)系一張二維表就是一個(gè)關(guān)系。例如表1-1就是一個(gè)關(guān)系。2、記錄表中的一行為一條記錄或元組,例如,001,張三,21,男,信息科學(xué)與工程學(xué)院。3、屬性表中的一列為一個(gè)屬性,例如,學(xué)號Sno。SnoSnameSageSsexSdept001張三21男信息科學(xué)與工程學(xué)院002李四22女信息科學(xué)與工程學(xué)院003王五20男物流學(xué)院1.2關(guān)系數(shù)據(jù)模型4、候選鍵唯一確定關(guān)系中每一個(gè)記錄的屬性或?qū)傩越M合為候選鍵。5、主鍵如果一個(gè)關(guān)系的候選鍵有多個(gè)則選定其中一個(gè)為主鍵,例如表1-1中選Sno為主鍵。6、主屬性與非主屬性包含在主鍵里屬性為主屬性,不包含在主鍵里的屬性為非主屬性。7、域一組相同類型數(shù)據(jù)值的集合,例如,整數(shù)域,性別域{男,女}等。二、關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作關(guān)系數(shù)據(jù)模型的主要操作是查詢和更新,其中查詢是最主要的操作。關(guān)系數(shù)據(jù)模型的操作為集合操作即一次一個(gè)集合,操作對象和操作結(jié)果都是集合,而非關(guān)系一次一個(gè)記錄。關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作語言主要有關(guān)系代數(shù)和SQL兩種。1.2關(guān)系數(shù)據(jù)模型三、關(guān)系數(shù)據(jù)模型的完整性關(guān)系數(shù)據(jù)模型的完整性分為實(shí)體完整性、參照完整性和用戶定義的完整性。1、實(shí)體完整性如果一個(gè)屬性是一個(gè)關(guān)系的主屬性,則此屬性不能取空值。例如,表1-1中Sno為主屬性,此屬性不能取空值。2、參照完整性(1)外鍵一個(gè)屬性或一組屬性不是表R的主鍵,但它和另外一個(gè)表S的主鍵相對應(yīng),則該屬性或?qū)傩越M合為R的外若一個(gè)關(guān)系的外鍵和另一個(gè)表的主鍵相對應(yīng),則該關(guān)系在外鍵上的取值為:或者取空值(外鍵的每個(gè)屬性值均為空值)?;蛘叩扔诹硗庖粋€(gè)關(guān)系的某個(gè)記錄的主鍵值。鍵。1.2關(guān)系數(shù)據(jù)模型3、用戶自定義的完整性用戶自定義的完整性和某一具體的應(yīng)用相關(guān),例如,成績規(guī)定在100分以下,學(xué)習(xí)駕駛的年齡在18~70等。四、關(guān)系代數(shù)語言關(guān)系代數(shù)語言包括傳統(tǒng)的集合運(yùn)算和專門的關(guān)系運(yùn)算。傳統(tǒng)的集合運(yùn)算包括并、交、差、笛卡爾積;專門的關(guān)系運(yùn)算包括選擇、投影、連接和除。1、傳統(tǒng)的集合運(yùn)算兩個(gè)關(guān)系在進(jìn)行并、交、差時(shí)要求兩個(gè)關(guān)系必須有相同的列數(shù),對應(yīng)列的數(shù)據(jù)類型相同。(1)并運(yùn)算符號:R∪S,結(jié)果是屬性個(gè)數(shù)不變,記錄是R和S關(guān)系中的記錄之和并去掉重復(fù)的。1.2關(guān)系數(shù)據(jù)模型(2)交運(yùn)算符號:R∩S,結(jié)果是屬性個(gè)數(shù)不變,記錄是R和S中共有的記錄。(3)差運(yùn)算符號:R-S,結(jié)果是屬性個(gè)數(shù)不變,記錄是R中去掉R和S中共有的記錄后剩余的記錄。(4)笛卡爾積運(yùn)算符號:R×S,笛卡爾積結(jié)果是R和S中所有記錄的串接。列是兩個(gè)關(guān)系的所有列,記錄個(gè)數(shù)是兩個(gè)關(guān)系各自記錄個(gè)數(shù)的乘積。1.2關(guān)系數(shù)據(jù)模型2、關(guān)系運(yùn)算(1)選擇從關(guān)系R中選出滿足條件的記錄,運(yùn)算符號為:σF(R)。其中R為要選擇的關(guān)系,F(xiàn)為選擇的條件。(2)投影從關(guān)系R中選出相應(yīng)的列。運(yùn)算符號為:πA(R)。R是所有投影的關(guān)系,A為投影的屬性列。(3)連接連接是選取兩個(gè)關(guān)系的屬性列滿足比較條件的串接記錄。表示符號為:,R和S是連接的關(guān)系,A是來自R的屬性,B是來自S的屬性,θ是滿足的比條件。AθBR*S1.2關(guān)系數(shù)據(jù)模型連接中最重要的連接為自然連接,進(jìn)行自然連接時(shí)兩表必須有同名列,把結(jié)果中重復(fù)的屬性列去掉。自然連接的表示為:R*S,隱含了兩表的同名列等值比較條件。(4)除除的表示符號為:R÷S,結(jié)果:列為被除關(guān)系R去掉R和S中公共屬性列后剩余的屬性列,行是被除關(guān)系R中去掉公共屬性列后剩余的屬性的值(滿足的條件是:其值在關(guān)系R中對應(yīng)的剩余的屬性值包含S中公共的屬性值)。五、SQLSQL(StructuredQueryLanguage)為結(jié)構(gòu)化查詢語言,集數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制于一體。1、數(shù)據(jù)定義語言1.2關(guān)系數(shù)據(jù)模型(1)表:CREATETABLE、ALTERTABLE、DROPTABLE。(2)視圖:CRATEVIEW、DROPVIEW。(3)索引:CREATEINDEX、DROPINDEX。2、數(shù)據(jù)操縱語言SELECT、INSERT、UPDATE、DELETE。3、數(shù)據(jù)控制語言GRANT、REVOKE等。六、關(guān)系數(shù)據(jù)1.問題提出學(xué)生(學(xué)號,系別,系院長,課程號,成績),假設(shè)該關(guān)系模式有如下記錄,如表所示。該關(guān)系模式在使用過程中有如下問題:1.2關(guān)系數(shù)據(jù)模型(1)數(shù)據(jù)冗余每當(dāng)一個(gè)學(xué)生選修一門課程時(shí),該學(xué)生系別的系院長都要重復(fù)存儲一次,這種現(xiàn)象稱為數(shù)據(jù)冗余。(2)更新異常當(dāng)某系的系院長換人了,每個(gè)學(xué)生的選課記錄的系院長都必須改名,修改復(fù)雜,修改的過程中還可能出現(xiàn)數(shù)據(jù)不一致。(3)插入異常當(dāng)新成立了一個(gè)系院,但該系院沒有學(xué)生,此信息無法插入學(xué)生表中,也就是說應(yīng)該插入的數(shù)據(jù)未被插入。(4)刪除異常當(dāng)學(xué)生畢業(yè)了刪除學(xué)生的信息時(shí),也同時(shí)把系院的信息也刪除了,如果要查詢系院信息就無法查詢了,就是說不應(yīng)該刪除的數(shù)據(jù)刪除了。學(xué)號系別系院長課程號成績0001信息學(xué)院張三1700001信息學(xué)院張三2600002信息學(xué)院張三1801.2關(guān)系數(shù)據(jù)模型2、函數(shù)依賴定義:設(shè)R(U)是一個(gè)屬性集U上的關(guān)系模式,X和Y是U的子集。如果任給一個(gè)X屬性值對應(yīng)的Y屬性值只有一個(gè),則稱“X函數(shù)確定Y”或“Y函數(shù)依賴于X”,記作X→Y。例如,表1-14學(xué)生表中,系別→系院長。因?yàn)槊總€(gè)系的系院長只有一個(gè)。函數(shù)依賴分類(1)完全函數(shù)依賴與部分函數(shù)依賴完全函數(shù)依賴:在R(U)中,如果X→Y,并且對于X的任何一個(gè)真子集X’,X’→Y都不成立,則X→Y是完全函數(shù)依賴。部分函數(shù)依賴:若X→Y,對于X的某一個(gè)真子集X’,有X’→Y,則X→Y是部分函數(shù)依賴。(2)傳遞函數(shù)依賴設(shè)關(guān)系模式R(U),X,Y,Z為U的子集,如果X→Y,Y不是X的子集,Y→Z,Z不是Y的子集,且Y→X不成立,則Z傳遞函數(shù)依賴于X。1.2關(guān)系數(shù)據(jù)模型3、

關(guān)系模式的規(guī)范化規(guī)范化是用來改造關(guān)系模式的,用來解決關(guān)系模式存在的數(shù)據(jù)冗余、更新異常、插入異常、刪除異常等問題的。關(guān)系數(shù)據(jù)庫中每個(gè)關(guān)系都要滿足一定的要求,滿足不同要求的關(guān)系,表示關(guān)系屬于不同的范式。(1)第1范式如果關(guān)系模式R的每個(gè)屬性都是不可再分的,則該關(guān)系模式屬于第1范式。(2)第2范式如果關(guān)系R屬于第1范式,且每個(gè)非主屬性都完全函數(shù)依賴于鍵,則R屬于第2范式。(3)第3范式如果關(guān)系模式R屬于第2范式,且不存在非主屬性對鍵的傳遞依賴,則R屬于第3范式。1.3數(shù)據(jù)庫設(shè)計(jì)針對一個(gè)具體的應(yīng)用問題,如何設(shè)計(jì)符合該應(yīng)用問題的數(shù)據(jù)庫模式,在此基礎(chǔ)上建立應(yīng)用系統(tǒng),并能高效的管理數(shù)據(jù),這是數(shù)據(jù)庫設(shè)計(jì)的問題。數(shù)據(jù)庫設(shè)計(jì)一般采用規(guī)范化的設(shè)計(jì)方法,主要分為需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫實(shí)施和數(shù)據(jù)庫的運(yùn)行與維護(hù)。一、需求分析1、需求分析的任務(wù)信息要求:分析該系統(tǒng)存儲和處理哪些數(shù)據(jù)。處理要求:指對系統(tǒng)進(jìn)行哪些處理功能。安全性完整性要求:指用戶對數(shù)據(jù)有哪些安全性要求,哪些約束條件。2、需求分析的表達(dá)表達(dá)需求分析,一般采用數(shù)據(jù)流程圖和數(shù)據(jù)字典。1.3數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)字典是對數(shù)據(jù)流程圖中所有的元素進(jìn)行一個(gè)詳細(xì)的描述。數(shù)據(jù)字典主要由數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、數(shù)據(jù)處理組成。數(shù)據(jù)項(xiàng)是最基本的不可分的數(shù)據(jù)單位,例如,關(guān)系中的每個(gè)屬性都是數(shù)據(jù)項(xiàng)。數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)項(xiàng)之間的組合關(guān)系。數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)中的走向。數(shù)據(jù)存儲是數(shù)據(jù)存儲的位置。數(shù)據(jù)處理是對數(shù)據(jù)處理的描述。1.3數(shù)據(jù)庫設(shè)計(jì)二、概念結(jié)構(gòu)設(shè)計(jì)將需求分析得到的結(jié)果抽象為獨(dú)立于具體DBMS的信息結(jié)構(gòu)的概念模型的過程就是概念結(jié)構(gòu)設(shè)計(jì)。1、概念結(jié)構(gòu)設(shè)計(jì)概念結(jié)構(gòu)設(shè)計(jì)采用E-R圖,根據(jù)需求分析的結(jié)果劃分實(shí)體與屬性。屬性是數(shù)據(jù)項(xiàng),不能具有再分解的性質(zhì),且不能與其他實(shí)體有聯(lián)系。2、概念結(jié)構(gòu)設(shè)計(jì)方法首先設(shè)計(jì)局部的E-R圖,然后進(jìn)行E-R圖的合并,合并時(shí)要處理好屬性沖突、命名沖突、結(jié)構(gòu)沖突。最后消除冗余,合并后消除E-R圖中一些冗余的數(shù)據(jù)和聯(lián)系。三、邏輯結(jié)構(gòu)設(shè)計(jì)將概念模型E-R模型轉(zhuǎn)換成特定的DBMS系統(tǒng)所支持的數(shù)據(jù)模型。當(dāng)前,關(guān)系模型占主導(dǎo)地位,也就是把E-R模型轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型。1.3數(shù)據(jù)庫設(shè)計(jì)1、邏輯結(jié)構(gòu)設(shè)計(jì)的步驟(1)將概念模型轉(zhuǎn)化為關(guān)系模型;(2)將關(guān)系模型向特定的DBMS支持的數(shù)據(jù)模型轉(zhuǎn)換;(3)對關(guān)系數(shù)據(jù)模型進(jìn)行優(yōu)化。2、E-R模型向關(guān)系模型的轉(zhuǎn)換(1)1:1聯(lián)系向關(guān)系模型的轉(zhuǎn)換1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,屬性是聯(lián)系各端實(shí)體的主鍵,加上聯(lián)系本身的屬性,主鍵是任意一端實(shí)體的主鍵屬性;也可以和任意一端的實(shí)體合并,主鍵是合并端實(shí)體的主鍵屬性。(2)1:m聯(lián)系向關(guān)系模型的轉(zhuǎn)換1:m聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,屬性是聯(lián)系各端實(shí)體的主鍵,加上聯(lián)系本身的屬性,主鍵是m端實(shí)體的主鍵屬性;也可以和m端的實(shí)體合并,主鍵是m端實(shí)體的主鍵屬性。1.3數(shù)據(jù)庫設(shè)計(jì)(3)m:n聯(lián)系向關(guān)系模型的轉(zhuǎn)換m:n聯(lián)系轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,屬性是聯(lián)系各端實(shí)體的主鍵,加上聯(lián)系本身的屬性,主鍵是任意各端實(shí)體的主鍵屬性組合。四、物理結(jié)構(gòu)設(shè)計(jì)為一個(gè)給定的邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程,就是數(shù)據(jù)庫的物理設(shè)計(jì)。主要是存儲結(jié)構(gòu)和存取方法的選擇。此階段和具體DBMS有關(guān),用戶參與的較少。五、數(shù)據(jù)庫實(shí)施數(shù)據(jù)庫實(shí)施主要是指建立數(shù)據(jù)庫、編制與調(diào)試應(yīng)用程序、組織數(shù)據(jù)入庫和進(jìn)行試運(yùn)行。1、創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫主要是選擇相應(yīng)的關(guān)系數(shù)據(jù)庫(如Oracle或SQLServer等),初始空間大小,數(shù)據(jù)庫增量大小。1.3數(shù)據(jù)庫設(shè)計(jì)2、數(shù)據(jù)裝載數(shù)據(jù)裝載主要是指篩選數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù)格式,輸入數(shù)據(jù),校驗(yàn)數(shù)據(jù)。3、編寫與調(diào)試應(yīng)用程序數(shù)據(jù)裝載完畢后要選擇相應(yīng)的開發(fā)工具(如Java等)進(jìn)行應(yīng)用程序的開發(fā)。4、數(shù)據(jù)庫試運(yùn)行在實(shí)際的運(yùn)行環(huán)境中運(yùn)行數(shù)據(jù)庫。六、數(shù)據(jù)庫的運(yùn)行與維護(hù)數(shù)據(jù)庫試運(yùn)行后是正式的運(yùn)行,數(shù)據(jù)庫運(yùn)行期間進(jìn)行維護(hù),主要任務(wù)是:(1)對數(shù)據(jù)庫的安全性與完整性進(jìn)行維護(hù);(2)對數(shù)據(jù)庫的性能進(jìn)行監(jiān)測,并進(jìn)行改善;(3)如有必要對數(shù)據(jù)庫進(jìn)行重構(gòu)與重新組織。第2章0racle介紹2.1Oracle數(shù)據(jù)庫簡介一、Oracle發(fā)展歷程1、Oracle公司Oracle公司于1977年創(chuàng)立,其中文名字是甲骨文或甲骨文公司,全稱甲骨文股份有限公司(甲骨文軟件系統(tǒng)有限公司),是全球最大的企業(yè)級軟件公司,總部位于美國加利福尼亞州的紅木灘。1989年正式進(jìn)入中國市場。2013年,甲骨文已超越IBM,成為繼Microsoft后全球第二大軟件公司。2、Oracle數(shù)據(jù)庫版本2.2Oracle數(shù)據(jù)庫體系結(jié)構(gòu)一、Oracle數(shù)據(jù)庫體系結(jié)構(gòu)Oracle服務(wù)器為用戶提供了一個(gè)開放的、全面的、完整的信息管理平臺,Oracle服務(wù)器由Oracle實(shí)例和Oracle數(shù)據(jù)庫兩部分組成,數(shù)據(jù)庫體系結(jié)構(gòu)如下圖所示:2.2Oracle數(shù)據(jù)庫體系結(jié)構(gòu)二、Oracle實(shí)例1.系統(tǒng)全局區(qū)SGASGA是一塊內(nèi)存區(qū)域,它包含Oracle服務(wù)器的數(shù)據(jù)和控制信息。它是在Oracle服務(wù)器所駐留的計(jì)算機(jī)的虛擬內(nèi)存中得以分配。SGA由幾種內(nèi)存結(jié)構(gòu)組成:(1)共享池:用于存儲最近執(zhí)行的SQL語句和最近使用的數(shù)據(jù)字典數(shù)據(jù)。這些SQL語句可以是用戶進(jìn)程提交的,也可以是從數(shù)據(jù)字典讀取的(在存儲過程的情況中)。(2)數(shù)據(jù)庫緩沖區(qū):高速緩存用于存儲最近使用的數(shù)據(jù)。這些數(shù)據(jù)從數(shù)據(jù)文件讀取,或者寫入數(shù)據(jù)文件。(3)重做日志緩沖區(qū):用于跟蹤服務(wù)器和后臺進(jìn)程對數(shù)據(jù)庫所做的更改。在SGA中還有兩種可選的內(nèi)存結(jié)構(gòu):(1)Java池:用于存儲Java代碼(2)大型共享池:用于存儲并不與SQL語句處理直接相關(guān)的大型內(nèi)存結(jié)構(gòu)。例如在備份和復(fù)原操作過程中復(fù)制的數(shù)據(jù)塊。2.2Oracle數(shù)據(jù)庫體系結(jié)構(gòu)2.后臺進(jìn)程實(shí)例中的后臺進(jìn)程執(zhí)行用于處理并行用戶請求所需的通用功能,而不會損害系統(tǒng)的完整性和性能。每個(gè)實(shí)例都包括下面五個(gè)必需的后臺進(jìn)程:數(shù)據(jù)庫寫入程序(DBW0):負(fù)責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文件。日志寫入程序(LGWR):將重做日志緩沖區(qū)中注冊的更改寫入重做日志文件。系統(tǒng)監(jiān)控程序(SMON):檢查數(shù)據(jù)庫的一致性,如有必要還會在數(shù)據(jù)庫打開時(shí)啟動(dòng)數(shù)據(jù)庫的恢復(fù)。過程監(jiān)視器(PMON):負(fù)責(zé)在一個(gè)Oracle進(jìn)程失敗時(shí)清理資源檢查點(diǎn)進(jìn)程(CKPT):負(fù)責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫中時(shí),更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫狀態(tài)信息。2.2Oracle數(shù)據(jù)庫體系結(jié)構(gòu)三、

Oracle數(shù)據(jù)庫Oracle數(shù)據(jù)庫可以分為邏輯(logical)結(jié)構(gòu)和物理(physical)結(jié)構(gòu)。數(shù)據(jù)庫物理結(jié)構(gòu)是指存儲數(shù)據(jù)的物理文件集合,包括數(shù)據(jù)文件、控制文件和日志文件。1.數(shù)據(jù)文件數(shù)據(jù)文件(datafile)包含數(shù)據(jù)庫中實(shí)際數(shù)據(jù)。數(shù)據(jù)包含在用戶定義的表中,而且數(shù)據(jù)文件還包含數(shù)據(jù)詞典(datadictionary),數(shù)據(jù)修改以前的映象(before-imagesofmodifiedData)索引(indexes)和其他類型的結(jié)構(gòu)(othertypesofstructures)。一個(gè)數(shù)據(jù)庫中至少包含一個(gè)數(shù)據(jù)文件。數(shù)據(jù)文件的特性有:一個(gè)數(shù)據(jù)文件只能被一個(gè)數(shù)據(jù)庫使用。當(dāng)數(shù)據(jù)庫空間不足時(shí),數(shù)據(jù)文件具有自動(dòng)擴(kuò)展的特性。一個(gè)或者多個(gè)數(shù)據(jù)文件構(gòu)成數(shù)據(jù)庫的邏輯存儲單元叫做表空間(tablespace)。2.2Oracle數(shù)據(jù)庫體系結(jié)構(gòu)2.重做日志重做日志(Redologs)包含對數(shù)據(jù)庫的修改記錄,可以在數(shù)據(jù)失敗后恢復(fù)。一個(gè)數(shù)據(jù)需要至少兩個(gè)重做日志文件。3.控制文件控制文件(Controlfiles)包含維護(hù)和檢驗(yàn)數(shù)據(jù)庫一致性的信息。例如:控制文件用來檢驗(yàn)數(shù)據(jù)文件和重作日志文件。一個(gè)數(shù)據(jù)庫需要至少一個(gè)控制文件。邏輯結(jié)構(gòu)包含表空間、段、區(qū)、塊四個(gè)層次。(1)表空間表空間(Tablespace)是數(shù)據(jù)庫中邏輯存儲單位,用于管理和組織數(shù)據(jù)。每個(gè)表空間包含一個(gè)或多個(gè)數(shù)據(jù)文件,表空間中的表和索引等數(shù)據(jù)庫對象存儲在數(shù)據(jù)文件中。表空間可以根據(jù)需求進(jìn)行創(chuàng)建、擴(kuò)展和調(diào)整,以滿足數(shù)據(jù)庫的存儲需求。2.2Oracle數(shù)據(jù)庫體系結(jié)構(gòu)(2)段段(Segment)是邏輯存儲單位,是表空間中的子集,用于存儲數(shù)據(jù)庫對象。每個(gè)表、索引等數(shù)據(jù)庫對象都分配了一個(gè)或多個(gè)段來存儲數(shù)據(jù)。段可以是數(shù)據(jù)段(datasegment)、索引段(indexsegment)、臨時(shí)段(temporarysegment)等,根據(jù)其存儲的數(shù)據(jù)類型和使用情況而定。(3)區(qū)區(qū)(Extent)是段的子集,是數(shù)據(jù)的最小單位。每個(gè)段由一個(gè)或多個(gè)區(qū)組成,每個(gè)區(qū)的大小是固定的。當(dāng)一個(gè)段需要存儲更多的數(shù)據(jù)時(shí),會動(dòng)態(tài)地分配新的區(qū)來擴(kuò)展段的大小。(4)

塊塊(Block)是存儲數(shù)據(jù)的最小單位,是操作系統(tǒng)中文件系統(tǒng)的塊大小。每個(gè)塊包含一定數(shù)量的數(shù)據(jù)記錄,以及一些管理信息和控制信息。塊的大小可以根據(jù)數(shù)據(jù)庫的需求進(jìn)行配置,通常為4KB或8KB。2.2Oracle數(shù)據(jù)庫體系結(jié)構(gòu)四、Oracle內(nèi)存結(jié)構(gòu)Oracle內(nèi)存結(jié)構(gòu)包系統(tǒng)全局區(qū)SGA和進(jìn)程全局區(qū)PGA(ProcessGlobalArea)兩部分,系統(tǒng)全局區(qū)當(dāng)啟動(dòng)實(shí)例的時(shí)候分配,進(jìn)程全局區(qū)當(dāng)server進(jìn)程建立時(shí)分配。系統(tǒng)全局區(qū)在上邊小節(jié)已介紹,本節(jié)只介紹進(jìn)程全局區(qū)。PGA進(jìn)程全局區(qū)。進(jìn)程全局區(qū)(PGA)是一個(gè)內(nèi)存區(qū)域,它包含單個(gè)服務(wù)器進(jìn)程或單個(gè)后臺進(jìn)程的數(shù)據(jù)和控制信息。其為每個(gè)連接到數(shù)據(jù)庫的用戶進(jìn)程保留的內(nèi)存空間,當(dāng)一個(gè)進(jìn)程創(chuàng)建的時(shí)候分配,當(dāng)一個(gè)進(jìn)程終止時(shí)釋放,只能由一個(gè)進(jìn)程使用。進(jìn)程全局區(qū)主要包含排序區(qū),會話信息等內(nèi)容,其中排序區(qū)用于處理SQL語句時(shí)可能需要的任何排序,會話信息包括用于會話的用戶權(quán)限和性能統(tǒng)。2.2Oracle數(shù)據(jù)庫體系結(jié)構(gòu)五、連接到OracleServer1.用于連接例程的進(jìn)程用戶在給Oracle提交SQL語句之前,必須同實(shí)例連接起來。2.連接連接是用戶進(jìn)程和Oracle服務(wù)器之間的通信路徑。數(shù)據(jù)庫用戶可以用下面三種方式之一連接到Oracle服務(wù)器。3.會話會話是用戶與Oracle服務(wù)器的一種特定連接。2.3Oracle應(yīng)用系統(tǒng)結(jié)構(gòu)Oracle數(shù)據(jù)庫作為數(shù)據(jù)庫平臺層的應(yīng)用系統(tǒng)的結(jié)構(gòu)有如下幾種。一、

單層結(jié)構(gòu)單層結(jié)構(gòu)的特點(diǎn)是使用基于字符的非圖形終端設(shè)備直接串行地連接到Oracle數(shù)據(jù)庫,所有的處理都在安裝了數(shù)據(jù)庫服務(wù)器的大型機(jī)上進(jìn)行。單層結(jié)構(gòu)的配置和管理較方便,不存在網(wǎng)絡(luò)協(xié)議問題,也不存在操作系統(tǒng)的復(fù)雜性問題。單層結(jié)構(gòu)在可縮放性和靈活性方面有些受限制,大型機(jī)的性能決定了整個(gè)系統(tǒng)的性能。二、客戶機(jī)/服務(wù)器結(jié)構(gòu)客戶機(jī)/服務(wù)器結(jié)構(gòu)也稱為雙層結(jié)構(gòu),這種結(jié)構(gòu)是由于PC的出現(xiàn)而流行起來的??蛻魴C(jī)具有圖形用戶界面,易于學(xué)習(xí)和操作,并可以進(jìn)行數(shù)據(jù)處理,從而減輕了對服務(wù)器的需求。3、

三層結(jié)構(gòu)三層結(jié)構(gòu)是在客戶機(jī)和數(shù)據(jù)庫服務(wù)器之間引進(jìn)了中間件(Middle瓦熱),如應(yīng)用服務(wù)器或Web服務(wù)器。2.3Oracle應(yīng)用系統(tǒng)結(jié)構(gòu)三層結(jié)構(gòu)把表示層、業(yè)務(wù)邏輯和數(shù)據(jù)庫處理等任務(wù)分別放在瘦客戶機(jī)、應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器等多臺計(jì)算機(jī)上。四、分布式數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)分布式數(shù)據(jù)庫在邏輯上是一個(gè)統(tǒng)一的整體,在物理上則分別存儲在不同的物理節(jié)點(diǎn)上。2.4Oracle數(shù)據(jù)庫安裝一、Oracle數(shù)據(jù)庫安裝安裝包打開Oracle11的安裝文件夾,如上圖所示。解壓win64_11gR2_database_1of2,和win64_11gR2_database_2of2,并發(fā)把解壓win64_11gR2_database_2of2的內(nèi)容覆蓋到win64_11gR2_database_1of2的文件夾中。打開解壓后的文件夾,如下圖所示,,雙擊setup程序,2.4Oracle數(shù)據(jù)庫安裝2.安裝選項(xiàng)等待之后會出現(xiàn)如左圖所示的安全更新頁面。單擊“下一步”后出現(xiàn)右圖所示的選擇安裝選項(xiàng)界面,在該頁面選擇“創(chuàng)建和配置數(shù)據(jù)庫”選擇后進(jìn)入后續(xù)安裝。2.4Oracle數(shù)據(jù)庫安裝3.安裝類型安裝類型頁面如下圖所示,包含“桌面類”和“服務(wù)器類”兩種類型。單純學(xué)習(xí)Oracle數(shù)據(jù)庫選擇“桌面類”即可。2.4Oracle數(shù)據(jù)庫安裝4.安裝配置下圖所示為配置的參數(shù)頁面,在該頁面用戶選擇可以默認(rèn)或自行設(shè)置Oracle基目錄、軟件位置和數(shù)據(jù)庫文件位置。同時(shí),需要設(shè)置全局?jǐn)?shù)據(jù)庫的口令,要注意口令的格式至少要包含一個(gè)小寫字母、一個(gè)數(shù)字和一個(gè)大寫字母,否則會出現(xiàn)警告。2.4Oracle數(shù)據(jù)庫安裝5.先決條件檢查下圖中可進(jìn)行安裝條件檢查,也可忽略。如忽略,把“全部忽略”取消選中即可。然后單擊“下一步”。2.4Oracle數(shù)據(jù)庫安裝6.安裝進(jìn)程左圖為安裝概要頁面,在該頁面用戶可以瀏覽前邊所作的配置,在確認(rèn)無誤的情況下,點(diǎn)擊“完成”進(jìn)入系統(tǒng)安裝,系統(tǒng)安裝進(jìn)度如右圖所示。2.4Oracle數(shù)據(jù)庫安裝

安裝過程中,數(shù)據(jù)庫的創(chuàng)建和配置會使用數(shù)據(jù)庫配置助手完成,如左圖和中圖分別為數(shù)據(jù)庫創(chuàng)建頁面和創(chuàng)建完成后的數(shù)據(jù)庫信息頁面。數(shù)據(jù)庫安裝完成頁面如右圖所示。2.4Oracle數(shù)據(jù)庫安裝二、Oracle的啟動(dòng)、登錄1.Oracle服務(wù)Oracle安裝完成后的服務(wù)如下圖所示。右擊“計(jì)算機(jī)”-“管理”-“服務(wù)”來查看Oracle的服務(wù)。(1)OracleDBConsoleorclOracle數(shù)據(jù)庫控制臺服務(wù)。Orcl是Oracle默認(rèn)的例程。運(yùn)行EnterpriseManager11g時(shí)需要啟動(dòng)此服務(wù)。(2)OracleServiceORCL:數(shù)據(jù)庫服務(wù)數(shù)據(jù)庫服務(wù)(數(shù)據(jù)庫實(shí)例),是Oracle核心服務(wù)該服務(wù),是數(shù)據(jù)庫啟動(dòng)的基礎(chǔ),只有該服務(wù)啟動(dòng),Oracle數(shù)據(jù)庫才能正常啟動(dòng)。此服務(wù)為被默認(rèn)設(shè)置為自動(dòng)啟動(dòng)。2.4Oracle數(shù)據(jù)庫安裝(3)OracleDb11g_home1SListener:監(jiān)聽服務(wù)該服務(wù)只有在數(shù)據(jù)庫遠(yuǎn)程訪問時(shí)才需要,被默認(rèn)設(shè)置為自動(dòng)啟動(dòng)該服務(wù)啟動(dòng)數(shù)據(jù)庫服務(wù)器的監(jiān)聽器,監(jiān)聽器接受來自客戶端應(yīng)用程序的連接請求若監(jiān)聽器未啟動(dòng),則客戶端將無法連接到數(shù)據(jù)庫服務(wù)器(4)OracleORCLVSSWriterServiceOracle卷映射拷貝寫入服務(wù),VSS(VolumeShadowCopyService)能夠讓存儲基礎(chǔ)設(shè)備(比如磁盤,陣列等)創(chuàng)建高保真的時(shí)間點(diǎn)映像,即映射拷貝(shadowcopy)。它可以在多卷或者單個(gè)卷上創(chuàng)建映射拷貝,同時(shí)不會影響到系統(tǒng)的系統(tǒng)能。(非必須啟動(dòng))(5)OracleJobSchedulerORCLOracle作業(yè)調(diào)度(定時(shí)器)服務(wù),ORCL是Oracle實(shí)例標(biāo)識。(非必須啟動(dòng))2.4Oracle數(shù)據(jù)庫安裝(6)OracleMTSRecoveryService:服務(wù)端控制。該服務(wù)允許數(shù)據(jù)庫充當(dāng)一個(gè)微軟事務(wù)服務(wù)器MTS、COM/COM+對象和分布式環(huán)境下的事務(wù)的資源管理器。(非必須啟動(dòng))。(7)OracleOraDb11g_home1ClrAgent:Oracle數(shù)據(jù)庫.NET擴(kuò)展服務(wù)的一部分。(非必須啟動(dòng))2.Oracle的啟動(dòng)、登錄(1)Oracle的服務(wù)啟動(dòng)Oracle主要啟動(dòng)三個(gè)服務(wù):OracleDBConsoleorcl、OracleOraDb11g_home1TNSListener和OracleServiceORCL。啟動(dòng)方法:選中一服務(wù),右擊“啟動(dòng)”即可。2.4Oracle數(shù)據(jù)庫安裝(2)Oracle的web界面登錄單擊“開始”-“程序”-“Oracle-OraClient11g_home1”-”DatabaseControl-orcl控制臺的啟動(dòng)。如左圖所示。在中圖中輸入用戶名:SYS,口令:自己設(shè)置的口令,連接身份:SYSDBA。單擊登錄。出現(xiàn)右圖所示的界面。2.4Oracle數(shù)據(jù)庫安裝3.啟動(dòng)SQL*PLUS(1)菜單命令中登錄SQL*PLUS單擊“開始”-“程序”-“Oracle-Db11g_home1”-”應(yīng)用程序開發(fā)”-“SQLPlus”輸入用戶名:SYSassysdba和密碼(安裝時(shí)設(shè)置的密碼),單擊確定。退出SQL*PLUS:EXIT(2)用命令方式登錄遠(yuǎn)程數(shù)據(jù)庫以SYS用戶登錄:SQLPLUSSYS/密碼assysdba執(zhí)行顯示當(dāng)前用戶:SHOWUSER。EXIT2.4Oracle數(shù)據(jù)庫安裝無用戶登錄方式:在windows命令提示符下輸入SQLPLUS/nolog。執(zhí)行顯示當(dāng)前用戶:SHOWUSER。第3章SQL*Plus環(huán)境3.1SQL*Plus命令和環(huán)境設(shè)置一、

SQL*Plus命令1.連接SCOTT賬戶在登錄和使用SQL*Plus的同時(shí),要以數(shù)據(jù)庫用戶的身份連接到某個(gè)數(shù)據(jù)庫實(shí)例。SCOTT賬戶的默認(rèn)口令是TIGER。在SQL*Plus中,可使用CONNECT命令連接或者切換到指定的數(shù)據(jù)庫,使用DISCONNECT命令斷開與數(shù)據(jù)庫的連接。(1)CONN[ECT]命令本命令的功能是先斷開當(dāng)前連接,然后建立新的連接。語法格式:CONN[ECT][USERNAME]/[PASSWORD][@CONNECT_IDENTIFIER]3.1SQL*Plus命令和環(huán)境設(shè)置例:SQL>CONNSCOTT/TIGER@orcl;如果要以特權(quán)用戶的身份連接,則必須帶ASSYSTEM或ASSYSOPER選項(xiàng)。例:SQL>CONNSYS/SYS_PSW@orclASSYSDBA;(2)DISC[ONNECT]命令本命令的功能是斷開與數(shù)據(jù)庫的連接,但不退出SQL*Plus環(huán)境。例:SQL>DISC;(3)EXIT或QUIT命令如果要退出SQL*Plus環(huán)境,需使用EXIT或者QUIT命令。例:SQL>EXIT3.1SQL*Plus命令和環(huán)境設(shè)置二、環(huán)境設(shè)置命令系統(tǒng)提供了兩種參數(shù)的方式:第1種是使用對話框,第2種是使用SET命令。1.對話框方式在SQL*Plus的環(huán)境下,選擇菜單欄中的“選項(xiàng)”->“環(huán)境”命令,可得到如圖所示的設(shè)置環(huán)境對話框,如下圖所示。3.1SQL*Plus命令和環(huán)境設(shè)置2.命令方式SET命令可以改變SQL*Plus環(huán)境的值。SET命令格式:SET<選項(xiàng)><值或開關(guān)的狀態(tài)> 其中:<選項(xiàng)>是指環(huán)境參數(shù)的名稱;<值或開關(guān)的狀態(tài)>是指參數(shù)可以被設(shè)置成ON或OFF,也可以被設(shè)置成某個(gè)具體的值。系統(tǒng)提供了幾十個(gè)環(huán)境參數(shù),使用SHOW命令可以顯示SQL*Plus環(huán)境參數(shù)的值。SHOW命令格式1:SQL>SHOWALL功能:顯示所有參數(shù)的當(dāng)前設(shè)置。SHOW命令格式2:SQL<參數(shù)>功能:顯示指定參數(shù)的當(dāng)前設(shè)置。3.1SQL*Plus命令和環(huán)境設(shè)置3.常用的主要參數(shù)(1)LINESIZE和PAGESIZE通常需要對輸出的顯示環(huán)境進(jìn)行設(shè)置,這樣可以達(dá)到更理想的輸出效果。顯示輸出結(jié)果是分頁的,默認(rèn)的頁面大小是14行×80行。以下的訓(xùn)練是設(shè)置輸出頁面的大小,用戶可以比較設(shè)置前后的輸出效果。例

設(shè)置輸出頁面的大小。步驟1:輸入并執(zhí)行以下命令,觀察顯示結(jié)果:SELECT*FROMemp;步驟2:在輸入?yún)^(qū)輸入并執(zhí)行以下命令:SETPAGESIZE100SETLINESIZE120或SETPAGESIZE100LINESIZE1203.1SQL*Plus命令和環(huán)境設(shè)置步驟3:重新輸入并執(zhí)行以下命令,觀察顯示結(jié)果:SELECT*FROMemp;(2)AUTOCOMMIT該變量用于設(shè)置是否自動(dòng)提交DML語句,當(dāng)設(shè)置為ON時(shí),用戶執(zhí)行DML操作時(shí)都會自動(dòng)提交。例3.3顯示或設(shè)置當(dāng)前系統(tǒng)是否自動(dòng)提交DML命令。SQL>SHOWAUTOCOMMITAUTOCOMMITOFFSQL>SETAUTOCOMMITON3.1SQL*Plus命令和環(huán)境設(shè)置三、常用的SQL*Plus命令1.SHOW如果用戶忘了自己是以什么用戶身份連接的,可以用以下的命令顯示當(dāng)前用戶。例

顯示當(dāng)前用戶。SQL>SHOWUSER2.SPOOL命令語法格式:SPOOLspool_file_name假脫機(jī)(SPOOLING)是將信息寫到磁盤文件的一個(gè)過程。在假脫機(jī)文件名中可以包含一個(gè)路徑,該路徑是存儲假脫機(jī)文件的磁盤驅(qū)動(dòng)器和目錄的名稱。如果不包含路徑,則假脫機(jī)文件將存儲在ORACLE_HOME目錄下面的bin子目錄中。3.1SQL*Plus命令和環(huán)境設(shè)置例

使用SPOOL命令記錄操作內(nèi)容。步驟1:執(zhí)行命令:SPOOLC:\TEST步驟2:執(zhí)行命令:SELECT*FROMemp;步驟3:執(zhí)行命令:SELECT*FROMdept;步驟4:執(zhí)行命令:SPOOLOFF3.1SQL*Plus命令和環(huán)境設(shè)置3.DESC[RIBE]命令

Oracle中的DESCRIBE命令有兩個(gè)功能:一個(gè)功能是列出表的結(jié)構(gòu),另一個(gè)功能是列出有關(guān)函數(shù)、過程以及包的信息?!纠苛谐鰁mp的表結(jié)構(gòu)。SQL>DESCemp;4.LIST命令LIST把當(dāng)前緩沖區(qū)的內(nèi)容列出。例在當(dāng)前提示符下輸入如下命令:SELECTEMPNO,ENAME,JOB,SALFROMEMP;然后輸入:LIST,查看屏幕顯示的信息。3.1SQL*Plus命令和環(huán)境設(shè)置5.RUN命令RUN直接執(zhí)行當(dāng)前緩沖區(qū)內(nèi)的命令。例

在當(dāng)前提示符下輸入:RUN,會直接運(yùn)行當(dāng)前緩沖區(qū)的命令。6.EDIT命令在SQL*PLUS中運(yùn)行操作系統(tǒng)缺省的文本編輯程序(EDIT),命令形式為:EDIT【路徑\文件名】。EDIT將緩沖區(qū)中的內(nèi)容裝入系統(tǒng)缺省的文本編輯器,然后用文本編輯器的命令編輯文本。完成后保存編輯的文本,然后退出。該文本保存到當(dāng)前的緩沖區(qū)。例3.8EDITD:\ET.TXTET.TXT文件內(nèi)輸入如下內(nèi)容:SELECT*FROMDEPT;,然后保存關(guān)閉該文件。再運(yùn)行RUN,查看執(zhí)行的命令是否是ET.TXT文件中的命令。3.1SQL*Plus命令和環(huán)境設(shè)置7.運(yùn)行命令文件運(yùn)行編輯好的命令文件可用命令START文件名或者@文件名例3.9STARTD:\ET.TXT或@D:\ET.TXT四、SQL*Plus環(huán)境設(shè)置的使用SQL*Plus環(huán)境下,命令可以在一行或多行輸入,命令是不區(qū)分大小寫的。SQL命令一般要以“;”結(jié)尾??梢栽谳斎雰?nèi)容中書寫注釋,或?qū)⒃袃?nèi)容變?yōu)樽⑨尅W⑨尩膬?nèi)容在執(zhí)行時(shí)將被忽略。在一行的開頭處書寫REM,將一行注釋掉。在一行中插入“--”,將其后的內(nèi)容注釋掉。使用/**/,可以用來注釋任何一段的內(nèi)容。3.2SCOTT用戶表一、表的結(jié)構(gòu)SCOTT賬戶擁有若干個(gè)表,其中主要有一個(gè)EMP表,該表存儲公司雇員的信息,還有一個(gè)DEPT表,用于存儲公司的部門信息。ORACLE常用的表字段數(shù)據(jù)類型有:CHAR:固定長度的字符串,沒有存儲字符的位置,用空格填充。VARCHAR2:可變長度的字符串,自動(dòng)去掉前后的空格。NUMBER(M,N):數(shù)字型,M是為數(shù)總長度,N是小數(shù)的長度。DATE:日期類型,包括日期和時(shí)間在內(nèi)。BOOLEAN:布爾型,即邏輯型。可以使用DESCRIBE命令(DESCRIBE可簡寫成DESC)來檢查表的結(jié)構(gòu)信息。3.2SCOTT用戶表雇員表EMP的結(jié)構(gòu)其結(jié)構(gòu)如下圖所示:3.2SCOTT用戶表2.部門表DEPT的結(jié)構(gòu)其結(jié)構(gòu)如下圖所示:3.2SCOTT用戶表二、表的內(nèi)容

1.雇員表的EMP的內(nèi)容表的內(nèi)容如下圖所示:3.2SCOTT用戶表2.部門表DEPT的內(nèi)容其內(nèi)容如下圖所示:第4章OracleSQL4.1SQL概述一、SQL的發(fā)展1、發(fā)展歷程1970年E.F.Codd在《CommunicationoftheACM》發(fā)表:“ARelationalModelofDataforLargeSharedDataBanks”(大型共享數(shù)據(jù)庫的關(guān)系模型),首次提出了關(guān)系數(shù)據(jù)模型。1974年Boycee和Chamberlin提出了SEQUEL(StructuredEnglishQUEryLanguage),首次在IBM公司研制的關(guān)系數(shù)據(jù)庫管理系統(tǒng)SYSTEMR上實(shí)現(xiàn)。SQL一推出由于它簡單易學(xué)、功能強(qiáng)大,深受用戶及數(shù)據(jù)庫廠商的歡迎,逐步被各數(shù)據(jù)庫廠商采用,并得到了計(jì)算機(jī)工業(yè)界的認(rèn)可。1979年Oracle公司首先提供了商業(yè)版的SQL,后來IBM也在自己的DB2中實(shí)現(xiàn)了SQL。1986年10月美國國家標(biāo)準(zhǔn)局ANSI(AmercianNationalStandardInstitute)把SQL作為關(guān)系數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn),同年公布了SQL(SQL-86)標(biāo)準(zhǔn)文本。1987年國際化標(biāo)準(zhǔn)組織ISO把SQL采納為國際標(biāo)準(zhǔn)。4.1SQL概述2、SQL標(biāo)準(zhǔn)標(biāo)準(zhǔn)隨著計(jì)算機(jī)技術(shù)的發(fā)展不斷發(fā)展、豐富,下表為SQL標(biāo)準(zhǔn)的發(fā)展過程。4.1SQL概述二、SQL功能1.數(shù)據(jù)定義功能

SQL的數(shù)據(jù)定義功能通過數(shù)據(jù)定義語言DDL(DataDefinitionLanguage)實(shí)現(xiàn),用來定義數(shù)據(jù)庫的對象,包括定義表、索引、視圖等。主要有CREATE、DROP和ALTER三個(gè)命令。2.?dāng)?shù)據(jù)操縱功能SQL的數(shù)據(jù)操縱功能通過數(shù)據(jù)操縱語言DML(DataManipulationLanguage)實(shí)現(xiàn),用來對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行查詢和更新操作。主要有查詢(SELECT),更新包括插入(INSERT)、修改(UPDATE)和刪除(DELETE)等命令。3.?dāng)?shù)據(jù)控制功能

SQL的數(shù)據(jù)控制功能通過數(shù)據(jù)查控制語言DCL(DataControlLanguage)實(shí)現(xiàn),用來實(shí)現(xiàn)相關(guān)數(shù)據(jù)的存取控制,以保證數(shù)據(jù)庫的安全性。它包括授權(quán)(GRANT)和回收權(quán)限(REVOKE)兩個(gè)命令。4.1SQL概述4.事務(wù)控制功能SQL的事務(wù)控制功能通過事務(wù)控制語言TCL(TransactionControlLanguage)實(shí)現(xiàn),用來實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的一致性和并發(fā)控制。它包括提交(COMMIT)和回滾(ROLLBACK)兩個(gè)命令。三、SQL特點(diǎn)1.綜合統(tǒng)一SQL是集DDL、DML、DCL、TCL于一體的語言,而且SQL風(fēng)格統(tǒng)一,能夠獨(dú)立完成數(shù)據(jù)庫生命周期中的全部工作,包括定義、刪除和修改關(guān)系模式,定義和刪除視圖,插入、修改和更新數(shù)據(jù),建立數(shù)據(jù)庫,查詢數(shù)據(jù)和修改數(shù)據(jù)以及數(shù)據(jù)庫的安全控制等一系列操作,為開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)提供了良好的環(huán)境。。而非關(guān)系的語言風(fēng)格不統(tǒng)一。2.高度非過程化SQL是高度的非過程化的語言,用戶只需要提出“干什么”,而不需指出“怎么干”,用戶只需要將SQL語句提交給系統(tǒng),由系統(tǒng)自動(dòng)完成需求,SQL的執(zhí)行過程完全由系統(tǒng)自動(dòng)完成。4.1SQL概述

3.面向集合的操作方式SQL是面向集合操作方式,操作的對象和結(jié)果都是表中的記錄集合,而且更新操作的對象也可以是一個(gè)記錄集合。4.使用方式靈活SQL可以支持自含式、嵌入式兩種使用方式。自含式是指SQL能夠直接以聯(lián)機(jī)交互的方式使用;嵌入式是指SQL可以嵌入到高級程序設(shè)計(jì)語言中,比如C、C++、Java、VisualStudio等。這兩種使用方式語法結(jié)構(gòu)上基本是一致的,使得系統(tǒng)開發(fā)更加靈活方便。5.語言簡潔,易學(xué)易用SQL功能極強(qiáng),語言十分簡潔,完成核心功能的需要11個(gè)動(dòng)詞,就能實(shí)現(xiàn)數(shù)據(jù)庫的大部分操作,如下表所示。4.1SQL概述四、

SQL的書寫規(guī)則1.命令動(dòng)詞的書寫Oracle中SQL命令動(dòng)詞是不區(qū)分大小寫的,可以使用大寫字母,也可以使用小寫字母,或者大小寫混用。SQL命令中引用的對象、字段名、函數(shù)等也不區(qū)分大小寫。2.命令結(jié)束符Oracle中SQL命令可以書寫在一行,也可以分多行書寫,不管哪一種書寫格式在OracleSQL*plus中SQL命令的結(jié)束符為分號。如果只是單行語句,在SQLDeveloper中就不需要語句結(jié)束符。如果有多行語句,每一行以回車終止,在最后一行用分號結(jié)束符。4.1SQL概述五、ORCL數(shù)據(jù)庫本章以O(shè)racleORCL數(shù)據(jù)庫為例來講解SQL的數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢語句。OracleORCL數(shù)據(jù)庫SCOTT用戶有如下3張表,分別是:DEPT(DEPTNO,DNAME,LOC)EMP(EMPNO,ENAME,JOB,MGR,HIERDATE,SAL,COMM,DEPTNO)SALGRADE(GRADE,LOSAL,HISAL)其數(shù)據(jù)記錄如下三個(gè)表所示:4.1SQL概述4.2表的管理一、表的概念Oracle數(shù)據(jù)庫中的對象大約有40多種,常見的對象主要有五種:表(TABLE)、視圖(VIEW)、索引(INDEX)、序列(SEQUENCE)、同義詞(SYNONYM),其中表是數(shù)據(jù)庫中最基本和最重要的對象,是數(shù)據(jù)實(shí)際存放的地方,其它許多數(shù)據(jù)庫對象(索引、視圖等)都以表為基礎(chǔ)。對于關(guān)系數(shù)據(jù)庫中的表,其存儲數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,由行和列兩部分組成。表中的一行為一個(gè)元組也稱為記錄,描述一個(gè)實(shí)體,表中的一列為關(guān)系的屬性,也稱為字段。每一行的記錄順序按輸入的先后順序存放,字段的順序按照創(chuàng)建表時(shí)定義的先后順序存放。Oracle中表的概念和關(guān)系數(shù)據(jù)模型的對應(yīng)如下表所示:4.2表的管理二、Oracle數(shù)據(jù)類型Oracle數(shù)據(jù)類型主要有數(shù)值類型、字符類型、日期類型、LOB類型、二進(jìn)制類型和行類型等。1.?dāng)?shù)值類型NUMBER[(P,S)],用于存儲整數(shù)和實(shí)數(shù)。P是精度,表示數(shù)值的總位數(shù),最大38位,S是刻度范圍,可在-84...127間取值。例:NUMBER(5,2)可以用來存儲表示-999.99...999.99間的數(shù)值。P、S可以在定義時(shí)省略,例如:NUMBER(3)、NUMBER等。2.字符類型(1)CHAR[(n[BYTE|CHAR])],用于存儲定長的字符串。例:CHAR(n)。n為字符串長度,最大為2000字節(jié)。4.2表的管理(2)VARCHAR2[(n[BYTE|CHAR])],描述變長字符串。例:VARCHAR2(n)。n為字符串長度,最大為4000字節(jié)。當(dāng)字段中保存的字符串長度小于n時(shí),按實(shí)際長度分配空間。(3)LONG,用于存儲高達(dá)2GB的的可變字符串。(4)NCHAR、NVARCHAR2,國家字符集,用來存儲Unicode類型字符串。3.日期類型(1)DATE:用于存儲固定長度的日期和時(shí)間數(shù)據(jù)。(2)TIMESTAMP[(n)]:允許存儲小數(shù)形式的秒值。(3)INTERVALYEAR(n)TOMONTH:存儲以年份和月份表示的時(shí)間段。例:INTERVAL‘2-5’YEARTOMONTH表示2年5個(gè)月。4.2表的管理(4)INTERVALDAY(m)TOSECOND(n):存儲以天數(shù)、小時(shí)數(shù)、分鐘數(shù)和秒數(shù)表示的時(shí)間段。例:INTERVAL‘210:30:20’DAYTOSECOND表示2天10小時(shí)30分20秒。4.LOB類型(1)CLOBCLOB的全稱為CharacterLargeObject,即字符大對象,可以存儲大量字符數(shù)據(jù),最大容量可以達(dá)到4GB,CLOB處理方式和普通的字符不同,需要特殊的處理方式。(2)NCLOBNCLOB是CLOB的擴(kuò)展,用來存儲可變長度的Unicode字符數(shù)據(jù)。(3)BLOBBLOB是二進(jìn)制LOB,存儲較大的可變長度的二進(jìn)制對象,如圖形、視頻剪輯和聲音文件。4.2表的管理(4)BFILEBFILE是文件性LOB,存儲指向二進(jìn)制格式文件的定位器。5.RAW和LONGRAW類型用來存儲二進(jìn)制數(shù)據(jù)。(1)RAW類似于CHAR,聲明方式RAW(L),L為長度,以字節(jié)為單位,作為數(shù)據(jù)庫字段最大2000,作為變量最大32767字節(jié)。(2)LONGRAW類似于LONG,作為數(shù)據(jù)庫字段最大存儲2G字節(jié)的數(shù)據(jù),作為變量最大32760字節(jié)。4.2表的管理6.行類型(1)ROWIDROWID數(shù)據(jù)類型被稱為“偽列類型”,用于Oracle內(nèi)部保存表中每條記錄的物理地址。Oracle通過ROWID可最快地定位某行具體數(shù)據(jù)的位置。在使用ROWID字段時(shí)必須顯式指定名稱。(2)UROWID行標(biāo)識符,用于表示索引化表中行的邏輯地址。三、表的創(chuàng)建1.創(chuàng)建表的語法格式創(chuàng)建表的命令是CREATETABLE,只有具有CREATETABLE權(quán)限的用戶才能創(chuàng)建表,基本語法格式如下:4.2表的管理CREATETABLE[schema.]table_name(column_namedatatype[DEFAULTexpression][column_constraint],…n)[ASsubquery];各子句的含義如下:table_name:表的名稱。column_name:指定表的一個(gè)列的名字。Datatype:該列的數(shù)據(jù)類型。DEFAULTexpresssion:指定由expresssion表達(dá)式定義的默認(rèn)值。column_constraint:定義一個(gè)完整性約束作為列定義的一部分,格式如下:4.2表的管理CONSTRAINTconstraint_name[NOT]NULL[UNIQUE][PRIMARYKEY][REFERENCES[schema.]table_name(column_name)][CHECK(condition)],其中[NOT]NULL定義該列是否允許為空;UNIQUE定義字段的唯一性;PRIMARYKEY定義字段為主鍵;REFERENCES定義外鍵約束;CHECK(condition)定義該字段數(shù)據(jù)必須符合的條件。ASsubquery:表示將由子查詢返回的行插入到所創(chuàng)建的表中。4.2表的管理例:創(chuàng)建表DEPT2,該表包含字段DEPTNO、DNAME、LOC,具體命令如下:CREATETABLEDEPT2(DEPTNONUMBER(2),DNAMEVARCHAR2(14),LOCVARCHAR2(13));例:創(chuàng)建表DEPT3,該表包含字段DEPTNO、DNAME、LOC,指定LOC的默認(rèn)值為’北京’,具體命令如下:CREATETABLEDEPT2(DEPTNONUMBER(2),DNAMEVARCHAR2(14),LOCVARCHAR2(13)DEFAULT'北京');4.2表的管理2.通過子查詢創(chuàng)建表CREATETABLE表名(字段名...)ASSQL查詢語句;例:CREATETABLEDEPT_SUBASSELECT*

FROMDEPT

WHEREDEPTNO=30;四、表的操作1.查看表結(jié)構(gòu)其語法格式如下:DESC[RIBE]表名例:顯示DEPT_SUB表的結(jié)構(gòu):DESCDEPT_SUB;4.2表的管理2.表的重命名語法如下:RENAME舊表名TO新表名。例:RENAMEDEPT_SUBTODEPT_TAB;3.添加注釋(1)為表添加注釋語法如下:COMMENTONTABLE表名IS'...';該語法為表添加注釋字符串。如IS后的字符串為空,則清除表注釋。例:COMMENTONTABLEDEPT_TABIS‘部門表’;(2)為列添加注釋可以為字段添加注釋,語法如下:COMMENTONCOLUMN表名.字段名IS'...';該語法為字段添加注釋字符串。如IS后的字符串為空,則清除字段注釋。例:COMMENTONCOLUMNDEPT.DEPTNOIS‘部門編號;’4.2表的管理二、修改表其語法格式如下:ALTERTABLE[schema.]tablename[ADD(columnnamedatatype[DEFAULTexpression][column_constraint],…n)][MODIFY(columnnamedatatype[DEFAULTexpression][column_constraint],…n)][DROP[COLUMN](columnname,……)]修改表結(jié)構(gòu)有以下要求:可以增加字段、修改字段的屬性和刪除字段,可進(jìn)行表參數(shù)的修改以及表的重命名和約束的添加、修改、刪除和禁用等。增加的新字段總是位于表的最后。4.2表的管理假如新字段定義了默認(rèn)值,則新字段的所有行自動(dòng)填充默認(rèn)值。對于有數(shù)據(jù)的表,新增加字段的值為NULL。所以有數(shù)據(jù)的表,新增加字段不能指定為NOTNULL約束條件1.增加新字段使用ALTERTABLE…ADD語句實(shí)現(xiàn)表中字段的添加。例:為DEPT表增加一字段MAIL(電子郵件)。ALTERTABLEDEPTADDMAILVARCHAR2(20);例:為DEPT表增加兩個(gè)字段PHONE(電話)、MPR(部門負(fù)責(zé)人)。ALTERTABLEDEPTADD(PHONEVARCHAR2(11),MPRVARCHAR2(20));4.2表的管理2.修改字段名使用ALTERTABLE…RENAMECOLUMN語句修改字段的名稱。例:把DEPT表中MAIL改為EMAIL。ALTERTABLEDEPTRENAMECOLUMNMAILTOEMAIL;3.修改字段使用ALTERTABLE…MODIFY語句實(shí)現(xiàn)表中字段的修改。例:把DEPT中PHONE的數(shù)據(jù)類型改為CHAR(11)。ALTERTABLEDEPTMODIFYPHONECHAR(11);4.2表的管理例:把DEPT表中EMAIL和MPR的長度分別改為40和30。ALTERTABLEDEPTMODIFY(EMAILVARCHAR2(40),MPRVARCHAR(30));修改字段還有如下的要求:字段的寬度可以增加或減小,在表的字段沒有數(shù)據(jù)或數(shù)據(jù)為NULL時(shí)才能減小寬度。在表的字段沒有數(shù)據(jù)或數(shù)據(jù)為NULL時(shí)才能改變數(shù)據(jù)類型,CHAR和VARCHAR2之間可以隨意轉(zhuǎn)換。只有當(dāng)字段的值非空時(shí),才能增加約束條件NOTNULL。修改字段的默認(rèn)值,只影響以后插入的數(shù)據(jù)。4.2表的管理4.刪除字段使用ALTERTABLE…DROPCOLUMN語句直接刪除字段。例:刪除DEPT表中的MPR字段。ALTERTABLEDEPTDROPCOLUMNMPR;例:刪除DEPT表中的EMAIL和PHONE。ALTERTABLEDEPTDROPCOLUMN(EMAIL,PHONE);六、刪除表刪除表的語法如下:DROPTABLE表名[CASCADECONSTRAINTS];4.2表的管理例:刪除表DEPT_TAB。DROTTABLEDEPT_TAB;七、數(shù)據(jù)更新數(shù)據(jù)更新操作有三種,分別是:向表中添加添加數(shù)據(jù),修改表中的數(shù)據(jù)和刪除表中的數(shù)據(jù)。在Oracle中對應(yīng)的命令是:INERT、UPDATE、DELETE。1.插入數(shù)據(jù)INSERT語句用于向指定的表中添加數(shù)據(jù),通常有兩種形式,一種是插入一個(gè)記錄,另一種是插入子查詢的結(jié)果,語法格式如下。INSERTINTOtable_name[column_list]VALUES(values)。4.2表的管理INTO子句:指定要插入數(shù)據(jù)的表名及字段;字段的順序可與表定義中的順序不一致;沒有指定字段:表示要插入的是一條完整的元組,且字段屬性與表定義中的順序一致;指定部分字段:插入的元組在其余字段上取空值。VALUES子句:提供的值必須與INTO子句匹配包括值的個(gè)數(shù)和值的類型。(1)單行數(shù)據(jù)的插入例:向DEPT表插入全部字段的數(shù)據(jù):INERTINTODEPTVALUES(40,'開發(fā)部','北京');例:向EMP表插入部分字段的數(shù)據(jù):INSERTINTOEMP(EMPNO,ENAME,JOB,HIREDATE)VALUES(2022,'馬明','CLERK','10-10月-22');Oracle在EMP新插入的記錄中,其他的字段上自動(dòng)地賦NULL。4.2表的管理(2)多行數(shù)據(jù)的插入語法格式如下:INSERTINTOtable_name[(column1[,column2,…])SubquerySubquery:表示從有一個(gè)子查詢來向表中插入數(shù)據(jù)。例:創(chuàng)建一個(gè)新表CLERK,將EMP表中職位為CLERK的員工復(fù)制到CLERK表中。首先,創(chuàng)建空表CLERK:CREATETABLECLERKASSELECTEMPNO,ENAME,SALFROMEMPWHERE1=0;然后向CLERK插入子查詢的結(jié)果:INSERTINTOCELRKSELECTEMPNO,ENAME,SALFROMEMPWHEREJOB='CLERK';4.2表的管理2.修改數(shù)據(jù)(1)修改數(shù)據(jù)的語句UPDATE的基本語法如下:UPDATEtable_nameSETcolumn_name=value[WHEREcondition];Table_name:要更新數(shù)據(jù)的表名稱。Column_name:要更新數(shù)據(jù)的表中的字段名。Value:表示將要更新字段的更改值。WHERE:指定哪些記錄需要更新值。若沒有此項(xiàng),則將更新所有記錄的指定字段的值。例:修改(編號為7369)的工資為3000。UPDATE EMPSETSAL=3000WHERE EMPNO=7369;4.2表的管理例:將(編號為7369的雇傭日期改成當(dāng)前系統(tǒng)日期,部門編號改為10。UPDATEEMPSET

HIREDATE=SYSDATE,DEPTNO=10WHEREEMPNO=7369;如果修改的值沒有賦值或定義,將把原來字段的內(nèi)容清為NULL。若修改值的長度超過定義的長度,則會出錯(cuò)。(2)帶有子查詢的修改格式其語法格式如下:UPDATEtablename1SET(column_name1,column_name2,…)=(SELECTcolumn_name1,column_name2,…FROMtablename2[WHEREcondition]);例:將CLERK表中編號為7369的記錄的雇員名字和工資修改成為EMP表編號為7788的雇員的名字和工資。UPDATECLERKSET(ENAME,SAL)=(SELECTENAME,SALFROMEMPWHEREEMPNO=7788)WHEREEMPNO=7369;4.2表的管理3.刪除數(shù)據(jù)(1)DELETE語句刪除數(shù)據(jù)的語句為DELETE,可以刪除表中的一條或多條記錄。其語法格式如下。DELETEFROMtable_nameWHEREcondition例:將編號為‘2022’的員工信息刪除DELETEFROMEMPWHEREEMPNO=2022;例:刪除CLERK表中的全部記錄DELETEFROMCLERK(2)TRUNCATE命令如果確實(shí)要?jiǎng)h除一個(gè)大表里的全部記錄,可以用TRUNCATE命令,其語法格式如下:TRUNCATETABLE表名;4.2表的管理例:TRUNCATETABLECLERK;此命令和不帶WHERE條件的DELETE語句功能類似,不同的是,DELETE命令進(jìn)行的刪除可以回滾,但此命令進(jìn)行的刪除不可回滾。八、序列1.序列的概念序列(SEQUENCE)是序列號生成器,可以為表中的行自動(dòng)生成序列號,產(chǎn)生一組等間隔的數(shù)值(類型為數(shù)字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當(dāng)前值,或使序列增至下一個(gè)值。例如:1、2、3、4……;-3,-1、2、4……;10、20、30……,這些都是序列。4.2表的管理2.序列的的創(chuàng)建創(chuàng)建序列的命令是CREATESEQUENCE。序列的創(chuàng)建語法如下:CREATESEQUENCE序列名[INCREMENTBYn][STARTWITHn][{MAXVALUEn|NOMAXVALUE}][{MINVALUEn|NOMINVALUE}][{CYCLE|NOCYCLE}][{CACHEn|NOCACHE}];各子句含義如下:4.2表的管理INCREMENTBY用于定義序列的步長,如果省略,則默認(rèn)為1,如果出現(xiàn)負(fù)值,則代表序列的值是按照此步長遞減的。STRATWITH定義序列的初始值(即產(chǎn)生的第一個(gè)值),默認(rèn)為1。MAXVALUE定義序列生成器能產(chǎn)生的最大值。選項(xiàng)NOMAXVALUE是默認(rèn)選項(xiàng),代表沒有最大值定義,這時(shí)對于遞增序列,系統(tǒng)能夠產(chǎn)生的最大值是10的27次方;對于遞減序列,最大值是-1。MINVALUE定義序列生成器能產(chǎn)生的最小值。選項(xiàng)NOMAXVALUE是默認(rèn)選項(xiàng),代表沒有最小值定義,這時(shí)對于遞減序列,系統(tǒng)能夠產(chǎn)生的最小值是-10的26次方;對于遞增序列,最小值是1。CYCLE和NOCYCLE表示當(dāng)序列生成器的值達(dá)到限制值后是否循環(huán)。CYCLE代表循環(huán),NOCYCLE代表不循環(huán)。如果循環(huán),則當(dāng)遞增序列達(dá)到最大值是時(shí),循環(huán)到最小值;對于遞減序列達(dá)到最小值時(shí),循環(huán)到最大值。如果不循環(huán),達(dá)到限制值后,繼續(xù)產(chǎn)生新值就會發(fā)生錯(cuò)誤。CACHE(緩沖)定義存放序列的內(nèi)存塊的大小,默認(rèn)為20.NOCACHE表示不對序列進(jìn)行內(nèi)存緩沖。對序列進(jìn)行內(nèi)存緩沖,可以改善序列的性能。4.2表的管理例:創(chuàng)建一個(gè)序列ids,。CREATESEQUENCEidsINCREMENTBY1STARTWITH10MAXVALUE1000NOCYCLENOCACHE;3.序列的引用使用CURRVAL和NEXTVAL來引用序列的值。調(diào)用NEXTVAL將生成序列中的下一個(gè)序列號,調(diào)用時(shí)要指出序列名,調(diào)用方式:序列名.NEXTVALCURRVAL用于產(chǎn)生序列的當(dāng)前值,無論調(diào)用多少次都不會產(chǎn)生序列的下一個(gè)值。如果序列還沒有通過調(diào)用NEXTVAL產(chǎn)生過序列的下一個(gè)值,先引用CURRVAL沒有意義。調(diào)用方式:序列名.CURRVAL4.2表的管理例:序列ids的引用:SELECTids.NEXTVALFROMDUAL;產(chǎn)生序列的下一個(gè)值:SELECTids.NEXTVALFROMDUAL;產(chǎn)生序列的當(dāng)前值:SELECTids.CURRVALFROMDUAL;4.序列的應(yīng)用序列的用途主要是生成表的主鍵值。例:使用序列自動(dòng)產(chǎn)生ST表的學(xué)號:創(chuàng)建一個(gè)表ST(SNO,SNAME,SAGE,SSEX)4.2表的管理CREATETABLEST(SNOCHAR(12),SNAME

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論