數(shù)據(jù)庫系統(tǒng)概論復習 資料_第1頁
數(shù)據(jù)庫系統(tǒng)概論復習 資料_第2頁
數(shù)據(jù)庫系統(tǒng)概論復習 資料_第3頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.數(shù)據(jù)庫系統(tǒng)概論筆記數(shù)據(jù)(Data):是數(shù)據(jù)庫中存儲的基本對象數(shù)據(jù)的定義:描述事物的符號記錄數(shù)據(jù)的種類:文字、圖形、圖象、聲音等數(shù)據(jù)的特點:數(shù)據(jù)與其語義是不可分的數(shù)據(jù)庫(Database,簡稱DB):是長期儲存在計算機內、有組織的、可共享的大量數(shù)據(jù)集合數(shù)據(jù)庫的特征:n 數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲存n 可為各種用戶共享n 冗余度較小n 數(shù)據(jù)獨立性較高n 易擴展數(shù)據(jù)庫管理系統(tǒng)(Database Management System,簡稱DBMS):是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。DBMS的用途:科學地組織和存儲數(shù)據(jù)、高效地獲取和維護數(shù)據(jù)DBMS的主要功能:數(shù)據(jù)庫的運行管理保證數(shù)據(jù)

2、的安全性、完整性、多用戶對數(shù)據(jù)的并發(fā)使用發(fā)生故障后的系統(tǒng)恢復n 數(shù)據(jù)庫的建立和維護功能(實用程序)數(shù)據(jù)庫數(shù)據(jù)批量裝載數(shù)據(jù)庫轉儲介質故障恢復數(shù)據(jù)庫的重組織性能監(jiān)視等數(shù)據(jù)庫系統(tǒng)(Database System,簡稱DBS)是指在計算機系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構成。n 數(shù)據(jù)庫系統(tǒng)的構成n 由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應用系統(tǒng)、數(shù)據(jù)庫管理員(和用戶)構成。n 數(shù)據(jù)管理n 對數(shù)據(jù)進行分類、組織、編碼、存儲、檢索和維護,是數(shù)據(jù)處理的中心問題數(shù)據(jù)模型這個工具來抽象、表示和處理現(xiàn)實世界中的數(shù)據(jù)和信息。n 數(shù)據(jù)模型應滿足三方面要求n 能比較真實地模擬現(xiàn)實世界n 容易為人所理解n 便于在計算機上實現(xiàn)

3、n 數(shù)據(jù)模型分成兩個不同的層次(1) 概念模型也稱信息模型,它是按用戶的觀點來對數(shù)據(jù)和信息建模。(2) 數(shù)據(jù)模型主要包括網狀模型、層次模型、關系模型等,它是按計算機系統(tǒng)的觀點對數(shù)據(jù)建模。n 客觀對象的抽象過程-兩步抽象n 現(xiàn)實世界中的客觀對象抽象為概念模型;n 把概念模型轉換為某一DBMS支持的數(shù)據(jù)模型。n 數(shù)據(jù)結構n 對象類型的集合數(shù)據(jù)結構是對系統(tǒng)靜態(tài)特性的描述n 兩類對象n 與數(shù)據(jù)類型、內容、性質有關的對象n 與數(shù)據(jù)之間聯(lián)系有關的對象n 數(shù)據(jù)操作n 對數(shù)據(jù)庫中各種對象(型)的實例(值)允許執(zhí)行的操作及有關的操作規(guī)則n 數(shù)據(jù)操作的類型n 檢索n 更新(包括插入、刪除、修改)n 數(shù)據(jù)模型對操作

4、的定義n 操作的確切含義n 操作符號n 操作規(guī)則(如優(yōu)先級)n 實現(xiàn)操作的語言n 數(shù)據(jù)操作是對系統(tǒng)動態(tài)特性的描述。n 數(shù)據(jù)模型對約束條件的定義n 反映和規(guī)定本數(shù)據(jù)模型必須遵守的基本的通用的完整性約束條件。提供定義完整性約束條件的機制,以反映具體應用所涉及的數(shù)據(jù)必須遵守的特定的語義約束條件。信息世界中的基本概念(1) 實體(Entity)客觀存在并可相互區(qū)別的事物稱為實體。 (2) 屬性(Attribute)實體所具有的某一特性稱為屬性。一個實體可以由若干個屬性來刻畫。(3) 碼(Key)唯一標識實體的屬性集稱為碼。(4) 域(Domain)屬性的取值范圍稱為該屬性的域。(5) 實體型(Enti

5、ty Type)用實體名及其屬性名集合來抽象和刻畫同類實體稱為實體型(6) 實體集(Entity Set)同型實體的集合稱為實體集聯(lián)系(Relationship)現(xiàn)實世界中事物內部以及事物之間的聯(lián)系在信息世界中反映為實體內部的聯(lián)系和實體之間的聯(lián)系實體型間聯(lián)系兩個實體型一對一聯(lián)系(1:1)三個實體型一對多聯(lián)系(1:n)一個實體型多對多聯(lián)系(m:n)兩個實體型間的聯(lián)系n 一對一聯(lián)系n 如果對于實體集A中的每一個實體,實體集B中至多有一個實體與之聯(lián)系,反之亦然,則稱實體集A與實體集B具有一對一聯(lián)系。記為1:1。n 一對多聯(lián)系n 如果對于實體集A中的每一個實體,實體集B中有n個實體(n0)與之聯(lián)系,反

