數(shù)據(jù)庫演示文稿_第1頁
數(shù)據(jù)庫演示文稿_第2頁
數(shù)據(jù)庫演示文稿_第3頁
數(shù)據(jù)庫演示文稿_第4頁
數(shù)據(jù)庫演示文稿_第5頁
已閱讀5頁,還剩190頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)庫演示文稿當(dāng)前第1頁\共有195頁\編于星期五\0點優(yōu)選數(shù)據(jù)庫當(dāng)前第2頁\共有195頁\編于星期五\0點學(xué)習(xí)目標(biāo)數(shù)據(jù)庫系統(tǒng)作為數(shù)據(jù)存儲的倉庫,同時還需要擔(dān)當(dāng)起數(shù)據(jù)管理、維護(hù)的角色。當(dāng)前第3頁\共有195頁\編于星期五\0點學(xué)習(xí)目標(biāo)包括數(shù)據(jù)的入庫和出庫,前面學(xué)習(xí)了數(shù)據(jù)入庫時需要作的相應(yīng)工作,在本章中,將學(xué)習(xí)如何在數(shù)據(jù)庫中查找數(shù)據(jù)并將該部分?jǐn)?shù)據(jù)“出庫”,使這些數(shù)據(jù)以一定的格式和排列方法展現(xiàn)給用戶,并且掌握如何增加檢索數(shù)據(jù)易讀性的方法,比如排序在此基礎(chǔ)上,還將學(xué)習(xí)更加復(fù)雜的技巧——分組與匯總。當(dāng)前第4頁\共有195頁\編于星期五\0點學(xué)習(xí)目標(biāo)掌握這些的單表查詢技巧,將為應(yīng)用程序提供最強的數(shù)據(jù)層的支持,減少邏輯層的負(fù)擔(dān)。結(jié)合以前學(xué)習(xí)的主鍵和外鍵等基礎(chǔ)知識,通過本章學(xué)習(xí),將逐步掌握按照功能需求熟練檢索出符合要求的數(shù)據(jù)并將其按照指定格式展現(xiàn)給用戶或者應(yīng)用程序。當(dāng)前第5頁\共有195頁\編于星期五\0點本章要點簡單查詢語句查詢語句的統(tǒng)計功能數(shù)據(jù)的聯(lián)接子查詢當(dāng)前第6頁\共有195頁\編于星期五\0點簡單查詢語句在創(chuàng)建查詢時,需要輸入相應(yīng)的查詢語句?;镜腟ELECT語句選擇數(shù)據(jù)列使用TOP和DISTINCT使用列別名當(dāng)前第7頁\共有195頁\編于星期五\0點簡單查詢語句使用計算列使用WHERE子句使用ORDERBY子句當(dāng)前第8頁\共有195頁\編于星期五\0點基本的SELECT語句先看一個最簡單的查詢實例?!纠?-1】查詢Readers表中所有記錄的信息(光盤:\源文件\第4章\例4-1)。當(dāng)前第9頁\共有195頁\編于星期五\0點基本的SELECT語句USELibraryGOSELECT*FROMReadersGO在查詢分析器中輸入并運行上述代碼。當(dāng)前第10頁\共有195頁\編于星期五\0點最簡單的查詢語句當(dāng)前第11頁\共有195頁\編于星期五\0點基本的SELECT語句例4-1中的SELECT語句的作用就是查詢Readers表中的全部信息,其中*表示查詢表中的所有字段,此時,顯示結(jié)果集中的列的順序和創(chuàng)建表時的順序一致。當(dāng)然,要顯示指定的列,也可以將所有的列名在SELECT關(guān)鍵字后列出。當(dāng)前第12頁\共有195頁\編于星期五\0點選擇數(shù)據(jù)列如果要查詢表中的部分列,可以將要顯示的列名在SELECT關(guān)鍵字后依次列出,列名與列名之間用英文逗號隔開,列的順序可以根據(jù)需要指定。【例4-2】查詢Readers表中所有讀者的編號、姓名和登記日期(光盤:\源文件\第4章\例4-2)。當(dāng)前第13頁\共有195頁\編于星期五\0點選擇數(shù)據(jù)列USELibraryGOSELECT讀者編號,姓名,登記日期FROMReadersGO在查詢分析器中輸入并運行上述代碼。當(dāng)前第14頁\共有195頁\編于星期五\0點在表中選擇數(shù)據(jù)列查詢當(dāng)前第15頁\共有195頁\編于星期五\0點使用TOP和DISTINCT使用TOP子句使用DISTINCT子句當(dāng)前第16頁\共有195頁\編于星期五\0點使用TOP子句在查詢表中數(shù)據(jù)時,用戶可以根據(jù)需要限制返回的行數(shù)。方法是在SELECT語句的字段列表前面使用TOPn子句,則查詢結(jié)果中只顯示表中前n條記錄;如果在字段列表前使用TOPnPERCENT子句,則查詢結(jié)果中只顯示前n%條記錄。當(dāng)前第17頁\共有195頁\編于星期五\0點使用TOP子句【例4-3】查詢Readers表中的前5條記錄(光盤:\源文件\第4章\例4-3)。USELibraryGOSELECTTOP5*FROMReadersGO當(dāng)前第18頁\共有195頁\編于星期五\0點使用TOP子句在查詢分析器中輸入并運行上述代碼,執(zhí)行結(jié)果如下。當(dāng)前第19頁\共有195頁\編于星期五\0點使用DISTINCT子句對表只選擇部分列查詢時,可能會出現(xiàn)重復(fù)行。如果要消除結(jié)果集中的重復(fù)行,可以在字段列表前面加上DISTINCT關(guān)鍵字?!纠?-4】查詢Books表中所有的出版社(光盤:\源文件\第4章\例4-4)。當(dāng)前第20頁\共有195頁\編于星期五\0點使用DISTINCT子句USELibraryGOSELECT出版社FROMBooksGO上述代碼的執(zhí)行結(jié)果如下圖,可以看出結(jié)果集中有重復(fù)行。當(dāng)前第21頁\共有195頁\編于星期五\0點

