




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
關系數據庫基礎數據庫原理及應用基于SQLServer2022(第3版)關系數據庫基礎目錄2.1關系模型概述2.2關系模型的完整性 2.3常用的關系運算2.4*關系演算與查詢優化2.5常量、變量、函數和表達式2.6實驗2常量變量函數表達應用2.7本章小結 教學目標
教學目標●掌握關系模型及關系數據庫的基本概念●掌握關系模型常用的完整性規則及主要用法●學會運用常用的關系運算解決實際問題●了解關系演算和查詢優化的基本方法和過程●掌握常量、變量、函數和表達式概念和用法重點重點同步實驗(上機)友情提示重點下列選項中,不屬于數據模型要素的是()。數據管理數據操作數據完整性約束數據結構ABCD提交單選題1分要點復習概念模型用于信息世界的建模,下列()不是概念模型。E-R模型和擴展E-R模型層次、網狀和關系模型各種語義數據模型面向對象模型ABCD提交單選題1分在數據庫技術中,()數據模型是使用公共屬性(外鍵)實現數據之間聯系的。層次網狀關系面向對象ABCD提交單選題1分下列關于外模式的敘述中,錯誤的是()。外模式處理的數據實際存儲在數據庫中外模式是保證數據安全性的一個有效措施一個數據庫可以有多個外模式外模式通常是模式的子集ABCD提交單選題1分在數據庫的三級模式結構中,外模式/模式之間映像的個數是()。只有1個與外模式的個數相同由系統參數確定可以有任意多個ABCD提交單選題1分2.1.1關系模型的基本概念
1.關系及關系模型常用概念1)關系。關系是一個二維表(簡稱為表),表示數據的邏輯結構,將現實世界中實體及其聯系歸結為簡單的二維關系,其中表中的行代表一條記錄(元組),每列代表一個屬性,一般形式定義為:R(D1,D2,...,Dn)表示D1╳D2╳...╳Dn的子集域D1,D2,...,Dn上的關系,其中R表示關系名,n是關系的列(或目)數。2.1關系模型概述關系模型的應用最廣泛。關系型數據庫系統主要是利用關系型數據庫管理系統RDBMS為核心,統一管理控制各種業務數據的處理與共享,關系型數據庫在實際業務中應用最廣泛最常用,極大地推動了經濟、商貿、金融、交通、運輸、物流、教育和辦公等各領域或行業各種大量業務數據的處理。案例2-12)元組、屬性。記錄和屬性。在關系模型中,二維表中的行稱為記錄(或元組)。二維表的列稱為屬性。每個屬性對應表中一個字段,屬性名即字段名,屬性值為其字段值。3)域。域(Domain)是一組具有相同數據類型值的集合。用于表示屬性的取值范圍,屬性A的域用DOM(A)表示,每個屬性對應一個域,不同屬性可以具有相同域。2.1關系模型概述
不同域示例。D1={百分制成績X,1≤X≤100}表示百分制成績的集合。D2={男,女}表示性別集合。D3={企業職工},表示企業18歲-60歲在職員工(特殊情況延遲退休等除外)的集合。案例2-24)關系模型。關系模型(RelationModel)是以關系(表結構)表示的模型,可用鍵(或稱主屬性)唯一標識記錄,鍵可以是單一屬性或屬性組。關系模型的組成包括關系數據結構、關系操作和關系完整性約束。5)元數和基數。元數指關系(數據表)中屬性(列)的個數。基數指元組的個數。表2-1的關系的元數和基數分別為6和5。2.1關系模型概述
高校學生數據表。高校學生數據表包含的主要信息為:學號、姓名、性別、專業、出生日期和家庭地址。表頭表示關系型,從第二行開始以下各行都是這個關系型的實例(記錄)。如表2-1所示。案例2-32.超鍵、候選鍵、主鍵和外鍵1)超鍵。是指在關系模式中,能唯一標識記錄(元組)的屬性組。如(學號,姓名)。2)候選鍵。是指沒有多余屬性的超鍵。如學號、工號、訂單號。3)主鍵。是指在關系中選取的候選鍵之一,主鍵不能為空值。如學生(學號,姓名,專業)的主鍵可以選“學號”,也可以選(學號,姓名)。4)外鍵。若在關系R中包含另一個關系S的主鍵所對應的屬性組K,則稱K為R的外鍵。如對于選課(學號,課程號,成績),其中“學號”就是“選課”關系的外鍵。
注意:外鍵是指另一個關系的主鍵。在多表調用數據時,需要多表之間借助主鍵和外鍵建立關聯,實現記錄之間一一對應(避免出錯)。2.1關系模型概述采用二維表格結構表達實體及實體間聯系的數據模型是()。層次模型網狀模型關系模型面向對象模型ABCD提交單選題1分在關系數據模型中,一個關系中的主鍵()。可以取NULL(空值)只能是單個屬性不能是其他關系的外鍵只能有一個ABCD提交單選題1分2.1.2關系的類型與性質關系有三種類型:基本關系(或稱基本表或表)、查詢表和視圖表。基本表是實際存在的(存儲)表。查詢表是查詢結果對應的表(常為部分數據)。視圖表是由表或其他視圖表導出的虛表,不對應實際存儲的數據。2.1關系模型概述關系(表)具有6條基本性質,包括:1)關系中屬性(列)是同質的,即每一列中的屬性值(數據項)是同一種類型,即要求同列同類同域。2)關系中屬性(列)是原子的,每個屬性(列)不可再分。3)任何兩行(記錄)不能完全相同。以免造成不一致或錯誤等問題,保證實體的唯一性和完整性。如客戶一次存款只能有一條記錄。4)任何兩列不能同名。不同的列可以來自同一域,即列值類型可以相同。5)關系中的行(記錄)不分先后順序,任意兩行記錄的次序可以交換。6)關系中屬性(列)不分先后順序,即屬性(列)的次序可以任意交換。2.1關系模型概述2.1關系模型概述
高校學生不規范數據表。高校學生數據表包括以下數據項:學號、姓名、性別、專業、出生日期(年、月、日)和家庭地址。表頭表示關系型,從第二行開始及以下各行都是一個關系型的實例。如表2-2所示。案例2-4此例中屬性“出生日期”再分為年、月、日三分部分(不是原子的),導致屬性“出生日期”不符合關系基本性質,是一種不規范關系,直接影響數據處理。根據關系規范化理論要求,關系數據庫中的關系必須滿足:其每一屬性都是()。互相關聯的長度可變的互不相關的不可再分解的ABCD提交單選題1分2.1.3關系模式的表示關系模式(Relationschema)是對關系結構和特征的描述,形式化表示為:R(U,D,DOM,F),其中R為關系名,U為組成該關系的屬性(列)名集合,D為屬性組U中屬性取值的域,DOM為屬性域的映像集合,F為屬性之間數據的依賴關系集合。關系模式可以簡記為R(U)或R(A1,A2,...,An),其中R為關系名,A1,A2,...,An為屬性名。如,學生關系的關系模式可表示為:學生(學號,姓名,性別,專業,出生日期,家庭地址)2.1關系模型概述2.1.3關系模式的表示關系模式主要描述兩方面的內容:1)關系模式指明關系(表)的結構(型),即構成的屬性(列)及其域(常為屬性的數據類型和長度等),以及屬性與域之間的映射(對應)關系。2)關系模式應確定屬性間的相互關聯關系和屬性本身的約束條件。對于屬性間的相互關聯關系表現為一個表的主鍵同外鍵對應。2.1關系模型概述關系數據庫是()的集合,其結構是由關系模式定義的。元組列字段表ABCD提交單選題1分2.1.4E-R圖與關系模型之間的轉換1.轉換規則E-R圖組成三要素包括實體、實體的屬性和實體間的聯系,而關系模型是用二維表表示現實世界中實體之間的聯系,即關系模式集合,所以將E-R圖轉換為關系模型(表),就是將E-R圖轉換成關系的過程。實體和聯系類型的轉換規則為:1)實體轉換關系規則。將每一個實體轉換成一個關系時,實體的屬性就是關系的屬性,實體的標識符就是關系的鍵,如案例2-1中學生的學號為關系的鍵。2)二元聯系類型的轉換規則。①若實體間聯系為一對一,則將兩個實體類型轉換成兩個關系模式的過程中,任選一個屬性(組)在其中加入另一個關系模式的鍵和聯系類型的屬性。②若實體間的聯系是一對多,則在多的一端實體的關系中,加上一的一端實體的鍵和聯系的屬性。③若實體間的聯系是多對多,則將聯系也轉換為關系,其屬性為兩端實體的鍵加上聯系的屬性,而鍵為兩端實體鍵的組合。2.1關系模型概述2.1.4E-R圖與關系模型之間的轉換2.轉換方法對于一對一(1:1)、一對多(1:n)和多對多(m:n)三種情況的兩個實體(事物)聯系轉換為關系(二維表)的方法,可以通過應用實例分別概述。(1)一對一聯系的轉換方法2.1關系模型概述
學生和身份證之間的關系為一對一關系。學生與身份證實體關系圖如圖2-1所示。在學生端加入身份證號做為聯系屬性在兩者之間建立一對一關系。學生(學號,身份證號,姓名,性別,專業,出生日期,家庭地址),其中學號為主鍵(PK),身份證號為外鍵(FK)關聯到關系身份證。身份證(身份證號,簽發機關,有效期始,有效期止),身份證號為主鍵。案例2-52.1.4E-R圖與關系模型之間的轉換(2)一對多聯系的轉換方法【方法一】:可以將聯系與多的一端實體所對應的關系合并,并加一端實體的主鍵和聯系的屬性,組成新的關系(表)的屬性(列)。【方法二】:可以將聯系轉換為一個獨立關系模式,其屬性包含聯系自身的屬性以及相連接的兩端實體的主鍵,組成新的關系(表)的屬性(列)。2.1關系模型概述2.1關系模型概述
商品訂單和訂單項之間的一對多關系。每一個商品訂單包含一個或多個訂單項,同時,一個或多個訂單項組成一個訂單。訂單和訂單項的關系定義如下。訂單和訂單項的E-R圖如圖2-2所示。訂單表(訂單ID,會員ID,是否付款,運送方式,運費,提交時間)。訂單項表(訂單項ID,訂單ID,商品ID,商品數量)。
案例2-62.1.4E-R圖與關系模型之間的轉換(3)多對多聯系的轉換方法對于實體之間是多對多的聯系情況,各個實體可以直接轉換為關系模式,聯系則獨立轉換一個關系模式,其屬性包括聯系自身的屬性和相連各實體的主鍵。2.1關系模型概述
2.1關系模型概述
高校學生選課聯系。一個學生可以選多門課程,一門課程可被多個學生選修,學生與課程是多對多聯系。學生和課程實體轉換為相應的獨立關系模式,同時選課聯系轉換一個單獨關系模式。其E-R圖如圖2-3所示。關系模式:學生(學號,身份證號,姓名,性別,專業,出生日期,家庭地址),學號為主鍵(PK)。課程(課程代碼,系部編號,學期,課程名稱,課程類型,學分),課程代碼為主鍵。學生選課(學號,課程代碼,成績),學號和課程代碼為組合主鍵,學號、課程代碼為外鍵。案例2-72.1關系模型概述
討論思考
1)什么是關系模式?其形式化表示是什么?2)關系(二維表)具有什么六條基本性質?3)由E-R圖向關系模型的轉換規則和方法?關系模型的完整性規則是指對關系的約束條件,是數據操作中應遵守的規則,保證其正確相容性。主要有三類完整性約束:實體完整性、參照完整性和用戶定義的完整性,前兩個稱為關系的不變性,是關系模型必須滿足的完整性約束條件,由系統自動實現。用戶定義的完整性是業務應用時實際遵循的規則。2.2關系模型的完整性2.2關系模型的完整性2.2.1關系模型的實體完整性實體完整性(EntityIntegrity)規則。如果屬性A(單一屬性(組))是基本關系R的主屬性,則屬性A不能取空值。由于主鍵是記錄的唯一標識(調用的指定位置),如果主屬性為空將導致記錄不可區分,這與實體的定義矛盾。如,學生數據表的“學號”不能為空,如果為空則標明學生不存在,后續的學生選課和學生選課成績就無法查找與數據處理。實體完整性要求保證每個關系(二維表)有且僅有一個主鍵,而且每個主鍵的值必須唯一切不能為空值或重復,以確保數據操作的正確完整可靠。2.2.2
參照完整性(ReferencialIntegrity)在實際應用中,關系模型中實體及其之間的聯系可用關系表示。如用戶查詢數據時經常需要通過主鍵和外鍵進行多表之間數據關聯或引用。參照完整性(ReferencialIntegrity)形式化的定義:如果F是關系R的一個或一組屬性,但不是R的鍵,K是關系S的主鍵。若F與主鍵K相對應,則稱F是關系R的外鍵。并稱關系R為參照關系,關系S為被參照關系或目標關系。參照完整性體現在兩方面:實現多表之間的關聯,外鍵的取值必須是另一表的主鍵的有效值或是空值(暫時未定)。2.2關系模型的完整性1)參照關系R和被參照關系(目標關系)不一定是不同關系.見案例2-9。2)外鍵名不一定要和補參照關系中相對應的主鍵同名,如案例2-9中的外鍵主管與主鍵職員編號就不同名。3)外鍵值是否允許為空,應視具體問題定。案例2-8中學生選課關系中學號和課程代碼不允許為空,如果為空則沒有實際意義,數據為無用數據。2.2關系模型的完整性
學生實體和專業實體之間的關系。高校學生實體和專業實體之間的聯系。學生(學號,身份證號,姓名,性別,專業編號,出生日期,家庭地址),其中學號為主鍵(PK)。專業(專業編號,專業名稱)其中專業編號為主鍵(PK)同時是“學生”關系的外鍵。案例2-8
注意
企業職員數據表。企業職員數據表。職員(職員編號,姓名,性別,民族,出生年月,所在部門,籍貫,政治面貌,家庭地址,聯系電話,主管)。職員關系中,“職員編號”為主鍵,主管屬性表示該員工主管的編號,它引用了本關系“職員編號”,因為主管也是職員中有一員,只是職位不同。所以職員關系中主管必須是“職員編號”(列/字段)中的某個值,或者為空值(表示尚未分配主管)。案例2-92.2.3用戶定義的完整性(User-definedIntegrity)用戶定義的完整性(User-definedIntegrity)是指對數據表中字段屬性的約束(實際要求),包括屬性的值域、類型、寬度和小數點位數等,是由確定關系結構時所定義字段屬性決定的。如,在客戶申請銀行卡時,銀行對身份證進行合法驗證,要求其字段長度為18位。域完整性(DomainIntegrity)指屬性(列)的值域的完整性。如數據類型、格式、值域范圍、是否允許空值等。是針對某一具體數據庫的約束條件,保證表中某些列不能輸入無效的值。域完整性限制了某些屬性中的值,將屬性限制在一個有限集合。如通常正式職工年齡在18-60之間。2.2關系模型的完整性
討論思考1)在關系模型中具體有哪幾類完整性約束?2)關系中為何滿足實體完整性和參照完整性?3)試舉例說明用戶定義的完整性應用案例。2.2關系模型的完整性設有關系SC(SNO,CNO,GRADE),主鍵是(SNO,CNO)。下列遵循實體完整性規則的是()。只有SNO不能取空值只有CNO不能取空值只有GRADE不能取空值SNO與CNO都不能去空值ABCD提交單選題1分下列對于關系的敘述中,不正確的是()。關系中的每個屬性是不可分解的在關系中的元組的順序是無關緊要的任意的一個二維表都是一個關系每一個關系僅有一種記錄類型ABCD提交單選題1分以下4題基于如下兩個關系表,其中雇員信息表EMP的主鍵是雇員號,并且工資金額不得小于1500元;部門信息表DEPT的主鍵是部門號。題1:如果向“EMP”表中插入下行數據(NULL,‘李靜’,‘03’,1200),則該操作違反了()。實體完整性規則參照完整性規則用戶定義完整性規則實體完整性規則和用戶定義完整性規則ABCD提交單選題1分題2:如果從“DEPT”表中刪除部門號=‘01’的數據行,則該操作違反了()。實體完整性規則參照完整性規則用戶定義完整性規則都違反ABCD提交單選題1分題3:下列操作不能正確執行(這里不考慮置空值和級聯操作)的是()。從EMP中刪除雇員號=‘010’的行在EMP中插入行(‘102’,‘趙敏’,‘01’,2000)將EMP中雇員號=‘056’的工資改為2600將EMP中雇員號=‘101’的部門號改為‘05’ABCD提交單選題1分題4:下列操作不能正確執行(這里不考慮置空值和級聯操作)的是()。從DEPT中刪除部門號=‘03’的行在DEPT中插入行(‘06’,‘計劃部’,‘李浩’)將DEPT中部門號=‘02’的部門號改為‘10’將DEPT中部門號=‘01’的負責人改為‘陳穎欣’ABCD提交單選題1分2.3.1關系運算符和運算種類1.關系運算的種類關系運算種類有兩種:傳統關系運算和專門關系運算。傳統關系運算將關系作為集合,并對“水平”方向行運算,專門關系運算涉及到行和列。(1)傳統關系運算主要使用傳統的集合運算方法,將關系(表)作為行(記錄)的集合,從關系的行方向進行(集合)運算,常用的是兩個關系的運算。傳統的集合運算可以實現的基本操作為:1)并運算。在數據庫中,用于實現對指定數據的插入和添加操作。2)差運算。在數據庫中,用于實現對指定數據記錄的刪除操作。3)差并結合。修改數據的操作,要先刪除(差)后插入(并)操作。(2)專門的關系運算專門關系運算是針對關系數據庫專門設計的,涉及到關系的行和列。利用比較和邏輯運算符可以實現輔助專門的關系運算符操作。有時還需要對關系本身運算,如果需要顯示表中某列的值,就需要利用關系的專門運算中的“投影”。2.3常用的關系運算2.3.1關系運算符和運算種類2.關系運算種類關系運算符有四種:集合運算符、專門關系運算符、(算術)比較運算符和邏輯運算符。具體的使用方法將在后面結合應用案例介紹。1)集合運算符:∪(并運算)、─(差運算)、∩(交運算)、╳(笛卡爾集)。2)專門的關系運算符:σ(選擇)、(投影),?(連接)、÷(除)。3)(算術)比較運算符:>(大于)、≥(大于等于)、<、≤、=、≠。4)邏輯運算符:﹁(非)、∧(與)、∨(并)。
2.3常用的關系運算2.3.2傳統的關系運算傳統的關系運算可以歸納為集合運算,即對兩個關系的集合運算,傳統的關系運算主要包括四種:并、差、交和廣義笛卡爾集。1.并運算設關系R和關系S具有相同的n目(屬性/列),且相應的屬性取自同一個域,則關系R和關系S的并(Union)由屬于R或屬S的記錄(元組)組成。其結果關系的目仍為n,記為R∪S。形式化定義為:R∪S={t|t∈R∨t∈S}其中,t表示關系R或S中的記錄,即關系R或S中的行。
注意:R∪S的結果集合是R中記錄和S中記錄合并一起構成的一個新關系,特別要指出的是合并后的結果必須要除去重復記錄。
2.3常用的關系運算
2.3.2傳統的關系運算
2.3常用的關系運算
已知關系R和關系S如表2-3和表2-4所示,計算機關系R和關系S的并集(R∪S)。案例2-10表2-5R∪S結果2.3.2傳統的關系運算2.差運算設關系R和關系S具有相同的n目(列/屬性),且相應的屬性取自同一個域,則關系R和關系S的差(Difference)由屬于R且不屬于S的記錄組成。其結果關系的目數仍為n,記為R-S。形式化定義為:R-S={t|t∈R∧tS}其中,t表示屬于R且不屬于(差掉)S的所有記錄。2.3常用的關系運算
已知關系R和關系S如表2-3和表2-4所示,求關系R和S的差R-S。其計算結果如表2-6所示。案例2-112.3.2傳統的關系運算3.交運算設關系R和關系S具有相同的n目(列/屬性),且相應的屬性取自同一個域,則關系R和關系S的交(Intersection)由屬于R且屬于S的記錄組成。其結果關系的屬性數仍為n,記為R∩S。形式化定義為:R∩S={t|t∈R∧t∈S}其中,t為同時屬于關系R和S中的所有記錄,即關系R且S中行的公共部分。2.3常用的關系運算
已知關系R和關系S如表2-3和表2-4所示,計算關系R且S中行的公共部分。R∩S的結果如表2-7所示。案例2-122.3.2傳統的關系運算4.廣義笛卡爾積設關系R和關系S的目(列/屬性)分別為r及s。關系R和S的廣義笛卡爾積(ExtendedCartesian)R╳S是一個(r+s)目的記錄集合(新關系有r+s列),每個記錄前r個分量(屬性值)來自關系R的一個記錄,后s個分量是關系S的一個記錄。關系R和關系S的笛卡爾積記為R╳S,其形式化定義為:R╳S={t|t=<tr,ts>∧trR∧tsS}說明:tr、ts中r,s為上標,分別表示r個分量和s個分量。若關系R的基數(行數)k1,關系S的基數為k2,則關系R和關系S的笛卡爾積的基數為k1╳k2。
2.3常用的關系運算2.3.2傳統的關系運算
2.3常用的關系運算
已知關系R和關系S如表2-4和表2-8所示,求關系R和S的廣義笛卡爾積,具體的結果如表2-9所示。案例2-13下列()關系運算不要求“R和S具有相同的屬性個數,且它們對應的屬性取自同一個域”。R∪SR∩SR-SR×SABCD提交單選題1分設關系R和S的元數分別是r和s,且R有m個元組,S有n個元組。執行T=R×S后,()。T的元數是(r×s),且有(m+n)個元組T的元數是(r×s),且有(m×n)個元組T的元數是(r+s),且有(m+n)個元組T的元數是(r+s),且有(m×n)個元組ABCD提交單選題1分設關系R和S具有相同的屬性個數,且相應的屬性取自同一個域,則{t|t∈R∨t∈S}定義的是()。R-SR∪SR∩SR-(R-S)ABCD提交單選題1分設關系R和S具有相同的屬性個數,且相應的屬性取自同一個域,則{t|t∈R∧t?S}定義的是()。R-SR∪SR∩SR×SABCD提交單選題1分2.3.3專門的關系運算專門的關系運算有四種:選擇運算、投影運算、連接運算和除運算。其中,選擇運算可以在多表中選取符合滿足條件的記錄并構成新關系(表),投影運算可選取記錄中指定的屬性(列)構成新關系,連接運算可選取符合條件的記錄串聯(連接)成新關系,除運算可選取像集符合條件的記錄的多個屬性(列)構成新關系。2.3常用的關系運算2.3.3專門的關系運算1.選擇運算選擇(Selection)運算也稱限制(Restriction)是對關系進行水平(行)分割(選取)。選擇是在表中選取符合指定條件的記錄,記為σF(R)。其中,σ為選擇運算符,F表示選擇條件,F通常是一個邏輯表達式,其取值為邏輯值“真”(成立)或“假”(不成立)。σF(R)表示從R中選取滿足條件F的記錄(行)所構成的新關系,形式化定義為:σF(R)={t|tR∧F(t)=true}邏輯表達式F的基本形式為:XθY,其中,θ表示比較運算,可以是>、≥、<、≤、=、≠。X和Y為屬性名或為常量或為簡單函數,屬性名可以用其的序號替代。在基本的選擇條件中可以進一步進行邏輯運算,包括非(﹁)、與(∧)、或(∨)運算。2.3常用的關系運算2.3.3專門的關系運算
2.3常用的關系運算
在商品信息表中,如表2-10所示,查詢出所有產地為“深圳”的商品信息。在“商品”數據表中,進行選擇運算σ產地=’深圳’或σ8=‘深圳’,其結果表2-11所示。案例2-14表2-10商品信息表表2-11產地為“深圳”選擇結果【案例2-15】查詢商品價格低于500元的商品信息。在“商品”數據表中,選擇運算σ價格<500或σ3<500,其結果如表2-12所示。案例2-15表2-12價格低于500選擇運算結果2.3.3專門的關系運算2.投影運算投影(Projection)運算是對關系(表)進行垂直分割,即對關系的列方向的篩選。投影運算是在一個關系中選取某些屬性或列,并重新排列其順序,再刪掉重復記錄后構成的新關系,是對二維表的垂直分割,記為,其中為投影運算符,A為關系R中的屬性列。投影運算的形式化定義為:2.3常用的關系運算2.3.3專門的關系運算
2.3常用的關系運算
已知商品信息表如2-10所示,查詢商品的產地信息。投影運算或的結果如表2-13所示。案例2-16
已知商品信息表如2-10所示,查詢商品的名稱和價格信息。投影運算或的結果如表2-14所示。案例2-172.3.3專門的關系運算3.連接(Join)運算
連接又稱θ連接。它是從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組。形式化定義如下:其中A和B分別為關系R和關系S上度數相同且可比的屬性組。θ為比較運算符。連接運算從R和S的笛卡爾積R╳S中選取R關系在A屬性組上的值與S關系在B屬性組上值滿足比較關系θ的元組。連接運算中有兩種最常用的連接,一種是等值連接(Equijoin),別一種是自然連接(NaturalJoin)。2.3常用的關系運算2.3.3專門的關系運算3.連接(Join)運算
1)等值連接,如果θ為“=”的連接運算稱為等值連接。等值連接從關系R和關系S與廣義笛卡爾積中選取A,B屬性相等的元組,即等值連接為:2)自然連接,是一種特殊的等值連接。它要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉。如果關系R和S具有相同的屬性組B,則自然連接可記為:注意:一般的連接操作是從行的角度進行運算。但自然連接還需要取消重復列,所以是同時從行和列的角度進行的運算。2.3常用的關系運算2.3.3專門的關系運算
2.3常用的關系運算
設有兩個關系R和關系S,分別如表2-15和表2-16)所示,,求、和。案例2-182.3.3專門的關系運算 自然連接與等值連接的主要區別包括:1)等值連接中相等的屬性可以是相同屬性,也可以不同屬性,而自然連接中相等的屬性必須是相同的屬性。2)自然連接結果必須去除重復屬性,而等值連接的結不需要去除重復屬性。3)自然連接用于有公共屬性的情況。若兩個關系沒有公共屬性,則它們不能進行自然連接,而等值連接無此要求。自然連接在多表數據調用時常用。2.3常用的關系運算2.3.3專門的關系運算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上投影的集合。記作:其中為x在R中的像集,。除運算通常是對關系的行和列角度進行操作。2.3常用的關系運算2.3.3專門的關系運算除運算的計算過程,可按如下進行:1)將被關系的屬性分為像集和結果屬性兩部分,與除關系相同的屬性歸于像集,不相同的屬性歸于結果集。2)在除關系中,在與被除關系相同的屬性(像集屬性)上投影,得到除目標數據集。3)將被除關系分組,將結果屬性值相同的元組分為一組。4)觀察每個組,若它的像集屬值中包括除目標數據集,則對應的結果屬性值應該屬于除法運算結果集,并去掉與原被除關系相同的分組。2.3常用的關系運算2.3.3專門的關系運算
2.3常用的關系運算
已知關系R(表2-20)和關系S(表2-21),求。案例2-192.3.3專門的關系運算具體除運算計算過程:1)關系R中屬性組A,B的取值為{(2,1),(2,2),(3,2)},其中,(2,1)的像集為{(a,c),(b,d)},(2,2)的像集為{(a,d)},(3,2)的像集為{(b,d),(b,c)}。2)關系S在屬性組(C,D)上的投影為{(a,c),(b,d)}3)找出全部屬性組A,B像集包含關系S屬性組C,D上的投影的取值,即為新關系R÷S,此處通過比較(1)和(2),可以發現只有元組(2,1)的像集包含關系S在屬性組C,D上的投影,所以R÷S只有一個元組(2,1),即R÷S運算結果如表2-22所示。除的基本運算可以表示為等價關表達式:
2.3常用的關系運算2.3.3專門的關系運算
2.3常用的關系運算案例2-202.3關系模型概述
討論思考1)交、并、差運算的兩個關系必須滿足什么條件?2)除運算的結果主要表示什么具體的含義?3)等值連接和自然連接之間的區別是什么?從兩個關系的笛卡爾乘積中,選取它們屬性間滿足某個條件的元組的操作稱為()。選擇差θ連接自然連接ABCD提交單選題1分在關系代數中有一種連接操作,要求執行該連接操作的兩個關系中進行比較的分量必須是相同的屬性或屬性組,并在結果中去掉重復的屬性。這種連接操作稱為()。半連接等值連接自然連接θ連接ABCD提交單選題1分設有關系R=(A,B,C),與SQL語句selectdistinctAfromRwhereB=17等價的關系代數表達式是()。πA,B(σB=17(R))σB=17(πA,B(R))πA(σB=17(R))σB=17(πA(R))ABCD提交單選題1分設有學生信息關系STUDENT(sno,sname,sex,age,dept)。“查找信息技術學院(IT)中年齡小于20歲的學生的姓名”,該操作正確的關系代數表達式是()。πsname(σdept=IT∧age<20(STUDENT))σdept=IT∧age<20(πsname
(STUDENT))σsname(πdept=IT∧age<20(STUDENT))以上都不對ABCD提交單選題1分關系演算與關系運算不同,是以數理邏輯中的謂詞演算為基礎的一種運算。與關系代數相比較,關系演算是非過程化的。關系演算只需描述結果的信息,而不需給現獲得信息的具體過程。按謂詞變元的不同,關系演算可分為記錄關系演算和域關系演算。記錄關系演算以記錄為變量,域關系演算以域為變量。*2.4關系演算與查詢優化*2.4.1關系演算概述1.記錄關系演算記錄關系演算(TupleRelationalCalculus)中,其形式化表達為:其中,為記錄變量,表示一個元數固定的記錄,是以記錄變量為基礎的公式。該表達式的含義是使為真的記錄的組合。關系演算由原子公式和運算符組成。*2.4關系演算與查詢優化*2.4.1關系演算概述原子公式有三類:
(1)R(t)。R是關系名,t是元組變量,R(t)表示t是關系R的一個元組。(2)。其中t和s是元組變量,θ是算術比較運算符(如>、<、=、≥等)。表示元組t的第i個分量與元組s的第j個分量滿足關系。例如t[3]≥s[5]表示t第3個分量大于等于s的第5個分量。
(3)或。其中C表示一個常量,t是元組變量,是算術比較運算符。表示t的第i個分量與常量C滿足關系。例如,t[2]>5表示t的第2個分量大于5。*2.4關系演算與查詢優化*2.4.1關系演算概述*2.4關系演算與查詢優化*2.4.1關系演算概述*2.4關系演算與查詢優化*2.4.1關系演算概述*2.4關系演算與查詢優化
案例2-212.4.1關系演算概述*2.4關系演算與查詢優化*2.4.1關系演算概述2.域關系演算:
*2.4關系演算與查詢優化
查詢性別為男的所有售貨員的編號和姓名。案例2-22*2.4.2查詢優化常用規則與算法1.關系代數等價變換規則常用的等價變換規則如下:
*2.4關系演算與查詢優化*2.4.2查詢優化常用規則與算法
*2.4關系演算與查詢優化*2.4.2查詢優化常用規則與算法
*2.4關系演算與查詢優化*2.4.2查詢優化常用規則與算法2.關系表達式的優化算法*2.4關系演算與查詢優化*2.4關系演算與查詢優化
討論思考1)什么是關系演算?在其公式中運算符優先級?2)記錄關系演算和域關系演算有何區別和聯系?3)進行查詢優化的具體主要原因是什么?4)試舉例說明關系表達式優化的過程。
2.5常量、變量、函數和表達式2.5.1標識符及使用規則標識符(Identifer)是指用于標識數據庫對象名稱的字符串,如,服務器、數據庫、表、視圖、索引和存儲過程等。用于對指定數據庫對象的操作,如查詢指定表的數據必須指定查詢表的表名,也有一些對象是可選的標識符,如創建約束時的標識符由系統默認生成。按照其用法標識符分為兩類:常規標識符和界定標識符。1.常規標識符常規標識符(Regularidentifer)又稱規則標識符,其命名規則為:1)標識符組成為字母、數字、下劃線、@符號、#和$符號,其中字母可以是大小寫英文字母或其他語言的字符,如表名:“商品信息A_1”。2)標識符的首字符不能是數字或“$”符號。3)標識符不允許使用SQL保留字,如,命令sp_help或函數名max、desc、asc等。4)標識符內不允許有空格或特殊字符,如?、%、&、*等。5)標識符的長度不能超過128個字符。
2.5.1標識符及使用規則
2.界定標識符界定標識符又稱分隔標識符,包括兩種:1)方括號或引號。對不符合標識符命名規則的標識符,如標識符中包含SQLServer關鍵字或內嵌的空格和其他不是規則規定的字符時,要用界定標識符[]或雙引號將其括起來。2)空格和保留字。如,在標識符[productname]和“insert”中,分別將界定標識符用于帶有空格和保留字insert的標識符中。2.5常量、變量、函數和表達式
標識符示例。規則標識符示例:_Product、Company、課程信息表、Customer_01、Product_Type_Name等;不規標識符示例:tblproduct、productName&123等;案例2-23說明:1)符合標識符格式的可用標識符分隔,也可不分隔。對于不符合格式規則的標識符必須進行分格。如,對于標識符productTypeName必須進行分隔,分隔后的標識符為[productTypeName]或“productTypeName”。2)使用分隔標識符的兩種情況:①對象名稱中包含SQLSever保留關鍵時需要使用界定標識符,如[select]。②對象名稱中使用了未列入限定字符的字符,如[prodoct[1]table]。3)引用標識符。默認情況下,只能使用括號分界定標符。如果使用引用標識符,需要將Quoted_Identifier標志設為ON。2.5常量、變量、函數和表達式
2.5.2常用的數據類型在SQLServer中,常用操作需要指定列、常量、變量、表達式和參數等對象的數據類型,指定對象的數據類型相當于定義該對象的特性為:1)對象所含的數據類型,如字符型、整數型、貨幣型。2)每列所存儲的數據項(字段)值的長度(寬度)或大小。3)數值精度、小數位數(僅用于數值數據類型)。SQLServer提供的系統數據類型如表2-23所示,詳見數據類型手冊。2.5常量、變量、函數和表達式
2.5.2數據類型2.5常量、變量、函數和表達式表2-23SQLServer系統數據類型
2.5.3常量和變量及其用法
1.常量的表示及用法常量是指在程序運行過程中其值保持不變的量。表示一個特定數據值的符號,也稱為文字值或標量值。其格式取決于其所表示的值的數據類型,具體數據類型如表2-23所示。根據不同的數據類型,常量可分為字符型常量、整型常量、日期常量、實型常量、貨幣常量和全局唯一標識符。(1)字符型常量字符型常量組成為字母、數字字符(a-z、A-Z及0-9)和特殊字符(如!、@和#等字符)。通常放在單引號內。如果字符型常量中包含單引號字符時,則需要使用兩個單引號表示,如,定義一個字符型常量I'mastudent,應寫成'I''mastudent'。字符型常量有兩種:ASCII和Unicode字符型常量。①ASCII字符型常量。是由ASCII字符構成的字符串,應放在單引號內,如‘abcd’。②Unicode字符型常量。在常量前面加一個N,如N'abcd'(其中N必須大寫,在SQL92標準中表示國際語言)。2.5常量、變量、函數和表達式
2.5.3常量和變量及其用法(2)整型常量整型常量通常表示整數。主要包括二進制整數、十進制整數和十六進制整數。如,二進制1100,十六進制0x4b等。(3)日期時間型常量日期時間型常量用于表示日期或時間,常用單引號將所表示的日期或時間括在其中。如,‘2019-08-09’、‘July-10-1998’、‘08/24/1998’或'2020年8月9日'等。(4)實型常量實型常量用于表示定點數或浮點數,如126.35、5E10。(5)貨幣常量以貨幣符號開頭,如¥600.45。SQLServer不強制分組,每隔3個數字由一個逗號分隔。(6)全局唯一標識全局唯一標識符(GloballyUniqueIdentificationNumbers,GUID)是一個128位二進制數組成(16字節),用于所有需要唯一標識的計算機和網址。2.5常量、變量、函數和表達式
2.5.3常量和變量及其用法2.變量的表示及用法變量是指在程序運行過程中其值可以發生變化的量,包括局部變量和全局變量兩種。(1)局部變量局部變量是由用戶定義,其作用域局限在一定范圍內的SQL對象。作用域:若局部變量在一個批處理、存儲過程、觸發器中被定義,則其作用域就是此批處理、存儲過程、觸發器。局部變量的聲明。局部變量的聲明語句格式為:DECLARE@變量名1[AS]數據類型,@變量名2[AS]數據類型,...,@變量名n[AS]數據類型
2.5常量、變量、函數和表達式
2.5.3常量和變量及其用法注意:①局部變量名必須以@開頭。②局部變量必須先定義,然后在SQL語句中使用,默認值為NULL。③數據類型要求:系統提供的類型、用戶定義的數據類型或別名數據類型。變量不能是text、ntext或image數據類型。局部變量的賦值。局部變量的賦值語句的語法為:格式一:set@變量名=表達式格式二:select@變量名=表達式或
select@變量名=輸出值from表where條件或select@變量名1=表達式1[,@變量名2=表達式2,...,@變量n=表達式n] 2.5常量、變量、函數和表達式
2.5.3常量和變量及其用法
useLibrary go declare@bookNamevarchar(64) select@bookName=書名 frombooks where館藏號='WC13201' select@bookNameas‘書名’執行結果:2.5常量、變量、函數和表達式
利用select命令為變量@bookName賦值,并通過此命令使變量輸出結果(實際的具體書名)。案例2-24
2.5.3常量和變量及其用法
useLibrary go declare@bookNamevarchar(64) select@bookName=書名 frombooks
select@bookNameas‘書名’執行結果:2.5常量、變量、函數和表達式
利用select命令查詢變量返回多個結果,并將最后一個結果值賦給變量。案例2-25
2.5.3常量和變量及其用法
useLibrary go declare@novarchar(18) set@no='WC13201' declare@bookNamevarchar(64) select@bookName=書名 frombooks where館藏號=@no select@bookNameas‘書名‘執行結果:2.5常量、變量、函數和表達式
利用Set和select語句給局部變量no賦值的實際用法,并利用select語句顯示變量bookName的結果。案例2-262.5.3常量和變量及其用法(2)全局變量全局變量是SQLSever系統定義并提供信息的變量。用于檢測服務器及系統的運行情況,用戶不能定義全局變量,也不能使用Set語句對全局變量進行賦值。定義全局變量的格式為:@@變量名SQLServer系統提供33個全局變量,方便用戶掌握SQLServer服務器運行情況。常用的全局變量如表2-24所示,更多可查閱SQLServer手冊。2.5常量、變量、函數和表達式
2.5常量、變量、函數和表達式表2-24常用系統全局變量2.5.4常用函數及其用法函數是指具有完成某種特定功能的程序,在SQL編程中也可理解為具有一定功能的SQL語句集合,其處理結果稱為返回值,處理過程稱為函數體。SQLServer提供了豐富的內置函數,且允許用戶自定義函數。利用這些函數可以方便地實現各種運算和操作,常用select查看函數的返回值(結果)。1.SQLServer常用函數用法SQLServer提供的常用內置函數分為14類。每種類型的內置函數都可以完成某種類型的操作,其內置函數的分類如表2-25所示。2.5常量、變量、函數和表達式2.5.4常用函數及其用法2.5常量、變量、函數和表達式表2-25SQLServer的內置函數種類和功能2.5.4常用函數及其用法(1)聚合函數及其用法聚合函數又稱為統計函數。所有聚合函數均為確定性函數,只要使用一組特定輸入值(數值型)調用聚合函數,該函數將返回同類型的值,其名稱和功能見表2-26。2.5常量、變量、函數和表達式表2-26常用聚合函數2.5.4常用函數及其用法
useLibrary go select* frombooks where單價=(selectmax(單價)frombooks)執行結果:2.5常量、變量、函數和表達式
查詢圖書表中價格最高的圖書。請看幾個上述表中常用的聚合函數的應用實例,注意其具體用法。案例2-27
2.5.4常用函數及其用法(2)數學函數。數學函數用于對數字表達式進行數學運算并返回計算結果。SQLServer提供了20多個用于處理整數與浮點值的數學函數。表2-27列舉了部分常用數學函數。2.5常量、變量、函數和表達式表2-27常用數學函數
2.5.4常用函數及其用法
(3)字符函數字符函數又稱為字符串函數,用于計算、格式化和處理字符串變量,或將對象轉換為字符串。與數學函數類似,為了方便用戶進行字符型數據的各種操作和運算,SQLServer提供了功能全面的字符串處理函數,表2-28對常用的字符串處理函數進行簡要介紹。2.5常量、變量、函數和表達式表2-28常用字符函數
2.5.4常用函數及其用法由于字符函數在實際編程中應用較為廣泛,下面就表2-28中的每個函數給出相應的示例,示例如表2-29所示。2.5常量、變量、函數和表達式表2-29常用字符函數應用示例
2.5.4常用函數及其用法(4)日期時間函數SQLServer提供了9個日期時間處理函數,如表2-30所示。在SQLServer提供的日期時間處理函數中,一些日期時間函數常量及其含義和格式與用法,如表2-31所示。2.5常量、變量、函數和表達式表2-31常用的日期時間格式表2-30常用日期時間函數
2.5.4常用函數及其用法
2.5常量、變量、函數和表達式
常用的日期時間函數實際應用格式和方法。請看幾個表中常用的日期時間函數的應用實例,注意其具體用法案例2-281)dateadd函數示例,該函數三個參數第一個參數是增加時間的類型,包括天、月、年等,第二個參數是增加數量,第三個參數為要增加的日期,返回值為增加日期數量后的時間。selectgetdate()as'當前日期'selectdateadd(day,1,getdate())as‘當前日期加1天’
selectdateadd(month,1,getdate())as'當前日期加1月'
selectdateadd(year,1,getdate())as‘當前日期加1年’
2.5.4常用函數及其用法2.5常量、變量、函數和表達式2)datediff函數declare@enddatetimedeclare@startdatetimeset@end=getdate()set@start=dateadd(year,-2,@end)select@startas'開始時間'select@endas'結束時間'selectdatediff(year,@start,@end)as‘結束時間與開始時間的差’3)DATENAME函數selectgetdate()as'當前日期’selectdatename(dw,getdate())as'當天星期幾’selectdatename(day,getdate())as'當月第幾天’selectdatename(month,getdate())as'當年第幾月’selectdatename(year,getdate())as'當前年'2.5.4常用函數及其用法*2.自定義函數SQLServer為了擴展和方便用戶,提供了自定義函數,返回值是一個臨時表或數值。自定義函數不支持輸出參數(可用存儲過程)。函數返回值形式不同可創建三類自定義函數。1)標量值自定義函數標量值自定義函數的返回值是一個確定類型的標量值,其返回值類型為除text、ntext、image、timestamp和table類型之外的任意類型,即標量值自定義函數返回的是一個數值。定義標量值自定義函數的語法結構為:CREATEFUNCTION函數名稱(@參數1類型1,[@參數2類型2,...,@參數n類型n])RETURNS返回值類型[WITHENCRYPTION][AS]BEGIN函數體語句序列RETURN返回值END
2.5常量、變量、函數和表達式2.5.4常用函數及其用法
createfunctiongetBorrowBookCount(@cardnochar(10))returnsintasbegin
declare@bookCountintset@bookCount=(selectcount(卡號)fromborrowingwhere卡號=@cardno)return@bookCountEnd創建函數后執行以下語句:useLibrarygoselectdbo.getBorrowBookCount('2008213124')as'借書數量'執行結果如是圖。2.5常量、變量、函數和表達式
在Libaray示例數據庫中創建函數根據讀者卡號,查詢該用戶的借書數。案例2-292.5.4常用函數及其用法2.5常量、變量、函數和表達式2)內聯表值自定義函數內聯表值自定義函數是以表形式返回一個值(表的數據)。內聯表值自定義函數沒有BEGIN...END語句中包含的函數體,而直接用RETURNS子句,其中包含SELECT語句將數據從數據庫中篩選形成表。使用內聯表值自定義函數可提供參數化的視圖功能。內聯表值自定義函數的語法結構為:CREATEFUNCTION函數名稱(@參數1類型1,[@參數2類型2,...,@參數n類型n])RETURNSTABLE[WITHENCRYPTION][AS]RETURN(查詢語句)
2.5.4常用函數及其用法
createfunctiongetBorrowBookList(@cardnochar(10))returnstableasreturn(select*fromborrowingwhere卡號=@cardno)執行語句:select*fromgetBorrowBookList('2008213124’)執行結果: 2.5常量、變量、函數和表達式
在Libaray示例數據庫中,創建函數根據讀者卡號,查詢該用戶所借的所有圖書。案例2-30
2.5.4常用函數及其用法
2.5常量、變量、函數和表達式3)多語句表值自定義函數多語句表值自定義函數可看作標量值和內聯表值型自定義函數的結合體。此類函數的返回值是一個表,但與標量值自定義函數一樣,有一個有BEGIN...END語句塊中包含的函數體,返回值的表中的數據是由函數體中的語名插入的。因此,其可以進行多次查詢,對數據進行多次篩選與合并,彌補了內聯表自定義函數的不足。
2.5.5常用運算符及其用法運算符是指具體的運算符號,用于算術運算、字符串連接、賦值或在字段、常量和變量之間的比較。主要有6大類運算符:算術運算符、賦值運算符、比較運算符、邏輯運算符、連接運算符和按位運算符。在表達式中連接常量、變量和函數,需注意連接過程優先級。1.運算符的種類1)算術運算符。可以在兩個表達式上執行數學運算,這兩個表達式可以是任何數值數據類型。SQLServer主要的算術運算符見表2-32。2)比較運算符。用于比較兩個同類表達式的大小,表達式可以是字符、數字或日期型數據,其比較結果是Boolean值。SQLServer主要比較運算符見表2-33。
2.5常量、變量、函數和表達式
2.5.5運算
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年會計記賬原理試題及答案
- 行政管理師證書考試大綱的詳細解讀試題及答案
- 2024年項目管理專業考試亮點試題及答案
- 項目決策中的定量與定性分析比較試題及答案
- 項目管理中的考核標準試題及答案
- 項目續簽與合同管理的試題及答案
- 走廊花壇改造方案范本
- 證券產品設計與投放考試試題及答案
- 2024年項目管理實踐應用試題及答案
- 2024年花藝流行趨勢考試題目及答案
- 《4.1 免疫系統的組成和功能》參考課件1
- 《油氣井增產技術》課件-63 拉鏈式壓裂井場布置
- 2025年廣東省東莞市中考數學模擬考試試卷及答案解析
- 醫療行業移動醫療設備租賃服務方案
- 事業單位工會管理制度
- 零星工程施工合同2024年
- 震后學校維修合同書
- 2023-2024學年廣東省深圳市七年級下冊期中語文質量檢測試卷(附答案)
- 物業工程競標方案
- 手術室不良事件警示教育
- 李白:《將進酒》經典省公開課一等獎全國示范課微課金獎課件
評論
0/150
提交評論