6、之,對于實體集B中的每一個實體,實體集A中至多只有一個實體與之聯(lián)系,則稱實體集A與實體集B有一對多聯(lián)系記為1:nn 多對多聯(lián)系(m:n)n 如果對于實體集A中的每一個實體,實體集B中有n個實體(n0)與之聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中也有m個實體(m0)與之聯(lián)系,則稱實體集A與實體B具有多對多聯(lián)系。記為m:n概念模型的表示方法n 實體聯(lián)系方法(E-R方法)n 用E-R圖來描述現(xiàn)實世界的概念模型n E-R方法也稱為E-R模型常用數(shù)據(jù)模型n 非關系模型n 層次模型(Hierarchical Model)n 網狀模型(Network Model )n 數(shù)據(jù)結構:以基本層次聯(lián)系為基

7、本單位基本層次聯(lián)系:兩個記錄以及它們之間的一對多(包括一對一)的聯(lián)系n 關系模型(Relational Model) n 數(shù)據(jù)結構:表n 面向對象模型(Object Oriented Model)n 數(shù)據(jù)結構:對象n 層次模型滿足下面兩個條件的基本層次聯(lián)系的集合為層次模型。1. 有且只有一個結點沒有雙親結點,這個結點稱為根結點2. 根以外的其它結點有且只有一個雙親結點n 表示方法實體型:用記錄類型描述。每個結點表示一個記錄類型。屬性:用字段描述。每個記錄類型可包含若干個字段。聯(lián)系:用結點之間的連線表示記錄(類)型之間的一對多的聯(lián)系網狀數(shù)據(jù)模型的數(shù)據(jù)結構n 網狀模型滿足下面兩個條件的基本層次聯(lián)系

8、的集合為網狀模型。1. 允許一個以上的結點無雙親;2. 一個結點可以有多于一個的雙親。n 表示方法(與層次數(shù)據(jù)模型相同)實體型:用記錄類型描述。每個結點表示一個記錄類型。屬性:用字段描述。每個記錄類型可包含若干個字段。聯(lián)系:用結點之間的連線表示記錄(類)型之間的一對多的父子聯(lián)系。關系模型的基本概念n 關系(Relation)一個關系對應通常說的一張表。n 元組(Tuple)表中的一行即為一個元組。n 屬性(Attribute)表中的一列即為一個屬性,給每一個屬性起一個名稱即屬性名。n 關系必須是規(guī)范化的,滿足一定的規(guī)范條件最基本的規(guī)范條件:關系的每一個分量必須是一個不可分的數(shù)據(jù)項。n 查詢、插

9、入、刪除、更新n 數(shù)據(jù)操作是集合操作,操作對象和操作結果都是關系,即若干元組的集合n 存取路徑對用戶隱蔽,用戶只要指出“干什么”,不必詳細說明“怎么干”關系模型的完整性約束n 實體完整性n 參照完整性n 用戶定義的完整性關系數(shù)據(jù)模型的存儲結構n 表以文件形式存儲n 有的DBMS一個表對應一個操作系統(tǒng)文件n 有的DBMS自己設計文件結構關系模型的優(yōu)缺點n 優(yōu)點n 建立在嚴格的數(shù)學概念的基礎上n 概念單一。數(shù)據(jù)結構簡單、清晰,用戶易懂易用n 實體和各類聯(lián)系都用關系來表示。n 對數(shù)據(jù)的檢索結果也是關系。n 關系模型的存取路徑對用戶透明n 具有更高的數(shù)據(jù)獨立性,更好的安全保密性n 簡化了程序員的工作和

10、數(shù)據(jù)庫開發(fā)建立的工作n 缺點存取路徑對用戶透明導致查詢效率往往不如非關系數(shù)據(jù)模型為提高性能,必須對用戶的查詢請求進行優(yōu)化增加了開發(fā)數(shù)據(jù)庫管理系統(tǒng)的難度數(shù)據(jù)庫系統(tǒng)外部的體系結構n 單用戶結構n 主從式結構n 分布式結構n 客戶/服務器結構n 瀏覽器/應用服務器/數(shù)據(jù)庫服務器結構分布式結構的數(shù)據(jù)庫系統(tǒng)n 數(shù)據(jù)庫中的數(shù)據(jù)在邏輯上是一個整體,但物理地分布在計算機網絡的不同結點上。n 網絡中的每個結點都可以獨立處理本地數(shù)據(jù)庫中的數(shù)據(jù),執(zhí)行局部應用n 同時也可以同時存取和處理多個異地數(shù)據(jù)庫中的數(shù)據(jù),執(zhí)行全局應用n 優(yōu)點n 適應了地理上分散的公司、團體和組織對于數(shù)據(jù)庫應用的需求。n 缺點n 數(shù)據(jù)的分布存放給

