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