版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章數(shù)據(jù)查詢_李翠霞第6章數(shù)據(jù)查詢ppt課件(全)本章學(xué)習(xí)目標熟悉SELECT語句的語法格式掌握WHERE、ORDERBY、
GROUTBY、HAVING子句的使用方法掌握多表查詢的概念掌握內(nèi)連接、外連接的使用方法掌握相關(guān)和非相關(guān)子查詢的使用方法掌握組合查詢的使用方法第6章數(shù)據(jù)查詢ppt課件(全)本章主要內(nèi)容6.1SELECT語句概述6.2連接查詢6.3子查詢6.4聯(lián)合查詢第6章數(shù)據(jù)查詢ppt課件(全)6.1SELECT語句概述雖然SELECT語句的完整語法比較復(fù)雜,但其主要子句可歸納如下:SELECT<目標列名表>FROM<數(shù)據(jù)源表>[WHERE<查詢條件>][GROUPBY<分組列>][HAVING<組選擇條件>][ORDERBY<排序列>[ASC|DESC]]第6章數(shù)據(jù)查詢ppt課件(全)(1)SELECT<目標列名表>,稱為SELECT子句。用于指定整個查詢結(jié)果表中包含的列。假定已經(jīng)執(zhí)行完FROM、WHERE、GROUPBY、HAVING子句,從概念上來說得到了一個表,若將該表稱為T,從T表中選擇SELECT子句指定的目標列即為整個查詢的結(jié)果表。(2)FROM<數(shù)據(jù)源表>,稱為FROM子句。用于指定整個查詢語句用到的一個或多個基本表或視圖,是整個查詢語句的數(shù)據(jù)來源,通常稱為數(shù)據(jù)源表。(3)WHERE<查詢條件>,稱為WHERE子句。用于指定多個數(shù)據(jù)源表的連接條件和單個源表中行的篩選或選擇條件。如果只有一個源表,則沒有表間的連接條件,只有行的篩選條件。(4)GROUPBY<分組列>,稱為GROUPBY子句。假定已經(jīng)執(zhí)行完FROM、WHERE子句,則從概念上來說得到了一個表,若將該表稱為T1表,則GROUPBY用于指定T1表按哪些列(稱為分組列)進行分組,對每一個分組進行運算,產(chǎn)生一行。所有這些行組成一個表,不妨把它稱為T2表,T2表實際上是一個組表。(5)HAVING<組選擇條件>,稱為HAVING子句。與GROUPBY子句一起使用。用于指定組表T2表的選擇條件,即選擇T2表中滿足<組選擇條件>的行,組成一個表。(6)ORDERBY<排序列>,稱為ORDERBY子句。若有ORDERBY子句,則用于指定查詢結(jié)果表T中按指定列進行升序或降序排序(默認情況下按升序排列),得到整個查詢的結(jié)果表。6.1SELECT語句概述第6章數(shù)據(jù)查詢ppt課件(全)示例表圖6-1客房類型示例表圖6-2客房信息示例表第6章數(shù)據(jù)查詢ppt課件(全)示例表圖6-3客房業(yè)務(wù)示例表圖6-4客戶信息示例表圖6-5業(yè)務(wù)記錄示例表第6章數(shù)據(jù)查詢ppt課件(全)6.2基本查詢6.1.1簡單查詢6.1.2帶條件查詢6.1.3查詢結(jié)果處理6.1.4分組查詢第6章數(shù)據(jù)查詢ppt課件(全)6.2基本查詢—簡單查詢選擇表中部分列選擇表中所有列去除結(jié)果的重復(fù)信息—DISTINCT使用表達式的查詢使用列別名第6章數(shù)據(jù)查詢ppt課件(全)簡單查詢—選擇表中部分列在SELECT子句的<目標列名表>中指定整個查詢結(jié)果表中出現(xiàn)的若干個列名,各列名之間用逗號分隔。【例6-1】查詢?nèi)w客戶的身份證號和姓名。SELECT身份證號,姓名FROM客戶信息;圖6-6例6-1的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)簡單查詢—選擇表中所有列可以在<目標列名表>中指定表中所有列的列名,也可以用*來代替?!纠?-2】查詢?nèi)w客戶的身份證號,姓名和電話。SELECT身份證號,姓名,電話FROM客戶信息;或SELECT*FROM客戶信息;圖6-7例6-2的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)簡單查詢—去除結(jié)果中重復(fù)信息DISTINCT關(guān)鍵字可以幫助用戶去掉重復(fù)行,從而讓返回的結(jié)果更簡潔?!纠?-3】查詢所有客戶的姓名,并去掉重復(fù)行。SELECTDISTINCT姓名FROM客戶信息;圖6-8例6-3的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)簡單查詢—使用表達式的查詢表達式可以是列名、常量、函數(shù)、或用列名、常量、函數(shù)等經(jīng)過+(加)、-(減)、*(乘)、/(除)等組成的公式?!纠?-4】查詢所有客房類型的類型編號和名稱,并將價格上漲5%。SELECT
類型編號,名稱,價格*1.05
FROM客房類型;圖6-9例6-4的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)簡單查詢—使用列別名所謂別名,就是另一個名字。主要是為了方便閱讀。設(shè)置列別名的方法有:原列名
[AS]列別名
或者:列別名=原列名【例6-4】查詢【例6-5】查詢所有客房類型的類型編號和名稱,將價格上漲5%并顯示為“新價格”。SELECT類型編號,名稱,價格*1.05AS'新價格'FROM客房類型;或
SELECT類型編號,名稱,價格*1.05'新價格'FROM客房類型;或
SELECT類型編號,名稱,'新價格'=價格*1.05
FROM客房類型;圖6-10例6-5的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢<查詢條件>中常用的運算符:比較運算符和邏輯運算符。比較運算符用于比較兩個數(shù)值之間的大小是否相等。常用的比較運算符有:=(等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、!=或<>(不等于)、!>((不大于)、!<((不小于)共9種。邏輯運算符主要有:范圍比較運算符:BETWEEN…AND…,NOTBETWEEN…AND集合比較運算符:IN,NOTIN字符匹配運算符:LIKE,NOTLIKE空值比較運算符:ISNULL,ISNOTNULL條件連接運算符:AND,OR,NOT第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢使用比較表達式的查詢使用BETWEEN…AND的查詢使用IN的查詢使用LIKE的查詢基于NULL空值的查詢基于多個條件的查詢第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用比較表達式的查詢【例6-6】查詢所有價格大于300的客房類型編號,名稱,面積,床位和價格信息。SELECT類型編號,名稱,面積,床位,價格FROM客房類型WHERE價格>300;圖6-11例6-6的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用BETWEEN…AND的查詢說明:使用的基本形式為:列名
BETWEEN下限值A(chǔ)ND上限值等價于:列名>=下限值A(chǔ)ND列名<=上限值列名可以是表達式列的別名。BETWEEN…AND…一般用于數(shù)值型范圍的比較。表示當列值在指定的下限值和上限值范圍內(nèi)時,條件為TRUE,否則,為FALSE。NOTBETWEEN…AND…與BETWEEN…AND…正好相反,表示列值不在指定的下限值和上限值范圍內(nèi)時,條件為TRUE,否則為FALSE。注意:列名類型要與下限值或上限值的類型一致。第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用BETWEEN…AND的查詢【例6-7】查詢價格在400~500之間的客房類型編號,名稱,面積和床位信息。SELECT類型編號,名稱,面積,床位FROM客房類型WHERE價格
BETWEEN400AND500;等價于:SELECT類型編號,名稱,面積,床位FROM客房類型WHERE價格>=400AND價格<=500;圖6-12例6-7的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用BETWEEN…AND的查詢【例6-8】查詢價格不在400~500之間的客房類型編號,名稱,面積和床位信息。SELECT類型編號,名稱,面積,床位FROM客房類型
WHERE價格NOTBETWEEN400AND500;等價于:SELECT類型編號,名稱,面積,床位FROM客房類型
WHERE價格<400OR價格>500;圖6-13例6-8的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用IN的查詢IN條件表示格式為:列名IN(常量1,常量2,…常量n)當列值與IN中的任一常量值相等時,條件為TRUE,否則為FALSE。NOTIN與IN的含義正好相反,當列值與IN中的任一常量值都不相等時,結(jié)果為TRUE,否則為FALSE。【例6-9】查詢價格為160,260,560的客房類型編號和名稱。SELECT類型編號,名稱FROM客房類型WHERE價格IN
(160,260,560);
圖6-14例6-9的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用IN的查詢【例6-10】查詢價格不是160,260,560的客房類型編號和名稱。SELECT類型編號,名稱FROM客房類型WHERE價格
NOTIN
(160,260,560);圖6-15例6-10的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用LIKE的查詢LIKE運算符的一般形式為:列名
LIKE<模式串>通配符功能%(百分號)可匹配任意類型和長度的字符_(下劃線)可匹配任意單個字符,它常用來限制表達式的字符長度[](封閉方括號)表示方括號里列出的任意一個字符[^]任意一個沒有在方括號里列出的字符表6-1通配符及其功能第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用LIKE的查詢【例6-11】查找名字包含3個字符,且中間為‘毅’的客戶身份證號和姓名。SELECT身份證號,姓名FROM客戶信息
WHERE姓名LIKE‘_毅_’;圖6-16例6-12的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用LIKE的查詢【例6-11】查找名字包含3個字符,且中間為‘毅’的客戶身份證號和姓名。SELECT身份證號,姓名FROM客戶信息
WHERE姓名LIKE‘_毅_’;圖6-16例6-12的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用LIKE的查詢【例6-12】查找姓’王’的客戶身份證號和姓名。SELECT身份證號,姓名FROM客戶信息
WHERE姓名LIKE‘王%’;圖6-17例6-13的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用LIKE的查詢【例6-13】查找姓’王’,’張’或’李’的客戶身份證號和姓名。SELECT身份證號,姓名FROM客戶信息
WHERE姓名LIKE'[王張李]%';圖6-18例6-14的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用LIKE的查詢【例6-14】查找不姓’王’或’張的客戶身份證號和姓名。SELECT身份證號,姓名FROM客戶信息
WHERE姓名LIKE'[^王張李]%';圖6-19例6-15的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用NULL的查詢空值是尚未確定或不確定的值。判斷某列值是否為NULL值,不能使用比較運算符等于和不等于,而只能使用專門的判斷空值的子句,如下:判斷列值為空的語句格式為:列名ISNULL判斷列值不為空的語句格式為:列名ISNOTNULL【例6-15】查詢沒有登記面積的客房類型編號和名稱。SELECT類型編號,名稱FROM客房類型WHERE面積ISNULL;
第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—使用NULL的查詢【例6-16】查詢登記了面積的客房類型編號和名稱。SELECT類型編號,名稱FROM客房類型WHERE面積ISNOTNULL;
圖6-21例6-17的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—基于多個條件的查詢在WHERE子句中,可以使用多個搜索條件來選擇記錄,即通過邏輯運算符(NOT、AND或
OR)將多個單獨的搜索條件結(jié)合在一個WHERE子句中,形成一個復(fù)合的搜索條件。當對復(fù)合搜索條件求值時,DBMS首先對每個單獨的搜索條件求值,然后執(zhí)行布爾運算來決定整個WHERE
子句的值是TRUE還是FALSE。只有那些滿足整個WHERE子句的值是TRUE的記錄才出現(xiàn)在結(jié)果中。NOT運算符表示邏輯“非”關(guān)系。用于對搜索條件的邏輯值求反。AND運算符表示邏輯“與”關(guān)系。當使用AND運算符組合兩個邏輯表達式時,只有當兩個表達式均為TRUE時返回TRUE。OR運算符表示邏輯“或”關(guān)系。當使用OR運算符組合兩個邏表達式時,只要其中一個表達式的條件為TRUE,結(jié)果便返回TRUE。第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—基于多個條件的查詢【例6-17】查詢價格為160,260,560的客房類型編號和名稱。SELECT類型編號,名稱FROM客房類型
WHERE價格=160OR價格=260OR價格=560;圖6-22例6-18的查詢結(jié)果【例6-18】查詢價格既不是260也不是560的客房類型編號和名稱。SELECT類型編號,名稱FROM客房類型WHERE價格<>260AND價格<>560;
圖6-23例6-19的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—基于統(tǒng)計函數(shù)的查詢統(tǒng)計函數(shù)功能COUNT(*)求表中或組中記錄的個數(shù)COUNT(<列名>)求不是NULL的列值個數(shù)SUM(<列名>)求該列所有值的總和(必須是數(shù)值型列)AVG(<列名>)求該列所有值的平均值(必須是數(shù)值型列)MAX(<列名>)求該列所有值的最大值(必須是數(shù)值型列)MIN(<列名>)求該列所有值的最小值(必須是數(shù)值型列)表6-2常用統(tǒng)計函數(shù)第6章數(shù)據(jù)查詢ppt課件(全)帶條件查詢—基于統(tǒng)計函數(shù)的查詢【例6-19】求客戶的總?cè)藬?shù)。SELECTCOUNT(*)'總?cè)藬?shù)'FROM客戶信息;
圖6-24例6-20的查詢結(jié)果【例6-20】求客房的最高價格、最低價格和平均價格。圖6-25例6-21的查詢結(jié)果SELECTMAX(價格)'最高價格',MIN(價格)'最低價格',AVG(價格)'平均價格'FROM客房類型;第6章數(shù)據(jù)查詢ppt課件(全)6.1.3查詢結(jié)果處理為了方便用戶閱讀和使用,往往需要對查詢結(jié)果進行排序。在SQL語言中,可按要求進行排序的是ORDERBY子句。使用ORDERBY子句可以指定在SELECT語句返回的列中所使用的排序順序。ORDERBY排序子句的格式為:ORDERBY<列名>[ASC|DESC][,…n]其中<列名>指定排序的依據(jù),ASC表示按列值升序方式排序,DESC表示按列值降序方式排序。如果沒有指定排序方式,則默認的排序方式為升序排序。在ORDERBY子句中,可以指定多個用逗號分隔的列名。這些列出現(xiàn)的順序決定了查詢結(jié)果排序的順序。當指定多個列時,首先按最前面的列進行排序,如果排序后存在兩個或兩個以上列值相同的行,則對這些值相同的行再依據(jù)第二列進行排序,依此類推。第6章數(shù)據(jù)查詢ppt課件(全)6.1.3查詢結(jié)果處理【例
6-21】查詢不同種類的客房類型編號,名稱和價格,結(jié)果按價格降序排列。SELECT類型編號,名稱,價格
FROM客房類型
ORDERBY價格DESC;圖6-26例6-22的查詢結(jié)果【例
6-22】查詢不同種類的客房類型編號和名稱,結(jié)果按價格降序排列,價格相同的情況下按面積升序排列。圖6-27例6-23的查詢結(jié)果SELECT類型編號,名稱,價格,面積FROM客房類型ORDERBY價格DESC,面積ASC;
第6章數(shù)據(jù)查詢ppt課件(全)6.1.4分組查詢簡單的分組查詢GROUPBY子句在WHERE子句后邊。一般形式為: GROUPBY<分組列>[,…n]其中<分組列>是分組的依據(jù)。分組原則是<分組列>的列值相同,就為同一組。當有多個<分組列>時,則先按第一個列值分組,然后對每一組再按第二個列值進行分組,依此類推。
【例6-23】查詢同一客戶入住本酒店的次數(shù)。SELECT身份證號,COUNT(*)'次數(shù)'FROM業(yè)務(wù)記錄GROUPBY身份證號;
圖6-28例6-23的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)注意:GROUPBY子句中不支持對列分配的別名,也不支持任何使用了統(tǒng)計函數(shù)的集合列。另外,對SELECT后面每一列數(shù)據(jù)除了出現(xiàn)在統(tǒng)計函數(shù)中的列以外,都必須在GROUPBY子句中應(yīng)用。如果有以下的查詢語句出現(xiàn):SELECT身份證號,入住時間,COUNT(*)'次數(shù)'FROM業(yè)務(wù)記錄GROUPBY身份證號則系統(tǒng)會出現(xiàn)如圖6-29所示的錯誤,原因在于“入住時間”列既不包含在聚合函數(shù)中,也不包含在GROUPBY子句中。圖6-29GroupBY使用錯誤提示6.1.4分組查詢第6章數(shù)據(jù)查詢ppt課件(全)6.1.4分組查詢篩選分組查詢僅使用GROUP
BY子句分組時,會將所有的分組作為結(jié)果返回。如果只想搜索那些滿足某些條件的分組,需要對分組進行選擇。在SQL語言中,可以用HAVING子句對分組進行篩選。圖6-31例6-24的查詢結(jié)果【例6-24】查詢?nèi)胱”揪频甏螖?shù)大于等于兩次的客戶身份證號和入住次數(shù)。SELECT身份證號,COUNT(*)'入住次數(shù)'FROM業(yè)務(wù)記錄GROUPBY身份證號HAVINGCOUNT(*)>=2;
第6章數(shù)據(jù)查詢ppt課件(全)6.2連接查詢內(nèi)連接外連接交叉連接第6章數(shù)據(jù)查詢ppt課件(全)6.2連接查詢—內(nèi)連接內(nèi)連接是比較常用的一種數(shù)據(jù)連接查詢方式。它使用比較運算符進行多個基表間的數(shù)據(jù)的比較操作,并列出這些基表中與連接條件相匹配的所有的數(shù)據(jù)行。一般用INNERJOIN或JOIN關(guān)鍵字來指定內(nèi)連接,又可分為等值連接、非等值連接和自然連接3種。內(nèi)連接的語法格式為:SELECT<目標列名表>FROM表1INNERJOIN表2[ON連接條件][WHERE查詢條件][ORDERBY排序條件]第6章數(shù)據(jù)查詢ppt課件(全)6.2連接查詢—內(nèi)連接等值連接等值連接就是在連接條件中使用比較運算符等號(=)來比較連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,并且包括重復(fù)列。等值連接查詢有兩種表示方法。其中一種方法是用WHERE子句實現(xiàn)連接條件。連接條件的形式往往是“主鍵=外鍵”。即按一個表的主鍵值與另一個表的外鍵值相同的原則進行連接。常用的等值連接條件形式:<表名1>.<列名1>=<表名2>.<列名2>另一種方法是使用INNERJOIN表示的等值連接方法。以下將舉例說明不同的等值連接方法。第6章數(shù)據(jù)查詢ppt課件(全)6.2連接查詢—內(nèi)連接【例6-25】查詢當前入住本酒店的客戶信息及入住情況(用WHERE子句實現(xiàn))。SELECT客房業(yè)務(wù).*,客戶信息.*FROM客房業(yè)務(wù),客戶信息WHERE客房業(yè)務(wù).身份證號=客戶信息.身份證號;圖
6-32例6-25的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)6.2連接查詢—內(nèi)連接【例6-26】查詢當前入住本酒店的客戶信息和入住情況(用INNERJOIN的方式實現(xiàn))。SELECT客房業(yè)務(wù).*,客戶信息.*FROM客戶信息
INNERJOIN客房業(yè)務(wù)ON客戶信息.身份證號=客房業(yè)務(wù).身份證號;圖6-33例6-26的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)6.2連接查詢—內(nèi)連接非等值連接非等值連接查詢就是在連接條件中使用除了等號之外的比較運算符,來比較連接列的列值。在非等值連接中,可以使用的比較運算符有:>,<,>=,<=,<>,也可以使用范圍運算符BETWEEN?!纠?-27】查詢?nèi)胱∵^本酒店且單次消費金額大于200的客戶身份證號和姓名。SELECT業(yè)務(wù)記錄.*,客戶信息.*FROM客戶信息
INNERJOIN業(yè)務(wù)記錄ON客戶信息.身份證號=業(yè)務(wù)記錄.身份證號
AND金額>200;其結(jié)果如圖6-34所示。圖6-34例6-27的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)6.2連接查詢—內(nèi)連接自然連接自然連接查詢是在連接條件中使用比較運算符比較連接列的列值,但它使用選擇列表指出查詢結(jié)果集中所包含的列,并刪除連接表中的重復(fù)列。在使用自然連接查詢時,它為具有相同名稱的列自動進行記錄匹配。【例6-28】查詢當前入住本酒店的客戶信息和入住情況。SELECT客戶信息.身份證號,客戶信息.姓名,客房業(yè)務(wù).客房號,客房業(yè)務(wù).入住時間FROM客戶信息
INNERJOIN客房業(yè)務(wù)ON客戶信息.身份證號=客房業(yè)務(wù).身份證號;圖6-35例6-28的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)6.2連接查詢—外連接外連接可以分為左外連接、右外連接和完全連接3種類型。左外連接:返回所有的匹配行和JOIN左邊的表中不匹配的行;右外連接:返回所有的匹配行和JOIN右邊的表中不匹配的行;完全連接:返回兩個表中所有匹配的行和不匹配的行。外連接的語法結(jié)構(gòu)為:SELECT<目標列名表>FROM表1<LEFT|RIGHT|FULL>
[OUTER]JOIN表2[ON連接條件][WHERE查詢條件][ORDERBY排序條件]第6章數(shù)據(jù)查詢ppt課件(全)外連接—左外連接外連接可以分為左外連接、右外連接和完全連接3種類型。左外連接:返回所有的匹配行和JOIN左邊的表中不匹配的行;右外連接:返回所有的匹配行和JOIN右邊的表中不匹配的行;完全連接:返回兩個表中所有匹配的行和不匹配的行。外連接的語法結(jié)構(gòu)為:SELECT<目標列名表>FROM表1<LEFT|RIGHT|FULL>
[OUTER]JOIN表2[ON連接條件][WHERE查詢條件][ORDERBY排序條件]第6章數(shù)據(jù)查詢ppt課件(全)外連接—右外連接右外連接除了包含兩個表的匹配行外,還包括了FROM子句中JOIN關(guān)鍵字右邊表的不匹配行。右外連接的結(jié)果可以表示如下:右外連接=匹配行+左邊表中不匹配的行其中,缺少的左邊表中的列值用NULL表示?!纠?-30】查詢所有客房的基本信息,如果有客戶入住時顯示其身份證號。SELECT客房信息.*,客房業(yè)務(wù).身份證號FROM客房業(yè)務(wù)
RIGHTJOIN客房信息ON客房業(yè)務(wù).客房號=客房信息.客房號;第6章數(shù)據(jù)查詢ppt課件(全)外連接—完全連接完全連接的SELECT語句使用FULLOUTERJOIN關(guān)鍵字對兩個表進行連接。這種連接方式返回左表和右表中的所有行。當某行在一個表中沒有匹配的行時,則另一個表與之相對應(yīng)列的值為NULL。如果表之間有匹配的行,則整個結(jié)果集包含表的數(shù)據(jù)值。【例6-31】使用完全連接查詢客房信息和客房業(yè)務(wù)兩個表。SELECT客房信息.*,客房業(yè)務(wù).*FROM客房信息FULLOUTERJOIN客房業(yè)務(wù)ON客房業(yè)務(wù).客房號=客房信息.客房號;
第6章數(shù)據(jù)查詢ppt課件(全)6.2.3交叉連接當對兩個基表使用交叉連接時,將生成來自這連個基表的各行的所有可能的組合。即在結(jié)果集中,兩個基表中每兩個可能成對的行形成一行完成查詢。交叉連接的語法格式為:SELECT<目標列名表>FROM表1CROSSJOIN表2[WHERE查詢條件][ORDERBY排序條件]第6章數(shù)據(jù)查詢ppt課件(全)6.2.3交叉連接不使用WHERE子句當交叉連接查詢語句中沒有WHERE子句時,返回的結(jié)果集是被連接的兩個基表的所有行的笛卡爾積,即返回到結(jié)果集中的行數(shù)等于表1中符合條件的行數(shù)乘以表2中符合條件的行數(shù)?!纠?-32】使用交叉連接查詢客房信息和客房業(yè)務(wù)兩個表。
SELECT客房信息.*,客房業(yè)務(wù).*FROM客房信息
CROSSJOIN客房業(yè)務(wù);第6章數(shù)據(jù)查詢ppt課件(全)6.2.3交叉連接使用WHERE子句當交叉連接查詢語句中使用WHERE子句時,返回的結(jié)果集是從被連接的兩個基表的所有行的笛卡爾積中篩選滿足條件的記錄?!纠?-33】使用交叉連接查詢客房信息和客房業(yè)務(wù)兩個表中入住時間是’2010-02-13’的記錄。SELECT客房信息.*,客房業(yè)務(wù).*FROM客房信息
CROSSJOIN客房業(yè)務(wù)WHERE客房業(yè)務(wù).入住時間='2010-02-13';第6章數(shù)據(jù)查詢ppt課件(全)6.2.4自身連接如果在實際應(yīng)用中,需要將表與自身進行連接,此時應(yīng)為表定義別名。自身連接是一種特殊的內(nèi)連接,可以看作是同一個表的兩個副本之間進行的連接。為了給兩個副本命名,必須為每一個表副本設(shè)置不同的別名,使之在邏輯上成為兩張表。表設(shè)置別名的方式:<源表名>[AS]<表別名>以下通過例子來解析自身連接的使用及實現(xiàn)機理?!纠?-34】查詢和身份證號為“”的客戶住過同一客房的客戶的身份證號。SELECTS1.身份證號FROM業(yè)務(wù)記錄S1,業(yè)務(wù)記錄S2WHERES1.客房號=S2.客房號ANDS1.身份證號圖6-41例6-34的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)6.3子查詢子查詢指的是一個SELECT查詢語句,但它嵌套在SELECT、INSERT、UPDATE、DELETE語句或其他子查詢語句中。通常把外層的SELECT語句叫外查詢,內(nèi)層的SELECT語句叫內(nèi)查詢(或子查詢)。子查詢要用圓括號括起來,它可以出現(xiàn)在允許使用表達式的任何地方。子查詢可分為:非相關(guān)子查詢和相關(guān)子查詢。第6章數(shù)據(jù)查詢ppt課件(全)6.3子查詢子查詢指的是一個SELECT查詢語句,但它嵌套在SELECT、INSERT、UPDATE、DELETE語句或其他子查詢語句中。通常把外層的SELECT語句叫外查詢,內(nèi)層的SELECT語句叫內(nèi)查詢(或子查詢)。子查詢要用圓括號括起來,它可以出現(xiàn)在允許使用表達式的任何地方。子查詢可分為:非相關(guān)子查詢和相關(guān)子查詢。第6章數(shù)據(jù)查詢ppt課件(全)6.3子查詢6.2.1非相關(guān)子查詢非相關(guān)子查詢是指作為子查詢的查詢能夠獨立運行,并不依賴外部查詢的數(shù)據(jù)和結(jié)果。執(zhí)行過程是,先執(zhí)行子查詢,子查詢的結(jié)果并不顯示出來,而是作為外查詢的條件值,然后執(zhí)行外查詢。非相關(guān)子查詢的特點:子查詢只執(zhí)行一次,其查詢結(jié)果不依賴于外查詢。而外查詢的查詢條件依賴于子查詢的結(jié)果,因此,也可以說外查詢的查詢結(jié)果依賴于子查詢的結(jié)果。非相關(guān)子查詢的結(jié)果可以是一行或多行。返回一行的非相關(guān)子查詢通常用在比較運算符之后;返回多行的非相關(guān)子查詢通常用在比較運算符與ANY、ALL組成的運算符、IN、NOTIN之后。
第6章數(shù)據(jù)查詢ppt課件(全)6.3子查詢返回一行的非相關(guān)子查詢這樣的子查詢只返回一個值,然后將一列值與子查詢返回的值進行比較??梢允褂帽容^運算符(=,<>,>,>=,<,<=,!>,!<,!=)引入返回單行的非相關(guān)子查詢。凡是表達式可以出現(xiàn)的任何地方幾乎都可以使用子查詢,只是SQL對子查詢的結(jié)果施加了某些限制,即將子查詢用作比較運算符之后的表達式中,該子查詢必須返回單值?!纠?-35】在業(yè)務(wù)記錄表中查詢和身份證號為“的客戶同一天入住的客戶的身份證號。SELECT身份證號FROM業(yè)務(wù)記錄WHERE入住時間=(SELECT入住時間FROM業(yè)務(wù)記錄WHERE身份證號
圖6-42例6-35的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)6.3子查詢【例6-36】在業(yè)務(wù)記錄表中查詢和身份證號為“”的客戶不在同一天入住的客戶的身份證號。SELECT身份證號
FROM業(yè)務(wù)記錄
WHERE入住時間=(SELECT入住時間
FROM業(yè)務(wù)記錄
WHERE身份證號圖6-43例6-36的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)6.3子查詢返回多行的非相關(guān)子查詢?nèi)绻硬樵兎祷囟鄠€值,即一個集合,則外查詢條件中不能直接用9個比較運算符中的任意一個,因為某一行的一個列值不能與一個集合比較。必須在比較運算符之后加ANY或ALL關(guān)鍵字。使用格式為:〈列名〉〈比較符〉[ANY|ALL]〈子查詢〉
ANY的含義為:將一個列值與子查詢返回的一組值中的每一個比較。若在某次比較中結(jié)果為TRUE,則ANY測試返回TRUE,若每一次比較的結(jié)果均為FALSE,則ANY測試返回FALSE。ALL的含義為:將一個列值與子查詢返回的一組值中的每一個比較。若每一次比較中結(jié)果均為TRUE,則ALL測試返回TRUE,只要有一次比較的結(jié)果為FALSE,則ALL測試返回FALSE。第6章數(shù)據(jù)查詢ppt課件(全)6.3子查詢【例6-37】查詢比當前有客戶入住的房間面積都大的客房號。SELECT客房號FROM客房信息,客房類型WHERE客房信息.類型編號=客房類型.類型編號
AND客房類型.面積>ALL(SELECT面積
FROM客房類型,客房信息,客房業(yè)務(wù)
WHERE客房業(yè)務(wù).客房號=客房信息.客房號
AND客房信息.類型編號=客房類型.類型編號)圖6-44例6-37的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)6.3子查詢【例6-38】查詢比當前有客戶入住的某一房間面積大的客房號。SELECT客房號FROM客房信息,客房類型WHERE客房信息.類型編號=客房類型.類型編號
AND客房類型.面積>ANY(SELECT面積
FROM客房類型,客房信息,客房業(yè)務(wù)
WHERE客房業(yè)務(wù).客房號=客房信息.客房號
AND客房信息.類型編號=客房類型.類型編號)圖6-45例6-38的查詢結(jié)果第6章數(shù)據(jù)查詢ppt課件(全)6.3.2相關(guān)子查詢相關(guān)子查詢,即子查詢的執(zhí)行依賴于外查詢。相關(guān)子查詢執(zhí)行過程是先外查詢,后內(nèi)查詢,然后又外查詢,再內(nèi)查詢,如此反復(fù),直到外查詢處理完畢。使用EXSISTS或NOTEXSISTS關(guān)鍵字來表達相關(guān)子查詢。格式為:EXISTS<子查詢>EXISTS表示存在量詞,用來測試子查詢是否有結(jié)果,如果子查詢的結(jié)果集中非空(至少有一行),則EXISTS條件為TRUE,否則為FALSE。由于EXISTS的子查詢只測試子查詢的結(jié)果集是否為空,因此,在子查詢中指定列名是沒有意義的。所以在有EXISTS的子查詢中,其列名序列通常都用“*”表示。第6章數(shù)據(jù)查詢ppt課件(全)6.3.2相關(guān)子查詢【例6-39】查詢當前住在本酒店,電話號碼不是以“135”開頭的客戶信息。SELECT身份證號,姓名,電話FROM客戶信息WHEREEXIS
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度產(chǎn)學(xué)研合作新能源汽車技術(shù)研發(fā)合同4篇
- 2025年鄉(xiāng)村留守兒童教育援助合同書4篇
- 2025版風(fēng)電場并網(wǎng)供電協(xié)議合同模板3篇
- 端硯課程設(shè)計方案
- 2025年消防設(shè)施維保與消火栓定期巡檢合同3篇
- 頻率概率課程設(shè)計
- 陶瓷特種高鋁球課程設(shè)計
- 至誠matlab課程設(shè)計報告
- 2025年智能倉儲物流系統(tǒng)設(shè)計與集成合同4篇
- 2025年度醫(yī)療機構(gòu)患者病歷信息保密及知識產(chǎn)權(quán)保護協(xié)議3篇
- 《FANUC-Oi數(shù)控銑床加工中心編程技巧與實例》教學(xué)課件(全)
- 微信小程序運營方案課件
- 抖音品牌視覺識別手冊
- 陳皮水溶性總生物堿的升血壓作用量-效關(guān)系及藥動學(xué)研究
- 安全施工專項方案報審表
- 學(xué)習(xí)解讀2022年新制定的《市場主體登記管理條例實施細則》PPT匯報演示
- 好氧廢水系統(tǒng)調(diào)試、驗收、運行、維護手冊
- 中石化ERP系統(tǒng)操作手冊
- 五年級上冊口算+脫式計算+豎式計算+方程
- 氣體管道安全管理規(guī)程
- 《眼科學(xué)》題庫
評論
0/150
提交評論