11、數(shù)據(jù)的處理、管理與維護帶來困難。n 當用戶需要經常訪問遠程數(shù)據(jù)時,系統(tǒng)效率會明顯地受到網絡傳輸?shù)闹萍s數(shù)據(jù)庫管理員(DBA)n 決定數(shù)據(jù)庫中的信息內容和結構n 決定數(shù)據(jù)庫的存儲結構和存取策略n 定義數(shù)據(jù)的安全性要求和完整性約束條件關系數(shù)據(jù)庫n 關系模型的組成n 關系數(shù)據(jù)結構n 關系操作集合n 關系完整性約束n 1) 常用的關系操作n 查詢n 選擇、投影、連接、除、并、交、差n 數(shù)據(jù)更新n 插入、刪除、修改n 查詢的表達能力是其中最主要的部分n 2) 關系操作的特點n 集合操作方式,即操作的對象和結果都是集合。n 非關系數(shù)據(jù)模型的數(shù)據(jù)操作方式:一次一記錄n 文件系統(tǒng)的數(shù)據(jù)操作方式n 3) 關系數(shù)據(jù)

12、語言的種類n 關系代數(shù)語言n 用對關系的運算來表達查詢要求n 4) 關系數(shù)據(jù)語言的特點n 關系語言是一種高度非過程化的語言n 存取路徑的選擇由DBMS的優(yōu)化機制來完成n 用戶不必用循環(huán)結構就可以完成數(shù)據(jù)操作n 能夠嵌入高級語言中使用n 關系代數(shù)、元組關系演算和域關系演算三種語言在表達能力上完全等價關系n 域(Domain)n 2. 笛卡爾積(Cartesian Product)n 3. 關系(Relation)n 域是一組具有相同數(shù)據(jù)類型的值的集合。例:n 整數(shù)n 實數(shù)n 介于某個取值范圍的整數(shù)n 長度指定長度的字符串集合n 男,女n 介于某個取值范圍的日期n 笛卡爾積給定一組域D1,D2,D

13、n,這些域中可以有相同的。D1,D2,Dn的笛卡爾積為:D1×D2××Dn(d1,d2,dn)diÎDi,i1,2,nn 所有域的所有取值的一個組合n 不能重復n 2) 元組(Tuple)n 笛卡爾積中每一個元素(d1,d2,dn)叫作一個n元組(n-tuple)或簡稱元組。n 3) 分量(Component)n 笛卡爾積元素(d1,d2,dn)中的每一個值di叫作一個分量。n 4) 基數(shù)(Cardinal number)n 若Di(i1,2,n)為有限集,其基數(shù)為mi(i1,2,n),則D1×D2××Dn的基數(shù)M為:n 5

14、)笛卡爾積的表示方法n 笛卡爾積可表示為一個二維表。表中的每行對應一個元組,表中的每列對應一個域。關系(Relation)1) 關系D1×D2××Dn的子集叫作在域D1,D2,Dn上的關系,表示為R(D1,D2,Dn)R:關系名 n:關系的目或度(Degree)2) 元組關系中的每個元素是關系中的元組,通常用t表示。3) 單元關系與二元關系當n=1時,稱該關系為單元關系(Unary relation)。當n=2時,稱該關系為二元關系(Binary relation)4) 關系的表示關系也是一個二維表,表的每行對應一個元組,表的每列對應一個域。5) 屬性關系中不同列

15、可以對應相同的域,為了加以區(qū)分,必須對每列起一個名字,稱為屬性(Attribute)。n目關系必有n個屬性。6) 碼候選碼(Candidate key)若關系中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼在最簡單的情況下,候選碼只包含一個屬性。稱為全碼(All-key)在最極端的情況下,關系模式的所有屬性組是這個關系模式的候選碼,稱為全碼(All-key)主碼若一個關系有多個候選碼,則選定其中一個為主碼(Primary key)主碼的諸屬性稱為主屬性(Prime attribute)。不包含在任何侯選碼中的屬性稱為非碼屬性(Non-key attribute)7) 三類關系基本關

16、系(基本表或基表)實際存在的表,是實際存儲數(shù)據(jù)的邏輯表示查詢表查詢結果對應的表視圖表由基本表或其他視圖表導出的表,是虛表,不對應實際存儲的數(shù)據(jù)基本關系的性質列是同質的(Homogeneous)每一列中的分量是同一類型的數(shù)據(jù),來自同一個域不同的列可出自同一個域其中的每一列稱為一個屬性不同的屬性要給予不同的屬性名列的順序無所謂列的次序可以任意交換遵循這一性質的數(shù)據(jù)庫產品(如ORACLE),增加新屬性時,永遠是插至最后一列但也有許多關系數(shù)據(jù)庫產品沒有遵循這一性質,例如FoxPro仍然區(qū)分了屬性順序任意兩個元組不能完全相同由笛卡爾積的性質決定但許多關系數(shù)據(jù)庫產品沒有遵循這一性質。例如:Oracle,F(xiàn)

17、oxPro等都允許關系表中存在兩個完全相同的元組,除非用戶特別定義了相應的約束條件。行的順序無所謂行的次序可以任意交換遵循這一性質的數(shù)據(jù)庫產品(如ORACLE),插入一個元組時永遠插至最后一行但也有許多關系數(shù)據(jù)庫產品沒有遵循這一性質,例如FoxPro仍然區(qū)分了元組的順序分量必須取原子值每一個分量都必須是不可分的數(shù)據(jù)項。這是規(guī)范條件中最基本的一條關系模式(Relation Schema)是型關系是值關系模式是對關系的描述元組集合的結構屬性構成屬性來自的域屬性與域之間的映象關系元組語義以及完整性約束條件屬性間的數(shù)據(jù)依賴關系集合定義關系模式關系模式可以形式化地表示為:R(U,D,dom,F(xiàn)) R 關

