版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫(kù)技術(shù)總結(jié)數(shù)據(jù)(Data):是數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象數(shù)據(jù)的定義:描述事物的符號(hào)記錄數(shù)據(jù)的種類:文字、圖形、圖象、聲音等數(shù)據(jù)的特點(diǎn):數(shù)據(jù)與其語(yǔ)義是不可分的數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱DB):是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)集合 數(shù)據(jù)庫(kù)的特征:數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存可為各種用戶共享冗余度較小數(shù)據(jù)獨(dú)立性較高易擴(kuò)展數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System,簡(jiǎn)稱DBMS):是位于用戶與操作系統(tǒng)之間的一層 數(shù)據(jù)管理軟件。DBMS的用途:科學(xué)地組織和存儲(chǔ)數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)DBMS的主要功能:數(shù)據(jù)庫(kù)的運(yùn)行管理保證數(shù)據(jù)的安全性、完整性、多用
2、戶對(duì)數(shù)據(jù)的并發(fā)使用發(fā)生故障后的系統(tǒng)恢復(fù)數(shù)據(jù)庫(kù)的建立和維護(hù)功能(實(shí)用程序)數(shù)據(jù)庫(kù)數(shù)據(jù)批量裝載數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)介質(zhì)故障恢復(fù)數(shù)據(jù)庫(kù)的重組織性能監(jiān)視等數(shù)據(jù)庫(kù)系統(tǒng)(Database System,簡(jiǎn)稱DBS)是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng)構(gòu)成。數(shù)據(jù)庫(kù)系統(tǒng)的構(gòu)成由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員(和用戶)構(gòu)成。數(shù)據(jù)管理對(duì)數(shù)據(jù)進(jìn)行分類、組織、編碼、存儲(chǔ)、檢索和維護(hù),是數(shù)據(jù)處理的中心問題數(shù)據(jù)模型這個(gè)工具來抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息。數(shù)據(jù)模型應(yīng)滿足三方面要求能比較真實(shí)地模擬現(xiàn)實(shí)世界容易為人所理解便于在計(jì)算機(jī)上實(shí)現(xiàn)數(shù)據(jù)模型分成兩個(gè)不同的層次(1)概念模型也稱信息模型,它是
3、按用戶的觀點(diǎn)來對(duì)數(shù)據(jù)和信息建模。(2)數(shù)據(jù)模型主要包括網(wǎng)狀模型、層次模型、關(guān)系模型等,它是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模??陀^對(duì)象的抽象過程-兩步抽象現(xiàn)實(shí)世界中的客觀對(duì)象抽象為概念模型; 把概念模型轉(zhuǎn)換為某一 DBMS 支持的數(shù)據(jù)模型。數(shù)據(jù)結(jié)構(gòu) 對(duì)象類型的集合 數(shù)據(jù)結(jié)構(gòu)是對(duì)系統(tǒng)靜態(tài)特性的描述兩類對(duì)象 與數(shù)據(jù)類型、內(nèi)容、性質(zhì)有關(guān)的對(duì)象 與數(shù)據(jù)之間聯(lián)系有關(guān)的對(duì)象數(shù)據(jù)操作 對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象(型)的實(shí)例(值)允許執(zhí)行的操作及有關(guān)的操作規(guī)則 數(shù)據(jù)操作的類型檢索 更新(包括插入、刪除、修改)數(shù)據(jù)模型對(duì)操作的定義 操作的確切含義 操作符號(hào) 操作規(guī)則(如優(yōu)先級(jí)) 實(shí)現(xiàn)操作的語(yǔ)言數(shù)據(jù)操作是對(duì)系統(tǒng)動(dòng)態(tài)特性的描述。
4、 數(shù)據(jù)模型對(duì)約束條件的定義反映和規(guī)定本數(shù)據(jù)模型必須遵守的基本的通用的完整性約束條件。 提供定義完整性約束條件的機(jī)制,以反映具體應(yīng)用所涉及的數(shù)據(jù)必須遵守的特定的語(yǔ)義約 束條件 。信息世界中的基本概念(1) 實(shí)體( Entity ) 客觀存在并可相互區(qū)別的事物稱為實(shí)體。(2) 屬性( Attribute ) 實(shí)體所具有的某一特性稱為屬性。 一個(gè)實(shí)體可以由若干個(gè)屬性來刻畫。(3) 碼( Key) 唯一標(biāo)識(shí)實(shí)體的屬性集稱為碼。(4) 域( Domain ) 屬性的取值范圍稱為該屬性的域 。(5) 實(shí)體型( Entity Type) 用實(shí)體名及其屬性名集合來抽象和刻畫 同類實(shí)體稱為實(shí)體型(6) 實(shí)體集(
5、 Entity Set) 同型實(shí)體的集合稱為實(shí)體集 聯(lián)系( Relationship ) 現(xiàn)實(shí)世界中事物內(nèi)部以及事物之間的聯(lián)系在信息世界 中反映為實(shí)體內(nèi)部的聯(lián)系和實(shí)體之間的聯(lián)系 實(shí)體型間聯(lián)系兩個(gè)實(shí)體型一對(duì)一聯(lián)系( 1:1)三個(gè)實(shí)體型一對(duì)多聯(lián)系( 1:n ) 一個(gè)實(shí)體型多對(duì)多聯(lián)系( m:n ) 兩個(gè)實(shí)體型間的聯(lián)系一對(duì)一聯(lián)系 如果對(duì)于實(shí)體集 A 中的每一個(gè)實(shí)體, 實(shí)體集 B 中至多有一個(gè)實(shí)體與之聯(lián)系, 反之亦然, 則稱實(shí)體集 A 與實(shí)體集 B 具有一對(duì)一聯(lián)系。記為1:1。一對(duì)多聯(lián)系如果對(duì)于實(shí)體集 A中的每一個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n 0)與之聯(lián)系,反之, 對(duì)于實(shí)體集B中的每一個(gè)實(shí)體,實(shí)體集
6、A中至多只有一個(gè)實(shí)體與之聯(lián)系,則稱實(shí)體集 A 與實(shí)體集 B 有一對(duì)多聯(lián)系記為 1:n多對(duì)多聯(lián)系( m:n)如果對(duì)于實(shí)體集 A中的每一個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n0)與之聯(lián)系,反之, 對(duì)于實(shí)體集 B中的每一個(gè)實(shí)體,實(shí)體集 A中也有m個(gè)實(shí)體(m 0)與之聯(lián)系,則稱 實(shí)體集 A 與實(shí)體 B 具有多對(duì)多聯(lián)系。記為 m:n概念模型的表示方法實(shí)體聯(lián)系方法 (E-R 方法 ) 用 E-R 圖來描述現(xiàn)實(shí)世界的概念模型 E-R 方法也稱為 E-R 模型常用數(shù)據(jù)模型非關(guān)系模型 層次模型( Hierarchical Model ) 網(wǎng)狀模型 (Network Model )數(shù)據(jù)結(jié)構(gòu):以基本層次聯(lián)系為基本單位 基
7、本層次聯(lián)系:兩個(gè)記錄以及它們之間的一對(duì)多(包括一對(duì)一)的聯(lián)系關(guān)系模型 (Relational Model) 數(shù)據(jù)結(jié)構(gòu):表面向?qū)ο竽P?(Object Oriented Model ) 數(shù)據(jù)結(jié)構(gòu):對(duì)象層次模型 滿足下面兩個(gè)條件的基本層次聯(lián)系的集合為層次模型。1. 有且只有一個(gè)結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),這個(gè)結(jié)點(diǎn)稱為根結(jié)點(diǎn)2. 根以外的其它結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)表示方法實(shí)體型:用記錄類型描述。每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型。屬性:用字段描述。每個(gè)記錄類型可包含若干個(gè)字段。 聯(lián)系:用結(jié)點(diǎn)之間的連線表示記錄(類)型之間的一對(duì)多的聯(lián)系網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)網(wǎng)狀模型滿足下面兩個(gè)條件的基本層次聯(lián)系的集合為網(wǎng)狀模型。1.
8、允許一個(gè)以上的結(jié)點(diǎn)無(wú)雙親;2. 一個(gè)結(jié)點(diǎn)可以有多于一個(gè)的雙親。表示方法(與層次數(shù)據(jù)模型相同)實(shí)體型:用記錄類型描述。每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型。屬性:用字段描述。 每個(gè)記錄類型可包含若干個(gè)字段。聯(lián)系:用結(jié)點(diǎn)之間的連線表示記錄(類)型之 間的一對(duì)多的父子聯(lián)系。關(guān)系模型的基本概念關(guān)系(Relation)一個(gè)關(guān)系對(duì)應(yīng)通常說的一張表。元組(Tuple)表中的一行即為一個(gè)元組。屬性(Attribute)表中的一列即為一個(gè)屬性,給每一個(gè)屬性起一個(gè)名稱即屬性名。關(guān)系必須是規(guī)范化的,滿足一定的規(guī)范條件 最基本的規(guī)范條件:關(guān)系的每一個(gè)分量必須是一個(gè)不 可分的數(shù)據(jù)項(xiàng)。查詢、插入、刪除、更新數(shù)據(jù)操作是集合操作,操作對(duì)
9、象和操作結(jié)果都是關(guān)系,即若干元組的集合存取路徑對(duì)用戶隱蔽,用戶只要指出干什么”,不必詳細(xì)說明 怎么干”關(guān)系模型的完整性約束實(shí)體完整性參照完整性用戶定義的完整性關(guān)系數(shù)據(jù)模型的存儲(chǔ)結(jié)構(gòu)表以文件形式存儲(chǔ)有的DBMS 個(gè)表對(duì)應(yīng)一個(gè)操作系統(tǒng)文件有的DBMS自己設(shè)計(jì)文件結(jié)構(gòu)關(guān)系模型的優(yōu)缺點(diǎn)優(yōu)點(diǎn)建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上概念單一。數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、清晰,用戶易懂易用實(shí)體和各類聯(lián)系都用關(guān)系來表示。對(duì)數(shù)據(jù)的檢索結(jié)果也是關(guān)系。關(guān)系模型的存取路徑對(duì)用戶透明具有更高的數(shù)據(jù)獨(dú)立性,更好的安全保密性 簡(jiǎn)化了程序員的工作和數(shù)據(jù)庫(kù)開發(fā)建立的工作缺點(diǎn)存取路徑對(duì)用戶透明導(dǎo)致查詢效率往往不如非 關(guān)系數(shù)據(jù)模型為提高性能,必須對(duì)用戶的查
10、詢請(qǐng)求進(jìn)行優(yōu)化 增加了開發(fā)數(shù)據(jù)庫(kù)管理系統(tǒng)的難度數(shù)據(jù)庫(kù)系統(tǒng)外部的體系結(jié)構(gòu)單用戶結(jié)構(gòu)主從式結(jié)構(gòu)分布式結(jié)構(gòu) 客戶/服務(wù)器結(jié)構(gòu) 瀏覽器/應(yīng)用服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器結(jié)構(gòu)分布式結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)在邏輯上是一個(gè)整體,但物理地分布在計(jì)算機(jī)網(wǎng)絡(luò)的不同結(jié)點(diǎn)上。 網(wǎng)絡(luò)中的每個(gè)結(jié)點(diǎn)都可以獨(dú)立處理本地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù),執(zhí)行局部應(yīng)用 同時(shí)也可以同時(shí)存取和處理多個(gè)異地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù),執(zhí)行全局應(yīng)用 優(yōu)點(diǎn)適應(yīng)了地理上分散的公司、團(tuán)體和組織對(duì)于數(shù)據(jù)庫(kù)應(yīng)用的需求。缺點(diǎn)數(shù)據(jù)的分布存放給數(shù)據(jù)的處理、管理與維護(hù)帶來困難。 當(dāng)用戶需要經(jīng)常訪問遠(yuǎn)程數(shù)據(jù)時(shí),系統(tǒng)效率會(huì)明顯地受到網(wǎng)絡(luò)傳輸?shù)闹萍s 數(shù)據(jù)庫(kù)管理員(DBA)決定數(shù)據(jù)庫(kù)中的信息內(nèi)
11、容和結(jié)構(gòu)決定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)和存取策略定義數(shù)據(jù)的安全性要求和完整性約束條件關(guān)系數(shù)據(jù)庫(kù)關(guān)系模型的組成關(guān)系數(shù)據(jù)結(jié)構(gòu) 關(guān)系操作集合 關(guān)系完整性約束1)常用的關(guān)系操作查詢選擇、投影、連接、除、并、交、差數(shù)據(jù)更新插入、刪除、修改查詢的表達(dá)能力是其中最主要的部分2)關(guān)系操作的特點(diǎn)集合操作方式,即操作的對(duì)象和結(jié)果都是集合。非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式:一次一記錄 文件系統(tǒng)的數(shù)據(jù)操作方式3)關(guān)系數(shù)據(jù)語(yǔ)言的種類關(guān)系代數(shù)語(yǔ)言用對(duì)關(guān)系的運(yùn)算來表達(dá)查詢要求4)關(guān)系數(shù)據(jù)語(yǔ)言的特點(diǎn)關(guān)系語(yǔ)言是一種高度非過程化的語(yǔ)言存取路徑的選擇由DBMS的優(yōu)化機(jī)制來完成用戶不必用循環(huán)結(jié)構(gòu)就可以完成數(shù)據(jù)操作能夠嵌入高級(jí)語(yǔ)言中使用關(guān)系代數(shù)、元
12、組關(guān)系演算和域關(guān)系演算三種語(yǔ)言在表達(dá)能力上完全等價(jià) 關(guān)系1. 域(Domain)2. 笛卡爾積(Cartesian Product)3. 關(guān)系(Relation)域是一組具有相同數(shù)據(jù)類型的值的集合。例:整數(shù)實(shí)數(shù)介于某個(gè)取值范圍的整數(shù)長(zhǎng)度指定長(zhǎng)度的字符串集合男女介于某個(gè)取值范圍的日期表3.1 SQL語(yǔ)言的動(dòng)詞SQL功能動(dòng)詞數(shù)據(jù)定義CREATE , DROP, ALTER數(shù)據(jù)查詢SELECT數(shù)據(jù)操縱INSERT , UPDATEDELETE數(shù)據(jù)控制GRANT , REVOKE3.2數(shù)據(jù)定義表3.2 SQL的數(shù)據(jù)定義語(yǔ)句操作對(duì) 象操作方式創(chuàng)建刪除修改表CREATETABLEDROP TABLEALT
13、ERTABLE視圖CREATEVIEWDROP VIEW索引CREATEINDEXDROPINDEX3.2.1定義語(yǔ)句格式CREATE TABLE ( 列名 數(shù)據(jù)類型 列級(jí)完整性約束條件 , 列名 數(shù)據(jù)類型 列級(jí)完整性約束條件, 表級(jí)完整性約束條件 );表名 :所要定義的基本表的名字 列名 :組成該表的各個(gè)屬性(列):涉及相應(yīng)屬性列的完整性約束條件 :涉及一個(gè)或多個(gè)屬性列的完整性約束條件 常用完整性約束主碼約束: PRIMARY KEY 唯一性約束: UNIQUE 非空值約束: NOT NULL 參照完整性約束三、刪除基本表DROP TABLE ; 基本表刪除數(shù)據(jù)、表上的索引都刪除 表上的視圖
14、往往仍然保留,但無(wú)法引用刪除基本表時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該 基本表及其索引的描述(標(biāo)準(zhǔn)中沒有,認(rèn)為表建立后就永久存在)二、修改基本表ALTER TABLE ADD 完整性約束 DROP MODIFY ; :要修改的基本表ADD 子句:增加新列和新的完整性約束條件 DROP 子句:刪除指定的完整性約束條件 MODIFY 子句:用于修改列名和數(shù)據(jù)類型 ALTER TABLE Student ADD Scome DA TE ; 不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。刪除屬性列 直接 /間接刪除把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中 刪除原表再將新表重命名為原表名 直接刪除屬性
15、列 :(新 ) 例: ALTER TABLE Student Drop Scome ;ALTER TABLE Student MODIFY Sage SMALLINT ;注:修改原有的列定義有可能會(huì)破壞已有數(shù)據(jù)建立與刪除索引 建立索引是加快查詢速度的有效手段 建立索引DBA 或表的屬主(即建立表的人)根據(jù)需要建立有些 DBMS 自動(dòng)建立以下列上的索引PRIMARY KEYUNIQUE維護(hù)索引DBMS 自動(dòng)完成使用索引DBMS 自動(dòng)選擇是否使用索引以及使用哪些索引一、建立索引語(yǔ)句格式CREATE UNIQUE CLUSTER INDEX ON (,)用 指定要建索引的基本表名字 索引可以建立在該
16、表的一列或多列上,各列名之間用逗號(hào)分隔用 次序指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCUNIQUE 表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄CLUSTER 表示要建立的索引是聚簇索引唯一值索引對(duì)于已含重復(fù)值的屬性列不能建 UNIQUE 索引對(duì)某個(gè)列建立 UNIQUE 索引后, 插入新記錄時(shí) DBMS 會(huì)自動(dòng)檢查新記錄在該列上是否 取了重復(fù)值。這相當(dāng)于增加了一個(gè) UNIQUE 約束聚簇索引 建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性值的升序或降序存放。也即聚 簇索引的索引項(xiàng)順序與表中記錄的物理順序一致例:CREATE CLUSTER INDEX Stusnam
17、eONStudent(Sname);在Student表的Sname (姓名)列上建立一個(gè)聚簇索引,而且Student表中的記錄將按照 Sname值的升序存放在一個(gè)基本表上最多只能建立一個(gè)聚簇索引 聚簇索引的用途:對(duì)于某些類型的查詢,可以提高查詢效率 聚簇索引的適用范圍很少對(duì)基表進(jìn)行增刪操作 很少對(duì)其中的變長(zhǎng)列進(jìn)行修改操作二、刪除索引DROP INDEX ;刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。3.3 查詢語(yǔ)句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HA VING ORDER BY ASC|DESC ;SELECT 子句:指定要顯
18、示的屬性列 FROM 子句:指定查詢對(duì)象 (基本表或視圖 ) WHERE 子句:指定查詢條件GROUP BY 子句:對(duì)查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。 通常會(huì)在每組中作用集函數(shù)。HAVING 短語(yǔ):篩選出只有滿足指定條件的組 ORDER BY 子句:對(duì)查詢結(jié)果表按指定列值的升序或降序排序 單表查詢 查詢僅涉及一個(gè)表,是一種最簡(jiǎn)單的查詢操作一、選擇表中的若干列二、選擇表中的若干元組三、對(duì)查詢結(jié)果排序四、使用集函數(shù)五、對(duì)查詢結(jié)果分組 查詢經(jīng)過計(jì)算的值SELECT 子句的 目標(biāo)列表達(dá)式 為表達(dá)式算術(shù)表達(dá)式字符串常量函數(shù)列別名 等 二、選擇表中的若干元組 消除取值重復(fù)的行 查詢
19、滿足條件的元組1. 消除取值重復(fù)的行在 SELECT 子句中使用 DISTINCT 短語(yǔ)假設(shè) SC 表中有下列數(shù)據(jù)2.查詢滿足條件的元組WHERE 子句常用的查詢條件(1) 比較大小 在 WHERE 子句的 比較條件 中使用比較運(yùn)算符=,=,=,!= 或 ,!,!, 邏輯運(yùn)算符 NOT + 比較運(yùn)算符(2) 確定范圍使用謂詞BETWEENAND NOT BETWEEN AND (3) 確定集合 使用謂詞 IN 值表, NOT IN 值表值表:用逗號(hào)分隔的一組取值(4) 字符串匹配NOT LIKE匹配串 ESCAPE 換碼字符匹配串 :指定匹配模板 匹配模板:固定字符串或含通配符的字符串 當(dāng)匹配
20、模板為固定字符串時(shí),可以用=運(yùn)算符取代 LIKE謂詞用!=或 運(yùn)算符取代 NOT LIKE 謂詞通配符% (百分號(hào))代表任意長(zhǎng)度(長(zhǎng)度可以為 0)的字符串a(chǎn)cb, addgb, ab等都滿足如 acb, afb等都滿足該匹例:a%b表示以a開頭,以b結(jié)尾的任意長(zhǎng)度的字符串。女口 該匹配串_ (下橫線)代表任意單個(gè)字符例:a_b表示以a開頭,以b結(jié)尾的長(zhǎng)度為3的任意字符串。 配串查詢DB_Design課程的課程號(hào)和學(xué)分。SELECT Cno, CcreditFROM CourseWHERE Cn ame LIKE DB_Desig nESCAPE (5) 涉及空值的查詢使用謂詞IS NULL 或
21、IS NOT NULL “IS NULL ”不能用 “ =NULL ”代替(6) 多重條件查詢用邏輯運(yùn)算符 AND和OR來聯(lián)結(jié)多個(gè)查詢條件AND的優(yōu)先級(jí)高于OR 可以用括號(hào)改變優(yōu)先級(jí)可用來實(shí)現(xiàn)多種其他謂詞NOT INNOT BETWEEN AND 三、對(duì)查詢結(jié)果排序使用 ORDER BY 子句可以按一個(gè)或多個(gè)屬性列排序升序:ASC;降序:DESC ;缺省值為升序 當(dāng)排序列含空值時(shí)ASC :排序列為空值的元組最后顯示 DESC :排序列為空值的元組最先顯示四、使用集函數(shù)5類主要集函數(shù)計(jì)數(shù)COUNT (DISTINCT|ALL2)COUNT (DISTINCT|ALJ4 列名 )計(jì)算總和SUM (
22、DISTINCT|ALL.列名)計(jì)算平均值A(chǔ)VG (DISTINCT|ALL 列名)求最大值MAX (DISTINCT|ALL 列名)求最小值MIN (DISTINCT|ALL 列名)-DISTINCT短語(yǔ):在計(jì)算時(shí)要取消指定列中的重復(fù)值-ALL短語(yǔ):不取消重復(fù)值-ALL為缺省值五、對(duì)查詢結(jié)果分組使用 GROUP BY 子句分組細(xì)化集函數(shù)的作用對(duì)象未對(duì)查詢結(jié)果分組,集函數(shù)將作用于整個(gè)查詢結(jié)果 對(duì)查詢結(jié)果分組后,集函數(shù)將分別作用于每個(gè)組GROUP BY 子句的作用對(duì)象是查詢的中間結(jié)果表分組方法:按指定的一列或多列值分組,值相等的為一組使用 GROUP BY 子句后, SELECT 子句的列名列表
23、中只能出現(xiàn)分組屬性和集函數(shù)使用 HA VING 短語(yǔ)篩選最終輸出結(jié)果只有滿足 HAVING 短語(yǔ)指定條件的組才輸出HAVING 短語(yǔ)與 WHERE 子句的區(qū)別:作用對(duì)象不同WHERE 子句作用于基表或視圖,從中選擇滿足條件的元組。HAVING 短語(yǔ)作用于組,從中選擇滿足條件的組。連接查詢同時(shí)涉及多個(gè)表的查詢稱為連接查詢用來連接兩個(gè)表的條件稱為連接條件或連接謂詞一般格式:.比較運(yùn)算符: =、=、= 、!=. BETWEEN . AND . 連接字段連接謂詞中的列名稱為連接字段 連接條件中的各連接字段類型必須是可比的,但不必是相同的 連接操作的執(zhí)行過程嵌套循環(huán)法 (NESTED-LOOP)首先在表
24、 1 中找到第一個(gè)元組,然后從頭開始掃描表2,逐一查找滿足連接件的元組,找到后就將表 1 中的第一個(gè)元組與該元組拼接起來,形成結(jié)果表中一個(gè)元組。表 2 全部查找完后, 再找表 1 中第二個(gè)元組, 然后再?gòu)念^開始掃描表 2 ,逐一查找滿足 連接條件的元組,找到后就將表 1 中的第二個(gè)元組與該元組拼接起來,形成結(jié)果表中 一個(gè)元組。重復(fù)上述操作,直到表 1 中的全部元組都處理完畢排序合并法 (SORT-MERGE)常用于 =連接首先按連接屬性對(duì)表 1 和表 2 排序?qū)Ρ?1 的第一個(gè)元組,從頭開始掃描表 2,順序查找滿足連接條件的元組,找到后就將表 1 中的第一個(gè)元組與該元組拼接起來,形成結(jié)果表中一
25、個(gè)元組。當(dāng)遇到表2 中第一條大于表 1 連接字段值的元組時(shí),對(duì)表 2 的查詢不再繼續(xù)找到表 1的第二條元組, 然后從剛才的中斷點(diǎn)處繼續(xù)順序掃描表2,查找滿足連接條件的元組,找到后就將表 1 中的第一個(gè)元組與該元組拼接起來,形成結(jié)果表中一個(gè)元組。 直接遇到表 2 中大于表 1 連接字段值的元組時(shí),對(duì)表 2的查詢不再繼續(xù) 重復(fù)上述操作,直到表 1 或表 2 中的全部元組都處理完畢為止索引連接 (INDEX-JOIN)對(duì)表 2 按連接字段建立索引對(duì)表 1 中的每個(gè)元組,依次根據(jù)其連接字段值查詢表 2 的索引,從中找到滿足條件的 元組,找到后就將表 1 中的第一個(gè)元組與該元組拼接起來,形成結(jié)果表中一個(gè)
26、元組 SQL 中連接查詢的主要類型廣義笛卡爾積等值連接 (含自然連接 ) 非等值連接查詢 自身連接查詢 外連接查詢 復(fù)合條件連接查詢 一、廣義笛卡爾積不帶連接謂詞的連接很少使用二、等值與非等值連接查詢等值連接連接運(yùn)算符為 = 的連接操作. = . 任何子句中引用表 1 和表 2 中同名屬性時(shí),都必須加表名前綴。引用唯一屬性名時(shí)可 以加也可以省略表名前綴。自然連接等值連接的一種特殊情況,把目標(biāo)列中重復(fù)的屬性列去掉。非等值連接查詢 連接運(yùn)算符不是 = 的連接操作三、自身連接一個(gè)表與其自己進(jìn)行連接,稱為表的自身連接需要給表起別名以示區(qū)別由于所有屬性名都是同名屬性,因此必須使用別名前綴 四、外連接(
27、Outer Join )外連接與普通連接的區(qū)別 普通連接操作只輸出滿足連接條件的元組 外連接操作以指定表為連接主體,將主體表中不滿足連接條件的元組一并輸出 在表名后面加外連接操作符 (*) 或 (+)指定非主體表 非主體表有一 “萬(wàn)能 ”的虛行,該行全部由空值組成 虛行可以和主體表中所有不滿足連接條件的元組進(jìn)行連接 由于虛行各列全部是空值,因此與虛行連接的結(jié)果中,來自非主體表的屬性值全部是 空值左外連接 外連接符出現(xiàn)在連接條件的左邊右外連接外連接符出現(xiàn)在連接條件的右邊五、復(fù)合條件連接WHERE 子句中含多個(gè)連接條件時(shí),稱為復(fù)合條件連接嵌套查詢概述一個(gè) SELECT-FROM-WHERE 語(yǔ)句稱
28、為一個(gè)查詢塊 將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的 WHERE 子句或 HA VING 短語(yǔ)的條件中的查詢稱 為嵌套查詢 子查詢的限制不能使用 ORDER BY 子句 層層嵌套方式反映了 SQL 語(yǔ)言的結(jié)構(gòu)化 有些嵌套查詢可以用連接運(yùn)算替代不相關(guān)子查詢 子查詢的查詢條件不依賴于父查詢相關(guān)子查詢 子查詢的查詢條件依賴于父查詢不相關(guān)子查詢 是由里向外逐層處理。即每個(gè)子查詢?cè)?上一級(jí)查詢處理之前求解,子查詢的結(jié)果 用于建立其父查詢的查找條件。相關(guān)子查詢 首先取外層查詢中表的第一個(gè)元組,根據(jù)它與內(nèi)層查詢相關(guān)的屬性值處理內(nèi)層查詢, 若 WHERE 子句返回值為真,則取此元組放入結(jié)果表; 然后再取外層表的下一
29、個(gè)元組; 重復(fù)這一過程,直至外層表全部檢查完為止引出子查詢的謂詞帶有 IN 謂詞的子查詢帶有比較運(yùn)算符的子查詢帶有 ANY 或 ALL 謂詞的子查詢帶有 EXISTS 謂詞的子查詢一、帶有 IN 謂詞的子查詢 二、帶有比較運(yùn)算符的子查詢 當(dāng)能確切知道內(nèi)層查詢返回單值時(shí),可用比較運(yùn)算符(,=,=,!=或)。與 ANY 或 ALL 謂詞配合使用三、帶有 ANY 或 ALL 謂詞的子查詢 謂詞語(yǔ)義ANY :任意一個(gè)值 ALL :所有值 需要配合使用比較運(yùn)算符 ANY 大于子查詢結(jié)果中的某個(gè)值 ALL 大于子查詢結(jié)果中的所有值 ANY 小于子查詢結(jié)果中的某個(gè)值= ANY 大于等于子查詢結(jié)果中的某個(gè)值=
30、 ALL 大于等于子查詢結(jié)果中的所有值= ANY 小于等于子查詢結(jié)果中的某個(gè)值=ALL小于等于子查詢結(jié)果中的所有值=ANY 等于子查詢結(jié)果中的某個(gè)值=ALL等于子查詢結(jié)果中的所有值(通常沒有實(shí)際意義)!=(或)ANY 不等于子查詢結(jié)果中的某個(gè)值!=(或)ALL 不等于子查詢結(jié)果中的任何一個(gè)值四、帶有 EXISTS謂詞的子查詢1. EXISTS 謂詞2. NOT EXISTS 謂詞3. 不同形式的查詢間的替換4. 相關(guān)子查詢的效率5. 用EXISTS/NOT EXISTS 實(shí)現(xiàn)全稱量詞6. 用EXISTS/NOT EXISTS 實(shí)現(xiàn)邏輯蘊(yùn)函 1. EXISTS 謂詞- 存在量詞-帶有EXISTS
31、 謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯真值“rue ”或邏輯假值“alse”。 若內(nèi)層查詢結(jié)果非空,則返回真值若內(nèi)層查詢結(jié)果為空,則返回假值-由EXISTS引出的子查詢,其目標(biāo)列表達(dá)式通常都用*,因?yàn)閹XISTS的子查詢只返回真值或假值,給出列名無(wú)實(shí)際意義 2. NOT EXISTS 謂詞3. 不同形式的查詢間的替換一些帶EXISTS或NOT EXISTS 謂詞的子查詢不能被其他形式的子查詢等價(jià)替換所有帶IN謂詞、比較運(yùn)算符、ANY和ALL謂詞的子查詢都能用帶EXISTS謂詞的子查詢等價(jià)替換。5. 用EXISTS/NOT EXISTS 實(shí)現(xiàn)全稱量詞(難點(diǎn))SQL語(yǔ)言中沒有全稱量詞 -(Fo
32、r all)可以把帶有全稱量詞的謂詞轉(zhuǎn)換為等價(jià)的帶有存在量詞的謂詞:(x)P 三一 (x( 一 P)6. 用EXISTS/NOT EXISTS 實(shí)現(xiàn)邏輯蘊(yùn)函(難點(diǎn))SQL語(yǔ)言中沒有蘊(yùn)函(Implication)邏輯運(yùn)算可以利用謂詞演算將邏輯蘊(yùn)函謂詞等價(jià)轉(zhuǎn)換為:p q 三pV q集合查詢標(biāo)準(zhǔn)SQL直接支持的集合操作種類并操作(UNION) 一般商用數(shù)據(jù)庫(kù)支持的集合操作種類并操作(UNION)交操作(INTERSECT) 差操作(MINUS)1. 并操作形式UNION參加 UNION 操作的各結(jié)果表的列數(shù)必須相同;對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類型也必須相同2交操作標(biāo)準(zhǔn) SQL 中沒有提供集合交操作,但可用其他方法
33、間接實(shí)現(xiàn)。3差操作4. 對(duì)集合操作結(jié)果的排序ORDER BY 子句只能用于對(duì)最終查詢結(jié)果排序,不能對(duì)中間結(jié)果排序 任何情況下, ORDER BY 子句只能出現(xiàn)在最后 對(duì)集合操作結(jié)果排序時(shí), ORDER BY 子句中用數(shù)字指定排序?qū)傩?.4 數(shù)據(jù)更新插入數(shù)據(jù)兩種插入數(shù)據(jù)方式插入單個(gè)元組插入子查詢結(jié)果1. 插入單個(gè)元組語(yǔ)句格式INSERTINTO (, )VALUES (V 常量 1 , )功能將新元組插入指定表中。INTO 子句指定要插入數(shù)據(jù)的表名及屬性列屬性列的順序可與表定義中的順序不一致 沒有指定屬性列:表示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序 一致指定部分屬性列:插入的元
34、組在其余屬性列上取空值VALUES 子句提供的值必須與 INTO 子句匹配 值的個(gè)數(shù) 值的類型2. 插入子查詢結(jié)果語(yǔ)句格式INSERTINTO ( , )子查詢;功能將子查詢結(jié)果插入指定表中INSERTINTO Deptage(Sdept,Avgage)SELECT Sdept, AVG(Sage)FROM StudentGROUP BY Sdept ;INTO 子句 (與插入單條元組類似 ) 指定要插入數(shù)據(jù)的表名及屬性列 屬性列的順序可與表定義中的順序不一致 沒有指定屬性列:表示要插入的是一條完整的元組 指定部分屬性列:插入的元組在其余屬性列上取空值 子查詢SELECT 子句目標(biāo)列必須與 I
35、NTO 子句匹配 值的個(gè)數(shù) 值的類型修改數(shù)據(jù)語(yǔ)句格式UPDATE SET =v表達(dá)式 , =v表達(dá)式 WHERE ;功能修改指定表中滿足 WHERE 子句條件的元組三種修改方式修改某一個(gè)元組的值 修改多個(gè)元組的值 帶子查詢的修改語(yǔ)句UPDATE SCSET Grade=0WHERE CS=(SELETE SdeptFROM StudentWHEREStudent.Sno = SC.Sno);SET 子句指定修改方式要修改的列修改后取值WHERE 子句指定要修改的元組 缺省表示要修改表中的所有元組DBMS 在執(zhí)行修改語(yǔ)句時(shí)會(huì)檢查修改操作 是否破壞表上已定義的完整性規(guī)則實(shí)體完整性 主碼不允許修改
36、用戶定義的完整性NOT NULL 約束UNIQUE 約束值域約束DELETEFROM WHERE ;-功能刪除指定表中滿足 WHERE 子句條件的元組-WHERE子句指定要?jiǎng)h除的元組 缺省表示要修改表中的所有元組-三種刪除方式刪除某一個(gè)元組的值刪除多個(gè)元組的值帶子查詢的刪除語(yǔ)句DBMS 在執(zhí)行插入語(yǔ)句時(shí)會(huì)檢查所插元組 是否破壞表上已定義的完整性規(guī)則-參照完整性? 不允許刪除? 級(jí)聯(lián)刪除更新數(shù)據(jù)與數(shù)據(jù)一致性DBMS 在執(zhí)行插入、刪除、更新語(yǔ)句時(shí)必 須保證數(shù)據(jù)庫(kù)一致性必須有事務(wù)的概念和原子性完整性檢查和保證3.5 視圖視圖的特點(diǎn)虛表,是從一個(gè)或幾個(gè)基本表(或視圖)導(dǎo)出的表只存放視圖的定義,不會(huì)出現(xiàn)
37、數(shù)據(jù)冗余基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變 基于視圖的操作查詢刪除受限更新定義基于該視圖的新視圖1. 建立視圖語(yǔ)句格式CREATE VIEW(V列名 , )AS WITH CHECK OPTION ;DBMS 執(zhí)行 CREATE VIEW 語(yǔ)句時(shí)只是把視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的 SELECT 語(yǔ)句。在對(duì)視圖查詢時(shí),按視圖的定義從基本表中將數(shù)據(jù)查出。 組成視圖的屬性列名 全部省略或全部指定省略 : 由子查詢中 SELECT 目標(biāo)列中的諸字段組成明確指定視圖的所有列名 :(1) 某個(gè)目標(biāo)列是集函數(shù)或列表達(dá)式(2) 目標(biāo)列為 *(3) 多表連接時(shí)選出了幾個(gè)同名列作為視圖
38、的字段(4) 需要在視圖中為某個(gè)列啟用新的更合適的名字WITH CHECK OPTION透過視圖進(jìn)行增刪改操作時(shí),不得破壞視 圖定義中的謂詞條件(即子查詢中的條件表達(dá)式) 帶表達(dá)式的視圖定義一個(gè)反映學(xué)生出生年份的視圖。CREATE VIEW BT_S(Sno , Sname, Sbirth)ASSELECT Sno , Sname, 2000-SageFROM Student 設(shè)置一些派生屬性列 , 也稱為虛擬列 -Sbirth 帶表達(dá)式的視圖必須明確定義組成視圖的各個(gè)屬 性列名一類不易擴(kuò)充的視圖以 SELECT * 方式創(chuàng)建的視圖可擴(kuò)充性差,應(yīng)盡可能避免2. 刪除視圖DROP VIEW ;該
39、語(yǔ)句從數(shù)據(jù)字典中刪除指定的視圖定義 由該視圖導(dǎo)出的其他視圖定義仍在數(shù)據(jù)字典中,但已不能使用,必須顯式刪除 刪除基表時(shí),由該基表導(dǎo)出的所有視圖定義都必須顯式刪除查詢視圖從用戶角度:查詢視圖與查詢基本表相同DBMS 實(shí)現(xiàn)視圖查詢的方法實(shí)體化視圖( View Materialization ) 有效性檢查:檢查所查詢的視圖是否存在 執(zhí)行視圖定義,將視圖臨時(shí)實(shí)體化,生成臨時(shí)表 查詢視圖轉(zhuǎn)換為查詢臨時(shí)表 查詢完畢刪除被實(shí)體化的視圖 (臨時(shí)表 ) 視圖消解法( View Resolution )進(jìn)行有效性檢查,檢查查詢的表、視圖等是否存在。如果存在,則從數(shù)據(jù)字典 中取出視圖的定義把視圖定義中的子查詢與用戶
40、的查詢結(jié)合起來, 轉(zhuǎn)換成等價(jià)的對(duì)基本表的查詢 執(zhí)行修正后的查詢視圖實(shí)體化法視圖消解法更新視圖用戶角度:更新視圖與更新基本表相同DBMS 實(shí)現(xiàn)視圖更新的方法視圖實(shí)體化法( View Materialization ) 視圖消解法( View Resolution ) 指定 WITH CHECK OPTION 子句后DBMS 在更新視圖時(shí)會(huì)進(jìn)行檢查,防止用戶通過視圖對(duì)不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進(jìn)行更新 更新視圖的限制一些視圖是不可更新的, 因?yàn)閷?duì)這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更 新 (對(duì)兩類方法均如此 ) 允許對(duì)行列子集視圖進(jìn)行更新對(duì)其他類型視圖的更新不同系統(tǒng)有不同限制DB
41、2 對(duì)視圖更新的限制:(1) 若視圖是由兩個(gè)以上基本表導(dǎo)出的,則此視圖不允許更新。(2) 若視圖的字段來自字段表達(dá)式或常數(shù), 則不允許對(duì)此視圖執(zhí)行 INSERT 和 UPDATE 操作, 但允許 執(zhí)行 DELETE 操作。若視圖的字段來自集函數(shù),則此視圖不允許更新。(4) 若視圖定義中含有 GROUP BY 子句,則此視圖不允許更新。(5) 若視圖定義中含有 DISTINCT 短語(yǔ),則此視圖不允許更新。(6) 若視圖定義中有嵌套查詢,并且內(nèi)層查詢的 FROM 子句中涉及的表也是導(dǎo)出該視圖的基本表,則 此視圖不允許更新。(7) 一個(gè)不允許更新的視圖上定義的視圖也不允許更新視圖對(duì)重構(gòu)數(shù)據(jù)庫(kù)提供了一
42、定程度的邏輯獨(dú)立性物理獨(dú)立性與邏輯獨(dú)立性的概念視圖在一定程度上保證了數(shù)據(jù)的邏輯獨(dú)立性 視圖只能在一定程度上提供數(shù)據(jù)的邏輯獨(dú)立性 由于對(duì)視圖的更新是有條件的,因此應(yīng)用程序中修改數(shù)據(jù)的語(yǔ)句可能仍會(huì)因基本表結(jié) 構(gòu)的改變而改變。視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)對(duì)不同用戶定義不同視圖,使每個(gè)用戶只能看到他有權(quán)看到的數(shù)據(jù)通過 WITH CHECK OPTION 對(duì)關(guān)鍵數(shù)據(jù)定義操作時(shí)間限制3.6 數(shù)據(jù)控制授權(quán)收回權(quán)限數(shù)據(jù)控制亦稱為數(shù)據(jù)保護(hù),包括數(shù)據(jù)的:安全性控制完整性控制并發(fā)控制恢復(fù)SQL 語(yǔ)言的數(shù)據(jù)控制功能SQL 語(yǔ)言提供了數(shù)據(jù)控制功能,能夠在一定程度上保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的完全性、完整性,并提供了一 定的并發(fā)
43、控制及恢復(fù)能力。1. 完整性數(shù)據(jù)庫(kù)的完整性是指數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性與相容性。SQL 語(yǔ)言定義完整性約束條件 CREATE TABLE 語(yǔ)句 ALTER TABLE 語(yǔ)句碼 取值唯一的列 參照完整性 其他約束條件2. 并發(fā)控制并發(fā)控制 : 當(dāng)多個(gè)用戶并發(fā)地對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí),對(duì)他們加以控制、協(xié)調(diào),以保證并發(fā)操作 正確執(zhí)行,保持?jǐn)?shù)據(jù)庫(kù)的一致性。SQL 語(yǔ)言并發(fā)控制能力: 提供事務(wù)、事務(wù)開始、事務(wù)結(jié)束、提交等概念 3. 恢復(fù)恢復(fù) : 當(dāng)發(fā)生各種類型的故障導(dǎo)致數(shù)據(jù)庫(kù)處于不一致狀態(tài)時(shí),將數(shù)據(jù)庫(kù)恢復(fù)到一致狀態(tài)的功 能。SQL 語(yǔ)言恢復(fù)功能: 提供事務(wù)回滾、重做等概念 ( UNDO 、 REDO ) 4.
44、安全性安全性:保護(hù)數(shù)據(jù)庫(kù),防止不合法的使用所造成的數(shù)據(jù)泄露和破壞。 保證數(shù)據(jù)安全性的主要措施存取控制:控制用戶只能存取他有權(quán)存取的數(shù)據(jù) 規(guī)定不同用戶對(duì)于不同數(shù)據(jù)對(duì)象所允許執(zhí)行的操作 DBMS 實(shí)現(xiàn)數(shù)據(jù)安全性保護(hù)的過程用戶或 DBA 把授權(quán)決定告知系統(tǒng)SQL 的 GRANT 和 REVOKEDBMS 把授權(quán)的結(jié)果存入數(shù)據(jù)字典當(dāng)用戶提出操作請(qǐng)求時(shí), DBMS 根據(jù)授權(quán)定義進(jìn)行檢查,以決定是否執(zhí)行操作請(qǐng)求 授權(quán)GRANT 語(yǔ)句的一般格式:GRANT ,.ON TO ,.WITH GRANT OPTION;誰(shuí)定義? DBA 和表的建立者(即表的屬主)REVOKE 功能:將對(duì)指定操作對(duì)象的指定操作權(quán)限授
45、予指定的用戶。(1)操作權(quán)限對(duì)象對(duì)象類型操作權(quán)限屬性列TABLESELECT,INSERT,UPDATE, DELETE,ALL RIVIEGES視圖TABLESELECT,INSERT,UPDATE, DELETE,ALL RIVIEGES基本表TABLESELECT,INSERT,UPDATE, DELETE ALTER, INDEX, ALL PRIVIEGES數(shù)據(jù)庫(kù)DATABASECREATETAB(2)用戶的權(quán)限建表(CREATETAB )的權(quán)限:屬于DBA DBA授予- 普通用戶基本表或視圖的屬主擁有對(duì)該表或視圖的一切操作權(quán)限 接受權(quán)限的用戶:一個(gè)或多個(gè)具體用戶PUBLIC (全體
46、用戶)(4) WITH GRANT OPTION 子句指定了 WITH GRANT OPTION 子句:獲得某種權(quán)限的用戶還可以把這種權(quán)限再授予別的用戶。沒有指定 WITH GRANT OPTION 子句:獲得某種權(quán)限的用戶只能使用該權(quán)限,不能傳播該權(quán)限查詢Student表權(quán)限授給用戶 U1GRANT SELECTON TABLE StudentTO U1;把對(duì)Student表和Course表的全部權(quán)限授予用戶U2和U3GRANT ALL PRIVILIGESON TABLE Student, CourseTO U2, U3;收回權(quán)限REVOKE 語(yǔ)句的一般格式為:REVOKE ,.ON FR
47、OM , 用戶功能:從指定用戶那里收回對(duì)指定對(duì)象的指定權(quán)限3.7 嵌入式SQLSQL語(yǔ)言提供了兩種不同的使用方式:交互式嵌入式為什么要引入嵌入式 SQLSQL 語(yǔ)言是非過程性語(yǔ)言 事務(wù)處理應(yīng)用需要高級(jí)語(yǔ)言 這兩種方式細(xì)節(jié)上有差別,在程序設(shè)計(jì)的環(huán)境下, SQL 語(yǔ)句要做某些必要的擴(kuò)充 嵌入式 SQL 的一般形式為了區(qū)分 SQL 語(yǔ)句與主語(yǔ)言語(yǔ)句,需要 : 前綴: EXEC SQL 結(jié)束標(biāo)志:隨主語(yǔ)言的不同而不同 以 C 為主語(yǔ)言的嵌入式 SQL 語(yǔ)句的一般形式EXEC SQL ;DBMS 處理宿主型數(shù)據(jù)庫(kù)語(yǔ)言 SQL 的方法預(yù)編譯修改和擴(kuò)充主語(yǔ)言使之能處理 SQL 語(yǔ)句預(yù)編譯1由 DBMS 的預(yù)
48、處理程序?qū)υ闯绦蜻M(jìn)行掃描,識(shí)別出SQL 語(yǔ)句2把它們轉(zhuǎn)換成主語(yǔ)言調(diào)用語(yǔ)句,以使主語(yǔ)言編譯程序能識(shí)別它 3最后由主語(yǔ)言的編譯程序?qū)⒄麄€(gè)源程序編譯成目標(biāo)碼。嵌入 SQL 語(yǔ)句 說明性語(yǔ)句 嵌入 SQL 語(yǔ)句數(shù)據(jù)定義 可執(zhí)行語(yǔ)句數(shù)據(jù)控制 數(shù)據(jù)操縱允許出現(xiàn)可執(zhí)行的高級(jí)語(yǔ)言語(yǔ)句的地方,都可以寫可執(zhí)行 SQL 語(yǔ)句 允許出現(xiàn)說明語(yǔ)句的地方,都可以寫說明性 SQL 語(yǔ)句嵌入式 SQL 語(yǔ)句與主語(yǔ)言之間的通信將 SQL 嵌入到高級(jí)語(yǔ)言中混合編程,程序中會(huì)含 有兩種不同計(jì)算模型的語(yǔ)句SQL 語(yǔ)句 描述性的面向集合的語(yǔ)句 負(fù)責(zé)操縱數(shù)據(jù)庫(kù)高級(jí)語(yǔ)言語(yǔ)句 過程性的面向記錄的語(yǔ)句 負(fù)責(zé)控制程序流程 第八章 并發(fā)控制DBM
49、S 必須提供并發(fā)控制機(jī)制 并發(fā)控制機(jī)制是衡量一個(gè) DBMS 性能的重要標(biāo)志之一 并發(fā)控制機(jī)制的任務(wù)對(duì)并發(fā)操作進(jìn)行正確調(diào)度 保證事務(wù)的隔離性 保證數(shù)據(jù)庫(kù)的一致性 并發(fā)操作帶來的數(shù)據(jù)不一致性 丟失修改( lost update) 不可重復(fù)讀( non-repeatable read) 讀“臟”數(shù)據(jù)( dirty read )1. 丟失修改丟失修改是指事務(wù) 1 與事務(wù) 2 從數(shù)據(jù)庫(kù)中讀入同一數(shù)據(jù)并修改事務(wù) 2 的提交結(jié)果破壞了事務(wù) 1 提交的結(jié)果,導(dǎo)致事務(wù) 1 的修改被丟失。2. 不可重復(fù)讀不可重復(fù)讀是指事務(wù) 1 讀取數(shù)據(jù)后,事務(wù) 2 執(zhí)行更新操作,使事務(wù) 1 無(wú)法再現(xiàn)前一次讀 取結(jié)果。事務(wù) 1 讀
50、取某一數(shù)據(jù)后:1。事務(wù) 2 對(duì)其做了修改,當(dāng)事務(wù) 1 再次讀該數(shù)據(jù)時(shí),得到與前一次不同的值。2. 事務(wù) 2刪除了其中部分記錄,當(dāng)事務(wù)1 再次讀取數(shù)據(jù)時(shí),發(fā)現(xiàn)某些記錄神密地消失了。3. 事務(wù) 2插入了一些記錄,當(dāng)事務(wù)1 再次按相同條件讀取數(shù)據(jù)時(shí),發(fā)現(xiàn)多了一些記錄。后兩種不可重復(fù)讀有時(shí)也稱為幻影現(xiàn)象( phantom row )3. 讀 “臟”數(shù)據(jù)事務(wù) 1 修改某一數(shù)據(jù),并將其寫回磁盤事務(wù) 2 讀取同一數(shù)據(jù)后事務(wù) 1 由于某種原因被撤消,這時(shí)事務(wù) 1 已修改過 的數(shù)據(jù)恢復(fù)原值事務(wù) 2 讀到的數(shù)據(jù)就與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致, 是不正確的數(shù)據(jù),又稱為 “臟 ”數(shù)據(jù)。8.2 封鎖一、什么是封鎖封鎖就是事務(wù)
51、 T 在對(duì)某個(gè)數(shù)據(jù)對(duì)象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加 鎖加鎖后事務(wù) T 就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制, 在事務(wù) T 釋放它的鎖之前, 其它的事務(wù)不能更 新此數(shù)據(jù)對(duì)象。封鎖是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)二、基本封鎖類型基本封鎖類型排它鎖( eXclusive lock ,簡(jiǎn)記為 X 鎖)排它鎖又稱為寫鎖若事務(wù) T 對(duì)數(shù)據(jù)對(duì)象 A 加上 X 鎖,則只允許 T 讀取和修改 A ,其它任何事務(wù)都不能再對(duì) A 加 任何類型的鎖,直到 T 釋放 A 上的鎖共享鎖( Share lock ,簡(jiǎn)記為 S 鎖)共享鎖又稱為讀鎖若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上S鎖,則其它事務(wù)只能再對(duì) A加S鎖,
52、而不能加X鎖,直到T釋 放 A 上的 S 鎖8.3 封鎖協(xié)議在運(yùn)用X鎖和S鎖對(duì)數(shù)據(jù)對(duì)象加鎖時(shí),需要約定一些規(guī)則:封鎖協(xié)議(Locking Protocol )何時(shí)申請(qǐng) X 鎖或 S 鎖 持鎖時(shí)間、何時(shí)釋放不同的封鎖協(xié)議,在不同的程度上為并發(fā)操作的正確調(diào)度提供一定的保證常用的封鎖協(xié)議:三級(jí)封鎖協(xié)議1 級(jí)封鎖協(xié)議事務(wù) T 在修改數(shù)據(jù) R 之前必須先對(duì)其加 X 鎖,直到事務(wù)結(jié)束才釋放正常結(jié)束( COMMIT ) 非正常結(jié)束( ROLLBACK )1 級(jí)封鎖協(xié)議可防止丟失修改臟”數(shù)據(jù)。在 1 級(jí)封鎖協(xié)議中, 如果是讀數(shù)據(jù), 不需要加鎖的, 所以它不能保證可重復(fù)讀和不讀2 級(jí)封鎖協(xié)議1級(jí)封鎖協(xié)議+事務(wù)T在讀取數(shù)據(jù)R前必須先加S鎖,讀完后即可釋放 S鎖2 級(jí)封鎖協(xié)議可以防止丟失修改和讀 “臟”數(shù)據(jù)。在2級(jí)封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋放S鎖,所以它不能保證可重復(fù)讀。3 級(jí)封鎖協(xié)議1級(jí)封鎖協(xié)議 +事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加 S鎖,直到事務(wù)結(jié)束才釋放3 級(jí)封鎖協(xié)議可防止丟失修改、讀臟數(shù)據(jù)和不可重復(fù)讀。8.4 活鎖和死鎖
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度腳手架租賃與施工安全培訓(xùn)合同模板
- 2025年度借款合同書面質(zhì)證技術(shù)創(chuàng)新與升級(jí)方案
- 2025年度婚宴婚禮現(xiàn)場(chǎng)醫(yī)療急救服務(wù)合同
- 便宜出售商鋪合同范本
- 2025年度互聯(lián)網(wǎng)金融服務(wù)合同退款及資金安全保障協(xié)議
- 化驗(yàn)員人事合同范本
- 邊坡勞務(wù)施工合同范本
- 2025年中國(guó)自動(dòng)駕駛重卡行業(yè)市場(chǎng)前瞻與商業(yè)模式分析報(bào)告
- 體檢中心保安合同范本
- 出售老齡樹木合同范例
- 人教版八年級(jí)上冊(cè)英語(yǔ)1-4單元測(cè)試卷(含答案)
- 初中數(shù)學(xué)教學(xué)經(jīng)驗(yàn)分享
- 2024年銀行考試-興業(yè)銀行考試近5年真題附答案
- 2024年公開招聘人員報(bào)名資格審查表
- 【課件】2024高考英語(yǔ)新課標(biāo)讀后續(xù)寫說題課件
- 2024年中國(guó)油缸用導(dǎo)向環(huán)市場(chǎng)調(diào)查研究報(bào)告
- 長(zhǎng)螺旋鉆孔壓灌樁工程勞務(wù)清包合同(范本)
- 2023-2024學(xué)年江蘇鳳凰教育出版社八年級(jí)勞動(dòng)技術(shù) 栽培水稻 教案
- 統(tǒng)編版語(yǔ)文三年級(jí)下冊(cè)課堂筆記丨可下載打印
- 普惠金融政策與區(qū)域差異
- 貨車租賃協(xié)議樣式
評(píng)論
0/150
提交評(píng)論