沒有消除重復(fù)行的查詢當(dāng)前第22頁\共有195頁\編于星期五\0點使用DISTINCT子句下面的代碼就消除了重復(fù)行,執(zhí)行結(jié)果如下圖所示。USELibraryGOSELECTDISTINCT出版社FROMBooksGO當(dāng)前第23頁\共有195頁\編于星期五\0點消除重復(fù)行的查詢當(dāng)前第24頁\共有195頁\編于星期五\0點使用列別名默認(rèn)結(jié)果集中顯示的列標(biāo)題就是在創(chuàng)建表時使用的列名。但是,有時也可以給列標(biāo)題指定別名,以增加結(jié)果集的可讀性。為結(jié)果集的列標(biāo)題指定別名,可以使用以下兩種格式。當(dāng)前第25頁\共有195頁\編于星期五\0點使用列別名SELECT列別名=原列名FROM數(shù)據(jù)源SELECT原列名AS列別名FROM數(shù)據(jù)源當(dāng)前第26頁\共有195頁\編于星期五\0點使用列別名【例4-5】查詢BookCateGory表中所有記錄的類編號和類名稱。其中“類編號”列標(biāo)題指定別名為“圖書種類編號”,“類名稱”列標(biāo)題指定別名為“圖書種類名稱”(光盤:\源文件\第4章\例4-5)。當(dāng)前第27頁\共有195頁\編于星期五\0點使用列別名USELibraryGOSELECT類編號AS圖書種類編號,類名稱AS圖書種類名稱FROMBookCateGOryGO在查詢分析器中輸入并運行上述代碼。當(dāng)前第28頁\共有195頁\編于星期五\0點使用列別名當(dāng)前第29頁\共有195頁\編于星期五\0點使用計算列使用SELECT語句對列進(jìn)行查詢時,在結(jié)果中可以輸出對列值計算后的值,即結(jié)果集中的列不是表中現(xiàn)成的列,而是由表中的一個或多個列計算出來的。【例4-6】查詢Books表中每本書的書名和打過8折以后的價格(光盤:\源文件\第4章\例4-6)。當(dāng)前第30頁\共有195頁\編于星期五\0點使用計算列USELibraryGOSELECT圖書名,價格*0.8AS折后價格FROMBooksGO當(dāng)前第31頁\共有195頁\編于星期五\0點使用計算列因為結(jié)果集中由計算得到的列是沒有列名的,所以本例中為其指定列名為“折后價格”,以增加結(jié)果集的可讀性。在查詢分析器中輸入并運行上述代碼。當(dāng)前第32頁\共有195頁\編于星期五\0點使用計算列當(dāng)前第33頁\共有195頁\編于星期五\0點使用WHERE子句如果只希望得到表中滿足特定條件的一些記錄,用戶可以在查詢語句中使用WHERE子句。在WHERE子句中,組成條件表達(dá)式的運算符有6種。當(dāng)前第34頁\共有195頁\編于星期五\0點WHERE子句中的運算符運算符分類運算符意義比較運算符>、>=、=、<、<=、<>、!=、!>、!<比較大小范圍運算符BETWEEN…AND判斷列值是否在指定范圍內(nèi)NOTBETWEEN…AND列表運算符IN判斷列值是否為列表中的指定值NOTIN當(dāng)前第35頁\共有195頁\編于星期五\0點WHERE子句中的運算符運算符分類運算符意義模式匹配符LIKE判斷列值是否與指定的字符通配格式相符NOTLIKE空值運算符ISNULL判斷列值是否為空NOTISNULL邏輯運算符AND用于多條件的邏輯連接ORNOT當(dāng)前第36頁\共有195頁\編于星期五\0點使用WHERE子句下面舉例說明WHERE子句中運算符的使用方法。比較運算符范圍運算符當(dāng)前第37頁\共有195頁\編于星期五\0點使用WHERE子句列表運算符模式匹配運算符空值運算符邏輯運算符當(dāng)前第38頁\共有195頁\編于星期五\0點比較運算符比較運算符用來比較兩個表達(dá)式的大小,它包括:>、>=、=、<、<=、<>、!=、!>和!<,其中“<>”或“!=”表示不等于,“!>”表示不大于,“!<”表示不小于。當(dāng)前第39頁\共有195頁\編于星期五\0點比較運算符【例4-7】查詢Books表中價格大于等于20元的圖書的編號、圖書名、作者以及價格(光盤:\源文件\第4章\例4-7)。當(dāng)前第40頁\共有195頁\編于星期五\0點USELibraryGOSELECT圖書編號,圖書名,作者,價格FROMBooksWHERE價格>=20GO當(dāng)前第41頁\共有195頁\編于星期五\0點比較運算符在查詢分析器中輸入并運行上述代碼,執(zhí)行結(jié)果如下圖。當(dāng)前第42頁\共有195頁\編于星期五\0點范圍運算符范圍運算符用來判斷列值否在指定的范圍內(nèi)。范圍運算符包括BETWEEN…AND和NOTBETWEEN…AND。該運算符的語法格式如下:列表達(dá)式[NOT]BETWEEN起始值A(chǔ)ND終止值當(dāng)前第43頁\共有195頁\編于星期五\0點范圍運算符如果列表達(dá)式的值在起始值和終止值之間,則運算結(jié)果為TRUE,否則為FALSE。使用NOT時,運算結(jié)果剛好相反。當(dāng)前第44頁\共有195頁\編于星期五\0點范圍運算符【例4-8】查詢Books表中在2005年期間上架的圖書的編號、圖書名、作者及上架時間(光盤:\源文件\第4章\例4-8)。當(dāng)前第45頁\共有195頁\編于星期五\0點指定查詢范圍當(dāng)前第46頁\共有195頁\編于星期五\0點列表運算符列表運算符用來判斷給定的列值是否在所給定的子列表中。列表運算符包括IN和NOTIN。該運算符的語法格式如下:列表達(dá)式[NOT]IN(列值1,…列值n)當(dāng)前第47頁\共有195頁\編于星期五\0點列表運算符如果列表達(dá)式的值等于子列表中的某個值,則運算結(jié)果為TRUE,否則運算結(jié)果為FALSE。使用NOT時,運算結(jié)果剛好相反?!纠?-9】查詢Books表中飛天、新宇兩個出版社的圖書的編號、圖書名及出版社(光盤:\源文件\第4章\例4-9)。當(dāng)前第48頁\共有195頁\編于星期五\0點使用IN確定查詢值當(dāng)前第49頁\共有195頁\編于星期五\0點模式匹配運算符在實際應(yīng)用中,經(jīng)常需要根據(jù)一些不確定的信息來進(jìn)行模糊查詢。模式匹配運算符LIKE和NOTLIKE可以實現(xiàn)這類查詢,其中LIKE表示字符串表達(dá)式的值與匹配串相符,NOTLIKE則相反。其一般語法格式如下:字符串表達(dá)式[NOT]LIKE'<匹配串>'當(dāng)前第50頁\共有195頁\編于星期五\0點模式匹配運算符其中匹配串可以是一個完整的字符串,也可以是含有通配符的字符串。當(dāng)前第51頁\共有195頁\編于星期五\0點通配符說明通配符說明%代表0個或多個字符_(下劃線)代表單個字符[]指定范圍(如[a-f]、[0-9])或集合(如[abcdef])中的任何單個字符[^]指定不屬于范圍(如[^a-f]、[^0-9])或集合(如[^abcdef])中的任何單個字符當(dāng)前第52頁\共有195頁\編于星期五\0點模式匹配運算符【例4-10】查詢Readers表中姓“張”的讀者的信息(光盤:\源文件\第4章\例4-10)。通配符字符串'張%'的含義是第一個漢字是“張”的字符串。當(dāng)前第53頁\共有195頁\編于星期五\0點模糊查詢當(dāng)前第54頁\共有195頁\編于星期五\0點空值運算符數(shù)據(jù)庫中的數(shù)據(jù)一般都應(yīng)該是有意義的,但有些列的值可能暫時不知道或不確定,這時可以不輸入該列的值,那么稱該列的值為空值,通常用NULL表示??罩蹬c0或空格是不一樣的??罩颠\算符ISNULL和NOTISNULL用來判斷指定的列值是否為空。當(dāng)前第55頁\共有195頁\編于星期五\0點空值運算符其語法格式如下:列表達(dá)式[NOT]ISNULL【例4-11】查詢Readers表中住址為空的讀者的編號、姓名、性別和住址(光盤:\源文件\第4章\例4-11)。在查詢分析器中輸入并運行上述代碼。當(dāng)前第56頁\共有195頁\編于星期五\0點查詢空值當(dāng)前第57頁\共有195頁\編于星期五\0點邏輯運算符用戶可以使用邏輯運算符AND、OR和NOT連接多個查詢條件,實現(xiàn)多重條件查詢。邏輯運算符語法格式如下:[NOT]邏輯表達(dá)式AND|OR[NOT]邏輯表達(dá)式當(dāng)前第58頁\共有195頁\編于星期五\0點邏輯運算符【例4-12】要求用邏輯運算符實現(xiàn)例4-8中的查詢(光盤:\源文件\第4章\例4-12)。當(dāng)前第59頁\共有195頁\編于星期五\0點邏輯運算符USELibraryGOSELECT圖書編號,圖書名,作者,上架時間FROMBooksWHERE上架時間>='2005-01-01'AND上架時間<='2005-12-31'GO當(dāng)前第60頁\共有195頁\編于星期五\0點邏輯運算符上述代碼的執(zhí)行結(jié)果和例4-8相同。當(dāng)前第61頁\共有195頁\編于星期五\0點邏輯運算符【例4-13】要求用邏輯運算符實現(xiàn)例4-9中的查詢(光盤:\源文件\第4章\例4-13)。USELibraryGOSELECT圖書編號,圖書名,出版社當(dāng)前第62頁\共有195頁\編于星期五\0點邏輯運算符FROMBooksWHERE出版社='飛天'OR出版社='新宇'GO上述代碼的執(zhí)行結(jié)果和例4-9相同。當(dāng)前第63頁\共有195頁\編于星期五\0點使用IN確定查詢值當(dāng)前第64頁\共有195頁\編于星期五\0點使用ORDERBY子句通常查詢結(jié)果集中的記錄的順序是它們在表中的順序,但有時用戶希望查詢結(jié)果集中的記錄按某種順序顯示??梢酝ㄟ^ORDEYBY子句改變查詢結(jié)果集中記錄的顯示順序。ORDERBY子句的語法格式為:ORDERBY{列名[ASC|DESC]}[,…n]當(dāng)前第65頁\共有195頁\編于星期五\0點使用ORDERBY子句其中ASC表示按升序排列,DESC按降序排列,默認(rèn)為ASC。當(dāng)按多列排序時,先按寫在前面的列排序,當(dāng)前面的列值相同時,再按后面的列排序。當(dāng)前第66頁\共有195頁\編于星期五\0點使用ORDERBY子句【例4-14】查詢Books表中“新宇”出版社圖書的編號、圖書名、出版社、類編號及上架時間。查詢結(jié)果先按類編號降序排列,類編號相同的書再按上架時間升序排列(光盤:\源文件\第4章\例4-14)。當(dāng)前第67頁\共有195頁\編于星期五\0點將查詢結(jié)果排序當(dāng)前第68頁\共有195頁\編于星期五\0點查詢語句的統(tǒng)計功能用戶經(jīng)常需要對查詢結(jié)果集進(jìn)行統(tǒng)計,例如求和、平均值、最大值、最小值和個數(shù)等,這些統(tǒng)計可以通過以下3種方法實現(xiàn)。使用聚合函數(shù)。使用GROUPBY子句。使用COMPUTE子句。當(dāng)前第69頁\共有195頁\編于星期五\0點查詢語句的統(tǒng)計功能使用聚合函數(shù)使用GROUPBY子句使用COMPUTE子句當(dāng)前第70頁\共有195頁\編于星期五\0點使用聚合函數(shù)聚合函數(shù)用來對查詢結(jié)果集中的記錄進(jìn)行統(tǒng)計計算,并在結(jié)果集中將統(tǒng)計結(jié)果生成一條新記錄。SQLServer2000提供了許多聚合函數(shù)。當(dāng)前第71頁\共有195頁\編于星期五\0點常用集合函數(shù)表函數(shù)名語法格式功能說明AVGAVG([ALL|DISTINCT]列名)計算一個數(shù)值列的平均值SUMSUM([ALL|DISTINCT]列名)計算一個數(shù)值列的總和MAXMAX([ALL|DISTINCT]列名)返回指定列中的最大值MINMIN([ALL|DISTINCT]列名)返回指定列中的最小值COUNTCOUNT([ALL|DISTINCT]列名|*)統(tǒng)計查詢結(jié)果集中記錄的個數(shù)當(dāng)前第72頁\共有195頁\編于星期五\0點使用聚合函數(shù)表4-3語法格式中的DISTINCT表示去掉指定列中的重復(fù)值,ALL表示不取消重復(fù)值,默認(rèn)是ALL?!纠?-15】計算Books表中所有圖書的平均價格、總價、最高價、最低價及記錄的個數(shù)(光盤:\源文件\第4章\例4-15)。當(dāng)前第73頁\共有195頁\編于星期五\0點聚合函數(shù)的使用當(dāng)前第74頁\共有195頁\編于星期五\0點使用GROUPBY子句GROUPBY子句用于對結(jié)果集進(jìn)行分組并對每一組數(shù)據(jù)進(jìn)行匯總計算。其語法格式為:GROUPBY列名[HAVING條件表達(dá)式]當(dāng)前第75頁\共有195頁\編于星期五\0點使用GROUPBY子句GROUPBY按“列名”指定的列進(jìn)行分組,將該列列值相同的記錄組成一組,對每一組進(jìn)行匯總計算。每一組生成一條記錄。若有“HAVING條件表達(dá)式”選項,則表示對生成的組進(jìn)行篩選。當(dāng)前第76頁\共有195頁\編于星期五\0點使用GROUPBY子句【例4-16】統(tǒng)計Books表中各個出版社的圖書數(shù)量(光盤:\源文件\第4章\例4-16)。在查詢分析器中輸入并運行上述代碼。當(dāng)前第77頁\共有195頁\編于星期五\0點分組統(tǒng)計當(dāng)前第78頁\共有195頁\編于星期五\0點使用GROUPBY子句【例4-17】對例4-16中的代碼改為以下代碼,則只顯示圖書數(shù)量大于10的匯總行(光盤:\源文件\第4章\例4-17)。在查詢分析器中輸入并運行上述代碼。當(dāng)前第79頁\共有195頁\編于星期五\0點對分組統(tǒng)計進(jìn)行篩選當(dāng)前第80頁\共有195頁\編于星期五\0點使用COMPUTE子句COMPUTE子句對查詢結(jié)果集進(jìn)行匯總統(tǒng)計,并顯示參加匯總記錄的詳細(xì)信息。其語法格式為:COMPUTE聚合函數(shù)[BY列名]當(dāng)前第81頁\共有195頁\編于星期五\0點使用COMPUTE子句COMPUTEBY子句與GROUPBY子句的功能類似,都可以對查詢結(jié)果集進(jìn)行分組統(tǒng)計,不同的是,COMPUTEBY子句不僅顯示匯總數(shù)據(jù),還分組顯示參加匯總的記錄的詳細(xì)信息,而GROUPBY子句僅顯示匯總數(shù)據(jù)。當(dāng)前第82頁\共有195頁\編于星期五\0點使用COMPUTE子句【例4-18】統(tǒng)計Books表中各出版社的圖書數(shù)量,并顯示參加匯總的記錄的詳細(xì)信息(光盤:\源文件\第4章\例4-18)。在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖。由于記錄個數(shù)較多,所以該圖只顯示出部分出版社的統(tǒng)計信息。當(dāng)前第83頁\共有195頁\編于星期五\0點使用COMPUTE子句當(dāng)前第84頁\共有195頁\編于星期五\0點使用COMPUTE子句從上圖可以看出,COMPUTE子句產(chǎn)生附加的匯總行,其列標(biāo)題是系統(tǒng)自定的,如對于COUNT函數(shù)為cnt,對于AVG函數(shù)為avg,對于SUM函數(shù)為sum。當(dāng)前第85頁\共有195頁\編于星期五\0點數(shù)據(jù)的連接前面講的查詢都是針對一個表進(jìn)行的,而在實際應(yīng)用中,一個查詢往往需要從多個表中檢索數(shù)據(jù),這就需要使用聯(lián)接查詢。聯(lián)接分為交叉聯(lián)接、內(nèi)聯(lián)接、外聯(lián)接和自聯(lián)接4種。下面分別進(jìn)行介紹。當(dāng)前第86頁\共有195頁\編于星期五\0點數(shù)據(jù)的連接交叉聯(lián)接內(nèi)聯(lián)接外聯(lián)接自聯(lián)接合并結(jié)果集當(dāng)前第87頁\共有195頁\編于星期五\0點