18、系名U組成該關系的屬性名集合D屬性組U中屬性所來自的域dom 屬性向域的映象集合F屬性間的數(shù)據(jù)依賴關系集合關系模式通常可以簡記為R (U) 或R (A1,A2,An)R 關系名A1,A2,An 屬性名注:域名及屬性向域的映象常常直接說明為屬性的類型、長度關系模式對關系的描述靜態(tài)的、穩(wěn)定的關系關系模式在某一時刻的狀態(tài)或內容動態(tài)的、隨時間不斷變化的關系模式和關系往往統(tǒng)稱為關系通過上下文加以區(qū)別1. 關系數(shù)據(jù)庫在一個給定的應用領域中,所有實體及實體之間聯(lián)系的關系的集合構成一個關系數(shù)據(jù)庫。2. 關系數(shù)據(jù)庫的型與值關系數(shù)據(jù)庫也有型和值之分關系數(shù)據(jù)庫的型稱為關系數(shù)據(jù)庫模式,是對關系數(shù)據(jù)庫的描述若干域的定義

19、在這些域上定義的若干關系模式關系數(shù)據(jù)庫的值是這些關系模式在某一時刻對應的關系的集合,通常簡稱為關系數(shù)據(jù)庫3 關系的完整性關系模型的完整性規(guī)則是對關系的某種約束條件。關系模型中三類完整性約束:實體完整性參照完整性用戶定義的完整性實體完整性和參照完整性是關系模型必須滿足的完整性約束條件,被稱作是關系的兩個不變性,應該由關系系統(tǒng)自動支持。實體完整性實體完整性規(guī)則(Entity Integrity)若屬性A是基本關系R的主屬性,則屬性A不能取空值關系模型必須遵守實體完整性規(guī)則的原因(1) 實體完整性規(guī)則是針對基本關系而言的。一個基本表通常對應現(xiàn)實世界的一個實體集或多對多聯(lián)系。(2) 現(xiàn)實世界中的實體和

20、實體間的聯(lián)系都是可區(qū)分的,即它們具有某種唯一性標識。(3) 相應地,關系模型中以主碼作為唯一性標識。關系模型必須遵守實體完整性規(guī)則的原因(續(xù))(4) 主碼中的屬性即主屬性不能取空值??罩稻褪恰安恢馈被颉盁o意義”的值。主屬性取空值,就說明存在某個不可標識的實體,即存在不可區(qū)分的實體,這與第(2)點相矛盾,因此這個規(guī)則稱為實體完整性。注意實體完整性規(guī)則規(guī)定基本關系的所有主屬性都不能取空值參照完整性1. 關系間的引用2. 外碼3. 參照完整性規(guī)則1. 關系間的引用在關系模型中實體及實體間的聯(lián)系都是用關系來描述的,因此可能存在著關系與關系間的引用。2外碼(Foreign Key)設F是基本關系R的一

21、個或一組屬性,但不是關系R的碼。如果F與基本關系S的主碼Ks相對應,則稱F是基本關系R的外碼基本關系R稱為參照關系(Referencing Relation)基本關系S稱為被參照關系(ReferencedRelation)或目標關系(Target Relation)。說明n 關系R和S不一定是不同的關系n 目標關系S的主碼Ks 和參照關系的外碼F必須定義在同一個(或一組)域上n 外碼并不一定要與相應的主碼同名當外碼與相應的主碼屬于不同關系時,往往取相同的名字,以便于識別3. 參照完整性規(guī)則若屬性(或屬性組)F是基本關系R的外碼它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),

22、則對于R中每個元組在F上的值必須為:·或者取空值(F的每個屬性值均為空值)·或者等于S中某個元組的主碼值。2.3.3用戶定義的完整性n 用戶定義的完整性是針對某一具體關系數(shù)據(jù)庫的約束條件,反映某一具體應用所涉及的數(shù)據(jù)必須滿足的語義要求。n 關系模型應提供定義和檢驗這類完整性的機制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應用程序承擔這一功能。Operation 運算,操作Operator 算子Operand 操作數(shù)1.關系代數(shù)一種抽象的查詢語言用對關系的運算來表達查詢2關系代數(shù)運算的三個要素運算對象:關系運算結果:關系運算符:四類關系代數(shù)運算符集合運算符-×并差交

23、廣義笛卡爾積比較運算符 大于大于等于小于小于等于等于不等于專門的關系運算符 ÷ 選擇投影連接除邏輯運算符Ø 非與或4關系代數(shù)運算的分類傳統(tǒng)的集合運算并、差、交、廣義笛卡爾積專門的關系運算選擇、投影、連接、除5表示記號(1) R,tÎR,tAi設關系模式為R(A1,A2,An)它的一個關系設為R。tÎR表示t是R的一個元組tAi則表示元組t中相應于屬性Ai的一個分量(2) A,tA, A若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,則A稱為屬性列或域列。tA=(tAi1,tAi2,tAik)表示元組t在屬性

24、列A上諸分量的集合。A則表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的屬性組。n (3)tr ts R為n目關系,S為m目關系。tr ÎR,tsÎS,tr ts稱為元組的連接。它是一個n + m列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組。n 4)象集Zx給定一個關系R(X,Z),X和Z為屬性組。當tX=x時,x在R中的象集(Images Set)為:Zx=tZ|t ÎR,tX=x它表示R中屬性組X上值為x的諸元組在Z上分量的集合。1. 并(Union)n R和Sn 具有相同的目n(即兩個關系都有n個屬性)n 相應的屬性取自同一個

25、域n RSn 仍為n目關系,由屬于R或屬于S的元組組成 RS = t|t ÎRt ÎS n R和Sn 具有相同的目nn 相應的屬性取自同一個域n R - Sn 仍為n目關系,由屬于R而不屬于S的所有元組組成R -S = t|tÎRtÏS n R和Sn 具有相同的目nn 相應的屬性取自同一個域n RSn 仍為n目關系,由既屬于R又屬于S的元組組成 RS = t|t ÎRt ÎS RS = R (R-S)4. 廣義笛卡爾積(Extended Cartesian Product)n Rn n目關系,k1個元組n Sn m目關系,k2個元組n

26、 R×Sn 列:(n+m)列的元組的集合n 元組的前n列是關系R的一個元組n 后m列是關系S的一個元組n 行:k1×k2個元組n R×S = tr ts |tr ÎRtsÎS 專門的關系運算1. 選擇(Selection)n 1) 選擇又稱為限制(Restriction)n 2) 選擇運算符的含義n 在關系R中選擇滿足給定條件的諸元組F(R) = t|tÎRF(t)= '真'n F:選擇條件,是一個邏輯表達式,基本形式為: Ø( X1Y1 )Ø( X2Y2 )n :比較運算符(,或<>)

27、n X1,Y1等:屬性名、常量、簡單函數(shù);屬性名也可以用它的序號來代替;n :邏輯運算符(或)n :表示任選項n :表示上述格式可以重復下去3) 選擇運算是從行的角度進行的運算2. 投影(Projection)n 1)投影運算符的含義n 從R中選擇出若干屬性列組成新的關系A(R) = tA | t ÎR A:R中的屬性列2)投影操作主要是從列的角度進行運算n 但投影之后不僅取消了原關系中的某些列,而且還可能取消某些元組(避免重復行)3. 連接(Join)n 1)連接也稱為連接n 2)連接運算的含義n 從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組R S = | trÎR

28、tsÎStrAtsB n A和B:分別為R和S上度數(shù)相等且可比的屬性組n :比較運算符n 連接運算從R和S的廣義笛卡爾積R×S中選?。≧關系)在A屬性組上的值與(S關系)在B屬性組上值滿足比較關系的元組。n 3)兩類常用連接運算n 等值連接(equijoin)n 什么是等值連接n 為“”的連接運算稱為等值連接n 等值連接的含義n 從關系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:R S = | trÎRts ÎStrA = tsB 4)一般的連接操作是從行的角度進行運算。自然連接還需要取消重復列,所以是同時從行和列的角度進行運算。

29、4)象集Z給定一個關系R(X,Z),X和Z為屬性組。當tX=x時,x在R中的象集(Images Set)為:Zx=tZ|t ÎR,tX=x它表示R中屬性組X上值為x的諸元組在Z上分量的集合。4. 除(Division)給定關系R (X,Y)和S (Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。R÷S = tr X | tr ÎRY (S) ÍYx Yx:x在R中的象集,x

30、 = trX2)除操作是同時從行和列角度進行運算第三章 關系數(shù)據(jù)庫標準語言SQL3.1 SQL概述n SQL的特點n 1. 綜合統(tǒng)一n 2. 高度非過程化n 3. 面向集合的操作方式n 4. 以同一種語法結構提供兩種使用方法n 5. 語言簡潔,易學易用5. 語言簡捷,易學易用3.2 數(shù)據(jù)定義3.2.1定義語句格式CREATE TABLE <表名>(<列名> <數(shù)據(jù)類型> <列級完整性約束條件> ,<列名> <數(shù)據(jù)類型> <列級完整性約束條件> ,<表級完整性約束條件> );n <表名>:

31、所要定義的基本表的名字n <列名>:組成該表的各個屬性(列)n <列級完整性約束條件>:涉及相應屬性列的完整性約束條件n <表級完整性約束條件>:涉及一個或多個屬性列的完整性約束條件n 常用完整性約束n 主碼約束: PRIMARY KEYn 唯一性約束:UNIQUEn 非空值約束:NOT NULLn 參照完整性約束三、刪除基本表DROP TABLE <表名>  基本表刪除數(shù)據(jù)、表上的索引都刪除表上的視圖往往仍然保留,但無法引用刪除基本表時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關該基本表及其索引的描述(標準中沒有,認為表建立后就永久存在)二、修改基本

32、表ALTER TABLE <表名> ADD <新列名> <數(shù)據(jù)類型> 完整性約束 DROP <完整性約束名> MODIFY <列名> <數(shù)據(jù)類型> ;n <表名>:要修改的基本表n ADD子句:增加新列和新的完整性約束條件n DROP子句:刪除指定的完整性約束條件n MODIFY子句:用于修改列名和數(shù)據(jù)類型ALTER TABLE Student ADD Scome DATE;不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。n 刪除屬性列直接/間接刪除n 把表中要保留的列及其內容復制到一個新表中n 刪除原表n