交叉聯(lián)接交叉聯(lián)接又稱非限制聯(lián)接(廣義笛卡爾積),它將兩個表不加任何約束地組合在一起,也就是將第一個表的所有記錄分別與第二個表的每條記錄拼接組成新記錄,聯(lián)接后結(jié)果集的行數(shù)就是兩個表的行的乘積,結(jié)果集的列數(shù)就是兩個表的列數(shù)之和。當(dāng)前第88頁\共有195頁\編于星期五\0點

交叉聯(lián)接交叉聯(lián)接有以下兩種語法格式。SELECT列名列表FROM表名1CROSSJOIN表名2SELECT列名列表FROM表名l,表名2當(dāng)前第89頁\共有195頁\編于星期五\0點交叉聯(lián)接【例4-19】假設(shè)數(shù)據(jù)庫Library中又創(chuàng)建了tl和t2兩個表,如圖4-18所示。tl表中有“讀者編號”和“姓名”兩字段,t2表中有“讀者編號”和“已借冊數(shù)”兩字段,兩表各包含3條記錄。用交叉連接方法聯(lián)接兩表,觀察聯(lián)接后的結(jié)果。(光盤:\源文件\第4章\例4-19)當(dāng)前第90頁\共有195頁\編于星期五\0點t1表和t2表當(dāng)前第91頁\共有195頁\編于星期五\0點交叉聯(lián)接USELibraryGOSELECT*FROMt1CROSSJOINt2GO在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖。當(dāng)前第92頁\共有195頁\編于星期五\0點交叉聯(lián)接當(dāng)前第93頁\共有195頁\編于星期五\0點交叉聯(lián)接在實際應(yīng)用中,使用交叉聯(lián)接產(chǎn)生的結(jié)果集一般沒有什么意義,但在數(shù)據(jù)庫的數(shù)學(xué)模式上有重要的作用。當(dāng)前第94頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接內(nèi)聯(lián)接是將兩個表中滿足聯(lián)接條件的記錄組合在一起。聯(lián)接條件的一般格式為:ON[<表名1>.]<列名><比較運算符>[<表名2>.]<列名>參數(shù)說明如下所示。比較運算符可以是>、>=、=、<、<=、<>、!=、!>及!<。當(dāng)前第95頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接當(dāng)比較運算符為“=”時,稱為等值聯(lián)接。若在等值聯(lián)接的結(jié)果集中去除相同的列,則為自然聯(lián)接。使用除“=”外運算符的聯(lián)接為非等值聯(lián)接。在實際應(yīng)用中,聯(lián)接條件通常采用“on主鍵=外鍵”的形式。當(dāng)前第96頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接內(nèi)聯(lián)接有以下兩種語法格式。第一種格式:SELECT列名列表FROM表名l[INNER]JOIN表名2ON表名1.列名=表名2.列名第二種格式:SELECT列名列表FROM表名l,表名2WHERE表名1.列名=表名2.列名當(dāng)前第97頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接參數(shù)說明如下所示。內(nèi)聯(lián)接是系統(tǒng)默認(rèn)的聯(lián)接,INNER選項可以省略。當(dāng)前第98頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接若SELECT子句中有同名列,則必須用“表名.列名”來表示。為了方便使用,可以給表名定義別名。別名是在FROM子句中指定的,格式為“表名AS別名”或“表名別名”。若為表指定了別名,則只能用“別名.列名”來表示同名列,不能用“表名.列名”表示。當(dāng)前第99頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接【例4-20】用內(nèi)聯(lián)接方法聯(lián)接tl和t2兩表,不去除重復(fù)列(讀者編號)。觀察聯(lián)接后的結(jié)果集與交叉聯(lián)接有何區(qū)別(光盤:\源文件\第4章\例4-20)。當(dāng)前第100頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接USELibraryGOSELECT*FROMt1JOINt2ONt1.讀者編號=t2.讀者編號GO當(dāng)前第101頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖??梢钥吹街挥袧M足聯(lián)接條件的記錄才被拼接到結(jié)果集中,結(jié)果集是兩個表中記錄的交集。當(dāng)前第102頁\共有195頁\編于星期五\0點有重復(fù)列的內(nèi)聯(lián)接當(dāng)前第103頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接【例4-21】用內(nèi)聯(lián)接方法聯(lián)接tl和t2兩表,去除重復(fù)列(讀者編號)(光盤:\源文件\第4章\例4-21)。當(dāng)前第104頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接USELibraryGOSELECTa.讀者編號,姓名,已借冊數(shù)FROMt1aJOINt2bONa.讀者編號=b.讀者編號GO當(dāng)前第105頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖。可以看出結(jié)果集中不含重復(fù)列(讀者編號),去掉重復(fù)列的等值內(nèi)聯(lián)接則為自然聯(lián)接。自然聯(lián)接是聯(lián)接的主要形式,在實際中應(yīng)用最為廣泛。當(dāng)前第106頁\共有195頁\編于星期五\0點不含重復(fù)列的內(nèi)聯(lián)接當(dāng)前第107頁\共有195頁\編于星期五\0點內(nèi)聯(lián)接也可以用第二種格式的代碼實現(xiàn)上述功能:USELibraryGOSELECTa.讀者編號,姓名,已借冊數(shù)FROMt1a,t2bWHEREa.讀者編號=b.讀者編號GO當(dāng)前第108頁\共有195頁\編于星期五\0點外聯(lián)接外聯(lián)接又分為左外聯(lián)接、右外聯(lián)接、全外聯(lián)接3種。外聯(lián)接的結(jié)果集中不但包含滿足聯(lián)接條件的記錄,還包含相應(yīng)表中的不滿足聯(lián)接條件的記錄。左外聯(lián)接右外聯(lián)接全外聯(lián)接當(dāng)前第109頁\共有195頁\編于星期五\0點左外聯(lián)接左外聯(lián)接的語法格式為:SELECT列名列表FROM表名lLEFT[OUTER]JOIN表名2ON表名1.列名=表名2.列名當(dāng)前第110頁\共有195頁\編于星期五\0點左外聯(lián)接左外聯(lián)接的結(jié)果集中包括了左表的所有記錄,而不僅僅是滿足聯(lián)接條件的記錄。如果左表的某記錄在右表中沒有匹配行,則該記錄在結(jié)果集行中屬于右表的相應(yīng)列值均為NULL。當(dāng)前第111頁\共有195頁\編于星期五\0點左外聯(lián)接【例4-22】用左外聯(lián)接方法聯(lián)接tl和t2兩表。觀察聯(lián)接后所產(chǎn)生的結(jié)果(光盤:\源文件\第4章\例4-22)。在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖所示。當(dāng)前第112頁\共有195頁\編于星期五\0點左外聯(lián)接當(dāng)前第113頁\共有195頁\編于星期五\0點右外聯(lián)接右外聯(lián)接的語法格式為:SELECT列名列表FROM表名lRIGHT[OUTER]JOIN表名2ON表名1.列名=表名2.列名當(dāng)前第114頁\共有195頁\編于星期五\0點右外聯(lián)接右外聯(lián)接的結(jié)果集中包括了右表的所有記錄,而不僅僅是滿足聯(lián)接條件的記錄。如果右表的某記錄在左表中沒有匹配行,則該記錄在結(jié)果集行中屬于左表的相應(yīng)列值均為NULL。當(dāng)前第115頁\共有195頁\編于星期五\0點右外聯(lián)接【例4-23】用右外聯(lián)接方法聯(lián)接tl和t2兩表。觀察聯(lián)接后所產(chǎn)生的結(jié)果(光盤:\源文件\第4章\例4-23)。在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖。當(dāng)前第116頁\共有195頁\編于星期五\0點右外聯(lián)接當(dāng)前第117頁\共有195頁\編于星期五\0點全外聯(lián)接全外聯(lián)接的語法格式為:SELECT列名列表FROM表名lFULL[OUTER]JOIN表名2ON表名1.列名=表名2.列名當(dāng)前第118頁\共有195頁\編于星期五\0點全外聯(lián)接全外聯(lián)接的結(jié)果集中包括了左表和右表的所有記錄。當(dāng)某記錄在另一個表中沒有匹配記錄時,則另一個表的相應(yīng)列值為NULL?!纠?-24】用全外聯(lián)接方法聯(lián)接tl和t2兩表。觀察聯(lián)接后所產(chǎn)生的結(jié)果(光盤:\源文件\第4章\例4-24)。當(dāng)前第119頁\共有195頁\編于星期五\0點全外聯(lián)接在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖所示。當(dāng)前第120頁\共有195頁\編于星期五\0點自聯(lián)接自聯(lián)接就是將一個表與它自身進(jìn)行聯(lián)接,可看作一個表中的兩個副本之間的內(nèi)聯(lián)接。若要在一個表中查找具有相同列值的行,則可以使用自聯(lián)接。使用自聯(lián)接時,必須為表指定兩個不同的別名,使之在邏輯上成為兩個表。當(dāng)前第121頁\共有195頁\編于星期五\0點自聯(lián)接【例4-25】用自聯(lián)接的方法查詢Books表中“圖書名”相同作者不同的圖書信息。要求只顯示圖書編號、圖書名、作者和出版社(光盤:\源文件\第4章\例4-25)。在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖所示。當(dāng)前第122頁\共有195頁\編于星期五\0點自聯(lián)接當(dāng)前第123頁\共有195頁\編于星期五\0點合并結(jié)果集使用UNION語句可以將多個查詢結(jié)果集合并為一個結(jié)果集。UNION子句的語法格式如下:SELECT語句{UNIONSELECT語句}[,…n]當(dāng)前第124頁\共有195頁\編于星期五\0點合并結(jié)果集合并結(jié)果集的基本規(guī)則如下。UNION合并的各結(jié)果集的列數(shù)必須相同,對應(yīng)的數(shù)據(jù)類型也必須兼容。默認(rèn)情況下系統(tǒng)將自動去掉合并后的結(jié)果集中重復(fù)的行。最后結(jié)果集中的列名來自第一個SELECT語句。當(dāng)前第125頁\共有195頁\編于星期五\0點合并結(jié)果集【例4-26】將Readers表中2004年登記的讀者記錄保存到表Readers_2004中,2005年登記的讀者記錄保存到表Readers_2005中,然后將兩個表的查詢結(jié)果合并為一個結(jié)果集(光盤:\源文件\第4章\例4-26)。當(dāng)前第126頁\共有195頁\編于星期五\0點合并結(jié)果集可以在查詢分析器中輸入上述代碼,并查看執(zhí)行結(jié)果。UNION操作常用于歸檔數(shù)據(jù),例如歸檔月報表為年報表,歸檔各部門數(shù)據(jù)等。注意UNION還可以與ORDERBY、GROUPBY子句一起使用,用來對合并所得的結(jié)果集進(jìn)行分組或排序。當(dāng)前第127頁\共有195頁\編于星期五\0點子查詢下面介紹相關(guān)子查詢和嵌套子查詢的兩種方式。相關(guān)子查詢嵌套子查詢當(dāng)前第128頁\共有195頁\編于星期五\0點相關(guān)子查詢在相關(guān)子查詢中,子查詢的執(zhí)行依賴于外部查詢,多數(shù)情況下是在子查詢的WHERE子句中引用了外部查詢的表。相關(guān)子查詢的執(zhí)行過程與前面所講的查詢完全不同,前面介紹的子查詢在整個查詢過程中只執(zhí)行一次,而相關(guān)子查詢中的子查詢需要重復(fù)地執(zhí)行。當(dāng)前第129頁\共有195頁\編于星期五\0點相關(guān)子查詢相關(guān)子查詢的執(zhí)行過程是:子查詢?yōu)橥獠坎樵兊拿恳恍袌?zhí)行一次,外部查詢將子查詢引用的外部字段的值傳給子查詢,進(jìn)行子查詢操作;外部查詢根據(jù)子查詢得到的結(jié)果或結(jié)果集返回滿足條件的結(jié)果行;外部表的每一行都將做相同的處理。當(dāng)前第130頁\共有195頁\編于星期五\0點相關(guān)子查詢【例4-27】查詢Books表中大于該類圖書價格平均值的圖書信息。(光盤:\源文件\第4章\例4-27)當(dāng)前第131頁\共有195頁\編于星期五\0點相關(guān)子查詢與前面介紹過的子查詢不同,該語句中的子查詢無法獨立于外部查詢而得到解決。該子查詢需要一個“類編號”值,而該值是個變量,隨SQLServer檢查Books表中的不同行而改變。下面詳細(xì)說明該查詢的執(zhí)行過程:當(dāng)前第132頁\共有195頁\編于星期五\0點相關(guān)子查詢先將Books表的第一條記錄的“類編號”的值“13”代入到子查詢中,則子查詢變?yōu)槿缦滦问剑篠ELECTAVG(價格)FROMBooksASbWHERE類編號=13當(dāng)前第133頁\共有195頁\編于星期五\0點相關(guān)子查詢子查詢的結(jié)果為該類圖書的平均價格,如本例為20.9750,所以外部查詢變?yōu)椋篠ELECT圖書名,作者,出版社,類編號,價格FROMBooksAsaWHERE價格>20.9750當(dāng)前第134頁\共有195頁\編于星期五\0點相關(guān)子查詢?nèi)绻鸚HERE條件為TRUE,則第一條記錄包括在結(jié)果集中,否則不在結(jié)果集中。對Books表中的所有行運行相同的過程,最后形成一個結(jié)果集。當(dāng)前第135頁\共有195頁\編于星期五\0點相關(guān)子查詢當(dāng)前第136頁\共有195頁\編于星期五\0點相關(guān)子查詢在子查詢中,還可以通過運算符EXISTS來判斷子查詢的結(jié)果是否為空表。如果子查詢的結(jié)果集不為空,EXISTS返回TRUE;否則返回FALSE。使用NOTEXIST時其返回值與EXISTS剛好相反。當(dāng)前第137頁\共有195頁\編于星期五\0點相關(guān)子查詢【例4-28】利用EXISTS查詢所有支付過罰金的讀者的信息。(光盤:\源文件\第4章\例4-28)在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖所示。當(dāng)前第138頁\共有195頁\編于星期五\0點使用EXISTS運算符的相關(guān)子查詢當(dāng)前第139頁\共有195頁\編于星期五\0點相關(guān)子查詢本例中由EXISTS引出的子查詢屬于相關(guān)子查詢,該查詢與下面用IN表示的非相關(guān)的子查詢返回的結(jié)果一樣:USELibraryGOSELECT*當(dāng)前第140頁\共有195頁\編于星期五\0點相關(guān)子查詢FROMReadersWHERE讀者編號IN(SELECT讀者編號FROMBorrowHistoryWHERE支付罰金>0)GO當(dāng)前第141頁\共有195頁\編于星期五\0點相關(guān)子查詢另外,使用聯(lián)接也可以實現(xiàn)【例4-28】中的查詢,而且聯(lián)接還可以同時顯示來自多個表中的字段,代碼如下:USELibraryGOSELECTa.讀者編號,a.姓名,b.圖書編號,b.支付罰金當(dāng)前第142頁\共有195頁\編于星期五\0點相關(guān)子查詢FROMReadersASaJOINBorrowHistoryASbONa.讀者編號=b.讀者編號WHEREb.支付罰金>0GO在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖所示。當(dāng)前第143頁\共有195頁\編于星期五\0點使用聯(lián)接實現(xiàn)例4-28的查詢當(dāng)前第144頁\共有195頁\編于星期五\0點相關(guān)子查詢聯(lián)接和子查詢可能都要涉及兩個或多個表,它們之間的區(qū)別如下。聯(lián)接可以合并兩個或多個表中的數(shù)據(jù),而帶子查詢的SELECT語句的結(jié)果只能來自一個表,子查詢的結(jié)果只是用來作為選擇結(jié)果數(shù)據(jù)時進(jìn)行參照的。當(dāng)前第145頁\共有195頁\編于星期五\0點相關(guān)子查詢有的查詢既可以使用子查詢來表達(dá),也可以使用聯(lián)接表達(dá)。通常使用子查詢表示時可以將一個復(fù)雜的查詢分解為一系列的邏輯步驟,條理清晰,而使用聯(lián)接表示有執(zhí)行速度快的優(yōu)點。因此,在實際應(yīng)用中,讀者應(yīng)根據(jù)具體情況來決定使用哪種方法。當(dāng)前第146頁\共有195頁\編于星期五\0點嵌套子查詢嵌套子查詢的執(zhí)行不依賴于外部查詢。這類子查詢的執(zhí)行過程是:首先執(zhí)行子查詢,子查詢得到的結(jié)果不被顯示出來,而是傳遞給外部查詢,作為外部查詢的條件來使用,然后執(zhí)行外部查詢,并顯示整個查詢結(jié)果。當(dāng)前第147頁\共有195頁\編于星期五\0點嵌套子查詢嵌套子查詢一般可分為兩種:返回單個值的子查詢和返回一個值列表的子查詢,下面分別舉例說明。返回單個值返回一個值列表當(dāng)前第148頁\共有195頁\編于星期五\0點返回單個值該單值常被外部查詢用來進(jìn)行比較操作?!纠?-29】在Books表中,查詢所有價格高于平均價格的圖書名、作者、出版社和價格。(光盤:\源文件\第4章\例4-29)當(dāng)前第149頁\共有195頁\編于星期五\0點返回單個值本例的執(zhí)行過程是先執(zhí)行子查詢:SELECTAVG(價格)FROMBooks其結(jié)果為23.2050(并不顯示),當(dāng)前第150頁\共有195頁\編于星期五\0點返回單個值再執(zhí)行外部查詢:SELECT圖書名,作者,出版社,價格FROMBooksWHERE價格>23.2050這樣得到本例的結(jié)果如下圖所示。當(dāng)前第151頁\共有195頁\編于星期五\0點返回單值的子查詢當(dāng)前第152頁\共有195頁\編于星期五\0點返回一個值列表如果子查詢返回一個值列表,則該列表常和IN、NOTIN、ANY和ALL邏輯運算符一起構(gòu)成外部查詢的查詢條件。1)IN和NOTIN運算符當(dāng)前第153頁\共有195頁\編于星期五\0點返回一個值列表IN和NOTIN運算符用來將一個表達(dá)式的值與子查詢返回的一列值進(jìn)行比較。使用IN運算符時,如果該表達(dá)式的值與此列中的任何一個相等,則IN測試返回TRUE;如果該表達(dá)式的值與此列中的任何一個值都不相等,則返回FALSE。使用NOTIN時結(jié)果相反。當(dāng)前第154頁\共有195頁\編于星期五\0點返回一個值列表【例4-30】查詢所有借閱圖書的讀者信息(光盤:\源文件\第4章\例4-30)。在這個例子中,首先得到“SELECT讀者編號FROMBorrow”子查詢的結(jié)果集,它為一列值,即所有借閱讀書的讀者編號,然后將其和IN運算符組成外部查詢的條件執(zhí)行外部查詢,并得到最終結(jié)果。當(dāng)前第155頁\共有195頁\編于星期五\0點使用IN運算符的子查詢當(dāng)前第156頁\共有195頁\編于星期五\0點返回一個值列表2)ANY和ALL運算符ANY運算符要求的語法格式如下:表達(dá)式比較運算符ANY(子查詢)當(dāng)前第157頁\共有195頁\編于星期五\0點返回一個值列表ANY運算符通過比較運算符將一個表達(dá)式的值與子查詢返回的一列值中的每一個進(jìn)行比較。只要有一次比較的結(jié)果為TRUE,則ANY測試返回TRUE;若每一次比較的結(jié)果均為FALSE,則ANY測試返回FALSE。當(dāng)前第158頁\共有195頁\編于星期五\0點返回一個值列表如表達(dá)式“>ANY(1,2,3)”與“>1”等價。由于比任何一個數(shù)大表達(dá)式就成立,所以只要比最小數(shù)大即可。再如,表達(dá)式“〈ANY(1,2,3)”與“〈3”等價。由于比任何一個數(shù)小表達(dá)式就成立,所以只要比最大數(shù)小即可。當(dāng)前第159頁\共有195頁\編于星期五\0點返回一個值列表【例4-31】在Books表中,查詢“新宇”出版社的圖書中價格比“飛天”出版社最低定價還高的圖書信息(光盤:\源文件\第4章\例4-31)。在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖所示。當(dāng)前第160頁\共有195頁\編于星期五\0點使用ANY運算符的子查詢當(dāng)前第161頁\共有195頁\編于星期五\0點返回一個值列表ALL運算符要求的語法格式如下:表達(dá)式比較運算符ALL(子查詢)當(dāng)前第162頁\共有195頁\編于星期五\0點返回一個值列表ALL運算符通過比較運算符將一個表達(dá)式的值與子查詢返回的一列值中的每一個進(jìn)行比較。若每一次比較的結(jié)果均為TRUE,則ALL測試返回TRUE;只要有一次比較的結(jié)果為FALSE,則ALL測試返回FALSE。當(dāng)前第163頁\共有195頁\編于星期五\0點返回一個值列表如表達(dá)式“>ALL(1,2,3)”與“>3”等價。由于比所有數(shù)都大表達(dá)式才成立,所以只要比最大數(shù)大即可。再如,表達(dá)式“〈ALL(1,2,3)”與“〈1”等價。由于比所有數(shù)都小表達(dá)式才成立,所以只要比最小數(shù)小即可。當(dāng)前第164頁\共有195頁\編于星期五\0點返回一個值列表【例4-32】在Books表中,查詢所有比“飛天”出版社的圖書上架時間都早的圖書信息。(光盤:\源文件\第4章\例4-32)在查詢分析器中輸入并運行上述代碼,其執(zhí)行結(jié)果如下圖所示。當(dāng)前第165頁\共有195頁\編于星期五\0點使用ALL運算符的子查詢當(dāng)前第166頁\共有195頁\編于星期五\0點上機練習(xí)本節(jié)上機練習(xí)將進(jìn)行圖書管理系統(tǒng)的查詢,通過這個例子,掌握SELECT語句的基本語法、聚合函數(shù)的作用和使用方法,掌握GROUPBY和ORDEYBY子句的使用方法,掌握聯(lián)接查詢和子查詢的表示方法(光盤:\源文件\第4章\上機練習(xí))。當(dāng)前第167頁\共有195頁\編于星期五\0點上機練習(xí)SELECT語句的基本使用數(shù)據(jù)統(tǒng)計聯(lián)接查詢的使用子查詢的使用單表查詢多表查詢當(dāng)前第168頁\共有195頁\編于星期五\0點SELECT語句的基本使用首先使用SELECT語句查詢數(shù)據(jù)庫中的相關(guān)信息。當(dāng)前第169頁\共有195頁\編于星期五\0點數(shù)據(jù)統(tǒng)計數(shù)據(jù)統(tǒng)計的具體操作如下。當(dāng)前第170頁\共有195頁\編于星期五\0點聯(lián)接查詢的使用從Borrow、Books、Readers3個表中,查詢所有借書讀者的姓名、借書名稱、借閱日期、應(yīng)還日期。為了更好地驗證結(jié)果,讀者可先在Readers表中插入一條和表中現(xiàn)有姓名相同的記錄,然后再作練習(xí)。當(dāng)前第171頁\共有195頁\編于星期五\0點子查詢的使用下面將練習(xí)子查詢的使用,具體操作如下。該例是一個相關(guān)子查詢。讀者可以使用NOTIN把它改寫為非相關(guān)的子查詢。同樣,讀者也可以查詢從來沒有被借出過的圖書的信息。當(dāng)前第172頁\共有195頁\編于星期五\0點單表查詢下面練習(xí)單表查詢的方法。簡單查詢使用TOP關(guān)鍵字使用DISTINCT關(guān)鍵字使用ORDERBY子句對查詢的結(jié)果進(jìn)行排序當(dāng)前第173頁\共有195頁\編于星期五\0點單表查詢條件查詢使用BETWEENAND謂詞使用IN謂詞使用LIKE謂詞當(dāng)前第174頁\共有195頁\編于星期五\0點簡單查詢從Northwind數(shù)據(jù)庫的Employees表中分別檢索出雇員的所有信息,以及僅查詢雇員號、姓和名。SELECT*FROMEmployeesSELECTemployeeID,Lastname,FirstnameFROMEmployees當(dāng)前第175頁\共有195頁\編于星期五\0點簡單查詢?nèi)缫樵儠r改變列標(biāo)題的顯示,則從Employees表中分別檢索出雇員號、姓、名并分別加上‘雇員號’、‘姓’、‘名’等標(biāo)題信息。當(dāng)前第176頁\共有195頁\編于星期五\0點使用TOP關(guān)鍵字分別從Employees中檢索出前2條及前面50%的雇員的信息。SELECTtop2*FROMEmployeesSELECTtop50percent*FROMEmployees當(dāng)前第177頁\共有195頁\編于星期五\0點使用DISTINCT關(guān)鍵字從Suppliers表中檢索出country并且要求顯示不重復(fù)。USENorthwindSELECTDISTINCTcountryFROMSuppliersORDERBYcountryGO當(dāng)前第178頁\共有195頁\編于星期五\0點使用ORDERBY子句對查詢的結(jié)果進(jìn)行排序

使用ORDERBY語句可以對查詢的結(jié)果進(jìn)行排序,ASC、DESC分別是升序和降序排列的關(guān)鍵字,系統(tǒng)默認(rèn)的是升序排列。從Products表中查詢productid、productname、categoryid、unitpriceproductid,并按categoryid的升序和unitprice降序排列。當(dāng)前第179頁\共有195頁\編于星期五\0點使用ORDERBY子句對查詢的結(jié)果進(jìn)行排序USENorthwindSELECTproductid,productname,categoryid,unitpriceFROMProductsORDERBYcategoryid,unitpriceDESCGO當(dāng)前第180頁\共有195頁\編于星期五\0點條件查詢使用關(guān)系運算符:從Employees表中查詢出來自美國的雇員姓和所在城市。USENorthwindSELECTlastname,cityFROMemployeesWHEREcountry=

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論