33、 再將新表重命名為原表名直接刪除屬性列:(新)例:ALTER TABLE Student Drop Scome;ALTER TABLE Student MODIFY Sage SMALLINT;n 注:修改原有的列定義有可能會破壞已有數(shù)據(jù)建立與刪除索引n 建立索引是加快查詢速度的有效手段n 建立索引n DBA或表的屬主(即建立表的人)根據(jù)需要建立n 有些DBMS自動建立以下列上的索引n PRIMARY KEYn UNIQUEn 維護索引n DBMS自動完成n 使用索引n DBMS自動選擇是否使用索引以及使用哪些索引一、建立索引n 語句格式CREATE UNIQUE CLUSTER INDEX

34、<索引名> ON <表名>(<列名><次序>,<列名><次序> );n 用<表名>指定要建索引的基本表名字n 索引可以建立在該表的一列或多列上,各列名之間用逗號分隔n 用<次序>指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCn UNIQUE表明此索引的每一個索引值只對應唯一的數(shù)據(jù)記錄n CLUSTER表示要建立的索引是聚簇索引n 唯一值索引n 對于已含重復值的屬性列不能建UNIQUE索引n 對某個列建立UNIQUE索引后,插入新記錄時DBMS會自動檢查新記錄在該列上是否取了重復值

35、。這相當于增加了一個UNIQUE約束n 聚簇索引n 建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性值的升序或降序存放。也即聚簇索引的索引項順序與表中記錄的物理順序一致例:CREATE CLUSTER INDEX Stusname ON Student(Sname);在Student表的Sname()列上建立一個聚簇索引,而且Student表中的記錄將按照Sname值的升序存放n 在一個基本表上最多只能建立一個聚簇索引n 聚簇索引的用途:對于某些類型的查詢,可以提高查詢效率n 聚簇索引的適用范圍n 很少對基表進行增刪操作n 很少對其中的變長列進行修改操作二、刪除索引DROP INDEX <

36、;索引名>;n 刪除索引時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關該索引的描述。3.3 查詢n 語句格式SELECT ALL|DISTINCT <目標列表達式> ,<目標列表達式> FROM <表名或視圖名>, <表名或視圖名> WHERE <條件表達式> GROUP BY <列名1> HAVING <條件表達式> ORDER BY <列名2> ASC|DESC ;n SELECT子句:指定要顯示的屬性列n FROM子句:指定查詢對象(基本表或視圖)n WHERE子句:指定查詢條件n GROUP BY子句

37、:對查詢結果按指定列的值分組,該屬性列值相等的元組為一個組。通常會在每組中作用集函數(shù)。n HAVING短語:篩選出只有滿足指定條件的組n ORDER BY子句:對查詢結果表按指定列值的升序或降序排序3.3.2單表查詢查詢僅涉及一個表,是一種最簡單的查詢操作一、選擇表中的若干列二、選擇表中的若干元組三、對查詢結果排序四、使用集函數(shù)五、對查詢結果分組查詢經過計算的值SELECT子句的<目標列表達式>為表達式n 算術表達式n 字符串常量n 函數(shù)n 列別名n 等二、選擇表中的若干元組n 消除取值重復的行n 查詢滿足條件的元組1. 消除取值重復的行n 在SELECT子句中使用DISTINCT

38、短語假設SC表中有下列數(shù)據(jù)2.查詢滿足條件的元組WHERE子句常用的查詢條件(1) 比較大小在WHERE子句的<比較條件>中使用比較運算符n =,>,<,>=,<=,!= 或 <>,!>,!<,n 邏輯運算符NOT + 比較運算符(2) 確定范圍n 使用謂詞 BETWEEN AND NOT BETWEEN AND (3) 確定集合使用謂詞 IN <值表>, NOT IN <值表> <值表>:用逗號分隔的一組取值(4) 字符串匹配n NOT LIKE <匹配串> ESCAPE <換碼

39、字符><匹配串>:指定匹配模板匹配模板:固定字符串或含通配符的字符串當匹配模板為固定字符串時,可以用 = 運算符取代 LIKE 謂詞用 != 或 < >運算符取代 NOT LIKE 謂詞通配符w % (百分號) 代表任意長度(長度可以為0)的字符串n 例:a%b表示以a開頭,以b結尾的任意長度的字符串。如acb,addgb,ab 等都滿足該匹配串² _ (下橫線) 代表任意單個字符n 例:a_b表示以a開頭,以b結尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串查詢DB_Design課程的課程號和學分。 SELECT Cno,Ccredit F

40、ROM Course WHERE Cname LIKE 'DB_Design' ESCAPE ''(5) 涉及空值的查詢n 使用謂詞 IS NULL 或 IS NOT NULLn “IS NULL” 不能用 “= NULL” 代替(6) 多重條件查詢用邏輯運算符AND和 OR來聯(lián)結多個查詢條件n AND的優(yōu)先級高于ORn 可以用括號改變優(yōu)先級可用來實現(xiàn)多種其他謂詞n NOT INn NOT BETWEEN AND 三、對查詢結果排序使用ORDER BY子句n 可以按一個或多個屬性列排序n 升序:ASC;降序:DESC;缺省值為升序當排序列含空值時n ASC:排序

41、列為空值的元組最后顯示n DESC:排序列為空值的元組最先顯示四、使用集函數(shù)5類主要集函數(shù)n 計數(shù)COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL <列名>)n 計算總和SUM(DISTINCT|ALL <列名>)n 計算平均值AVG(DISTINCT|ALL <列名>)求最大值MAX(DISTINCT|ALL <列名>)求最小值MIN(DISTINCT|ALL <列名>) DISTINCT短語:在計算時要取消指定列中的重復值 ALL短語:不取消重復值 ALL為缺省值五、對查詢結果分組使用GROUP BY

42、子句分組細化集函數(shù)的作用對象n 未對查詢結果分組,集函數(shù)將作用于整個查詢結果n 對查詢結果分組后,集函數(shù)將分別作用于每個組n GROUP BY子句的作用對象是查詢的中間結果表n 分組方法:按指定的一列或多列值分組,值相等的為一組n 使用GROUP BY子句后,SELECT子句的列名列表中只能出現(xiàn)分組屬性和集函數(shù)使用HAVING短語篩選最終輸出結果n 只有滿足HAVING短語指定條件的組才輸出n HAVING短語與WHERE子句的區(qū)別:作用對象不同n WHERE子句作用于基表或視圖,從中選擇滿足條件的元組。n HAVING短語作用于組,從中選擇滿足條件的組。連接查詢同時涉及多個表的查詢稱為連接查

43、詢用來連接兩個表的條件稱為連接條件或連接謂詞一般格式:n <表名1>.<列名1> <比較運算符> <表名2>.<列名2>比較運算符:=、>、<、>=、<=、!=n <表名1>.<列名1> BETWEEN <表名2>.<列名2> AND <表名2>.<列名3>n 連接字段n 連接謂詞中的列名稱為連接字段n 連接條件中的各連接字段類型必須是可比的,但不必是相同的連接操作的執(zhí)行過程n 嵌套循環(huán)法(NESTED-LOOP)n 首先在表1中找到第一個

44、元組,然后從頭開始掃描表2,逐一查找滿足連接件的元組,找到后就將表1中的第一個元組與該元組拼接起來,形成結果表中一個元組。n 表2全部查找完后,再找表1中第二個元組,然后再從頭開始掃描表2,逐一查找滿足連接條件的元組,找到后就將表1中的第二個元組與該元組拼接起來,形成結果表中一個元組。n 重復上述操作,直到表1中的全部元組都處理完畢排序合并法(SORT-MERGE)常用于=連接n 首先按連接屬性對表1和表2排序n 對表1的第一個元組,從頭開始掃描表2,順序查找滿足連接條件的元組,找到后就將表1中的第一個元組與該元組拼接起來,形成結果表中一個元組。當遇到表2中第一條大于表1連接字段值的元組時,對

45、表2的查詢不再繼續(xù)n 找到表1的第二條元組,然后從剛才的中斷點處繼續(xù)順序掃描表2,查找滿足連接條件的元組,找到后就將表1中的第一個元組與該元組拼接起來,形成結果表中一個元組。直接遇到表2中大于表1連接字段值的元組時,對表2的查詢不再繼續(xù)n 重復上述操作,直到表1或表2中的全部元組都處理完畢為止索引連接(INDEX-JOIN)n 對表2按連接字段建立索引n 對表1中的每個元組,依次根據(jù)其連接字段值查詢表2的索引,從中找到滿足條件的元組,找到后就將表1中的第一個元組與該元組拼接起來,形成結果表中一個元組SQL中連接查詢的主要類型n 廣義笛卡爾積n 等值連接(含自然連接)n 非等值連接查詢n 自身連

46、接查詢n 外連接查詢n 復合條件連接查詢一、廣義笛卡爾積n 不帶連接謂詞的連接n 很少使用二、等值與非等值連接查詢等值連接n 連接運算符為 = 的連接操作n <表名1>.<列名1> = <表名2>.<列名2>n 任何子句中引用表1和表2中同名屬性時,都必須加表名前綴。引用唯一屬性名時可以加也可以省略表名前綴。自然連接n 等值連接的一種特殊情況,把目標列中重復的屬性列去掉。非等值連接查詢連接運算符不是 = 的連接操作三、自身連接n 一個表與其自己進行連接,稱為表的自身連接n 需要給表起別名以示區(qū)別n 由于所有屬性名都是同名屬性,因此必須使用別名前綴

47、四、外連接(Outer Join)n 外連接與普通連接的區(qū)別n 普通連接操作只輸出滿足連接條件的元組n 外連接操作以指定表為連接主體,將主體表中不滿足連接條件的元組一并輸出n 在表名后面加外連接操作符(*)或(+)指定非主體表n 非主體表有一“萬能”的虛行,該行全部由空值組成n 虛行可以和主體表中所有不滿足連接條件的元組進行連接n 由于虛行各列全部是空值,因此與虛行連接的結果中,來自非主體表的屬性值全部是空值n 左外連接n 外連接符出現(xiàn)在連接條件的左邊n 右外連接n 外連接符出現(xiàn)在連接條件的右邊五、復合條件連接WHERE子句中含多個連接條件時,稱為復合條件連接n 嵌套查詢概述n 一個SELEC

48、T-FROM-WHERE語句稱為一個查詢塊n 將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢n 子查詢的限制n 不能使用ORDER BY子句n 層層嵌套方式反映了 SQL語言的結構化n 有些嵌套查詢可以用連接運算替代n 不相關子查詢子查詢的查詢條件不依賴于父查詢n 相關子查詢子查詢的查詢條件依賴于父查詢n 不相關子查詢是由里向外逐層處理。即每個子查詢在上一級查詢處理之前求解,子查詢的結果用于建立其父查詢的查找條件。n 相關子查詢n 首先取外層查詢中表的第一個元組,根據(jù)它與內層查詢相關的屬性值處理內層查詢,若WHERE子句返回值為真,則取此元組放入結果

49、表;n 然后再取外層表的下一個元組;n 重復這一過程,直至外層表全部檢查完為止引出子查詢的謂詞n 帶有IN謂詞的子查詢n 帶有比較運算符的子查詢n 帶有ANY或ALL謂詞的子查詢n 帶有EXISTS謂詞的子查詢一、帶有IN謂詞的子查詢二、帶有比較運算符的子查詢 當能確切知道內層查詢返回單值時,可用比較運算符(>,<,=,>=,<=,!=或< >)。n 與ANY或ALL謂詞配合使用三、帶有ANY或ALL謂詞的子查詢謂詞語義n ANY:任意一個值n ALL:所有值需要配合使用比較運算符> ANY大于子查詢結果中的某個值 > ALL大于子查詢結果中的所

50、有值< ANY小于子查詢結果中的某個值< ALL小于子查詢結果中的所有值>= ANY大于等于子查詢結果中的某個值>= ALL大于等于子查詢結果中的所有值<= ANY小于等于子查詢結果中的某個值<= ALL小于等于子查詢結果中的所有值= ANY等于子查詢結果中的某個值=ALL等于子查詢結果中的所有值(通常沒有實際意義)!=(或<>)ANY不等于子查詢結果中的某個值!=(或<>)ALL不等于子查詢結果中的任何一個值四、帶有EXISTS謂詞的子查詢1. EXISTS謂詞2. NOT EXISTS謂詞3. 不同形式的查詢間的替換4. 相關子查

51、詢的效率5. 用EXISTS/NOT EXISTS實現(xiàn)全稱量詞6. 用EXISTS/NOT EXISTS實現(xiàn)邏輯蘊函 1. EXISTS謂詞 存在量詞$ 帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產生邏輯真值“true”或邏輯假值“false”。 若內層查詢結果非空,則返回真值 若內層查詢結果為空,則返回假值 由EXISTS引出的子查詢,其目標列表達式通常都用* ,因為帶EXISTS的子查詢只返回真值或假值,給出列名無實際意義 2. NOT EXISTS謂詞3. 不同形式的查詢間的替換一些帶EXISTS或NOT EXISTS謂詞的子查詢不能被其他形式的子查詢等價替換所有帶IN謂詞、比較運算

52、符、ANY和ALL謂詞的子查詢都能用帶EXISTS謂詞的子查詢等價替換。5.用EXISTS/NOT EXISTS實現(xiàn)全稱量詞(難點)n SQL語言中沒有全稱量詞" (For all)n 可以把帶有全稱量詞的謂詞轉換為等價的帶有存在量詞的謂詞: ("x)P Ø ($ x(Ø P) 6. 用EXISTS/NOT EXISTS實現(xiàn)邏輯蘊函(難點)n SQL語言中沒有蘊函(Implication)邏輯運算n 可以利用謂詞演算將邏輯蘊函謂詞等價轉換為: p ® q Ø pq 3.3.5 集合查詢標準SQL直接支持的集合操作種類并操作(UNION

53、)一般商用數(shù)據(jù)庫支持的集合操作種類并操作(UNION)交操作(INTERSECT)差操作(MINUS)1并操作n 形式<查詢塊> UNION <查詢塊>n 參加UNION操作的各結果表的列數(shù)必須相同;對應項的數(shù)據(jù)類型也必須相同2交操作標準SQL中沒有提供集合交操作,但可用其他方法間接實現(xiàn)。3差操作4. 對集合操作結果的排序n ORDER BY子句只能用于對最終查詢結果排序,不能對中間結果排序n 任何情況下,ORDER BY子句只能出現(xiàn)在最后n 對集合操作結果排序時,ORDER BY子句中用數(shù)字指定排序屬性3.4 數(shù)據(jù)更新3.4.1插入數(shù)據(jù)n 兩種插入數(shù)據(jù)方式n 插入單個元組n 插入子查詢結果1. 插入單個元組n 語句格式INSERTINTO <表名> (<屬性列1>,<屬性列2 >)VALUES (<常量1> ,<常量2> )n 功能將新元組插入指定表中。n INTO子句n 指定要插入數(shù)據(jù)的表名及屬性列n 屬性列的順序可與表定義中的順序不一致n 沒有指定屬性列:表示要插入的是一條完整的元組,且屬性

溫馨提示

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

評論

0/150

提交評論