版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第5章 數(shù)據(jù)查詢利器——SELECT命令在Transact-SQL語言中,SELECT是最常用的查詢語句,也是功能最強大的Transact-SQL語句,在SQLServer中對數(shù)據(jù)庫信息的任何查詢操作都最終將翻譯成
SELECT命令提交給數(shù)據(jù)庫服務器,SQL
Server將查詢結果返回給客戶端。本章將介紹SELECT語句的方方面面,本章用到的數(shù)據(jù)庫主要是SQL
Server
2008系統(tǒng)示例數(shù)據(jù)庫
AdventureWorks。5.1 執(zhí)行SELECT命令的工具在SQLServer2008中,運行SELECT語句的工具有基于文本的查詢設計器和圖形查詢設計器。在前面章節(jié)已經(jīng)涉及到了數(shù)據(jù)庫引擎查詢編輯器的使用,本小節(jié)主要學習如何在SQLServer
Management
Studio中使用基于文本的查詢編輯器和圖形查詢設計器檢索數(shù)據(jù)。5.1.1
使用基于文本的查詢設計器使用基于文本的查詢設計器檢索數(shù)據(jù)的具體操作步驟如下:單擊“開始|所有程序|Microsoft
SQL
Server
2008
R2|SQL
ServerManagementStudio”命令,啟動SQL
Server
Management
Studio工具。在“連接到服務器”對話框中,在服務器類型下拉列表選擇“數(shù)據(jù)庫引擎”,選擇正確的服務器名稱和身份驗證類型,單擊“連接”按鈕。打開SQL
Server
Management
Studio主界面。從“文件”菜單或工具欄中的
“新建查詢”和“數(shù)據(jù)庫引擎查詢”按鈕,打開基于文本的查詢設計器窗口。當在基于文本的查詢設計器對話框中編寫如下SELECT查詢語句并執(zhí)行查詢后,數(shù)據(jù)庫引擎查詢窗口。5.1.2
使用圖形查詢設計器圖形查詢設計器可以幫助創(chuàng)建和維護應用程序的數(shù)據(jù)檢索和數(shù)據(jù)操作部分。圖形查詢設計器由四個窗格組成:“關系圖”窗格、“條件”窗格、“SQL”窗格和“結果”窗格。5.2
簡單數(shù)據(jù)查詢SELECT命令非常接近于自然語言,只需要知道要從“什么地方(數(shù)據(jù)表)”查詢“什么數(shù)據(jù)(字段)”,具體語法格式如下:Select [字段名1],[字段名2],[…n][From
表名]5.3
TOP關鍵字當一個數(shù)據(jù)表中的數(shù)據(jù)量非常大時,讀者可能并不關心所有的數(shù)據(jù),而只希望查看前10條或
100條記錄,這時可以使用TOP關鍵字。語法格式如下:Select [TOP
n]
[PERCENT]
column_name[
,
…
n][From
table_name]5.4
ROWCOUNT關鍵字在使用TOP的時候必須寫明返回行的數(shù)量或者百分比,不能使用變量或者表達式代替TOP后面的數(shù)字或者百分比,限定返回行數(shù)的另外的一個辦法就是使用ROWCOUNT全局變量。在示例9的寫法還可以轉(zhuǎn)換為示例10。5.5
DISTINCT關鍵字DISTINCT關鍵字用于從SELECT
語句的結果集中除去重復的行。如果沒有指定DISTINCT,那么將返回所有行,包括重復的行。查詢AdventureWorks數(shù)據(jù)庫地址信息表Address中所有的城市(City)名稱。使用DISTINCT關鍵字。5.6 WHERE子句在查詢數(shù)據(jù)時,大多不是想瀏覽所有數(shù)據(jù),而是檢索符合某種特定條件的值,可以使用WHERE子句來設置條件。語法格式如下:SELECT
字段名
[
,
…
n][FROM
表名][WHERE
條件]5.6.1 在WHERE子句中使用比較運算符查詢AdventureWorks數(shù)據(jù)庫中聯(lián)系人表Conact中名字為Abby的全部聯(lián)系人的信息5.6.2 在WHERE子句中使用邏輯運算符查詢AdventureWorks數(shù)據(jù)庫中聯(lián)系人表
Conact中FirstName為Abby或者James的全部聯(lián)系人的信息。5.6.3 BETWEEN…AND結構BETWEEN…AND表示選取值在兩個數(shù)值之間的數(shù)據(jù)。語法格式為:字段名或者表達式[NOT]BETWEEN
表達式1
AND
表達式25.6.4
IN關鍵字IN/NOT
IN表示根據(jù)表達式是包含在指定范圍內(nèi)還是在指定范圍外,指定對表達式的搜索。搜索表達式可以是常量或列名,而列表可以是一組常量或更多情況下是子查詢。將值列表放在圓括號內(nèi)。語法格式如下:表達式或者字段名[NOT]IN
(列表或者子查詢)代碼說明:表達式或者字段名的數(shù)據(jù)類型與列表或者子查詢相同。5.6.5
LIKE關鍵字LIKE用于模糊查詢,當不能精確知道查詢條件時,當使用LIKE進行字符串比較時,模式字符串中的所有字符都有意義,包括起始或尾隨空格。如果查詢中的比較要返回包含"abc"(abc
后有一個空格)的所有行,則將不會返回包含"abc"(abc
后沒有空格)的列所在
行。和LIKE結合使用的4種通配符是%、_、[]、[^],它們必須與LIKE結合使用才有意義,否則被當作普通字符使用。5.6.6 EXISTS關鍵字EXISTS關鍵字用于指定一個子查詢,檢測行的存在。也就是說如果EXISTS關鍵字指定的子查詢查得的結果集不為空,則執(zhí)行主體的
SELECT查詢,否則返回結果集為空。5.7
設置查詢字段的顯示名稱如果不想在查詢時顯示字段的原始字段名,而是根據(jù)需要或者個人愛好顯示自定義的名稱,有3種方式可以使用:使用as關鍵字;使用“=”號;直接給出名稱。5.8
使用統(tǒng)計函數(shù)在實際應用中,SQLServer程序員可能被要求給出數(shù)據(jù)表中的記錄數(shù)、一筆訂單最大的訂單金額、某一商品的最低價格等等,這時統(tǒng)計函數(shù)就變得必不可少了,
SQL
Server中常見的統(tǒng)計函數(shù)有以下幾個:Sum():返回在某一集合上對數(shù)值表達式求得的總和。
Avg():返回在某一集合上對數(shù)值表達式求得的平均數(shù)。
Max():返回在某一集合上數(shù)值表達式中的最大值。
Min():返回在某一集合上數(shù)值表達式中的最小值。
Count():返回符合條件的記錄數(shù)。5.9 GROUP
BY子句和HAVING關鍵字有時老板可能只會對某類產(chǎn)品的總體信息感興趣,比如想知道數(shù)碼相機、普通相機分別的銷售情況,這時就要求能夠?qū)?shù)據(jù)進行分類查詢,在SQL
Server中GROUP
BY子句用來對數(shù)據(jù)進行分組,HAVING關鍵字用來對分組的數(shù)據(jù)設置條件。其語法格式如下:[GROUP
BY
表達式][HAVING
表達式]5.10 ALL關鍵字Transact-SQL在GROUPBY子句中提供ALL關鍵字。只有在SELECT語句還包括WHERE子句時,ALL關鍵字才有意義。如果使用ALL關鍵字,那么查詢結果將包括由
GROUPBY子句產(chǎn)生的所有組,即使某些組沒有符合搜索條件的行。沒有ALL關鍵字,包含GROUPBY子句的SELECT語句將不顯示沒有符合條件的行的組。5.11 ORDER
BY子句orderby子句用于對查詢結果進行排序,比如對查詢的書籍按價格進行排序。語法格式如下:[ORDER
BY{order_by_字段名[ASC
|
DESC]}[
,...n
]
]5.12
多表查詢有時我們想要查詢的數(shù)據(jù)可能存在于多個數(shù)據(jù)表中,例如我們要檢索學生的姓名和成績,就要需要訪問學生表和成績表,并將這兩個表中的相關信息組合到一起。語法格式如下:Select
表名.字段名[,...n]From
t表名[,...n]5.13 UNION表達式UNION運算符可以將兩個或多個SELECT語句的查詢結果組合到一起,仿佛它們來自同一個數(shù)據(jù)表。使用UNION組合的結果集都必須具有相同的字段結構。而且它們的字段數(shù)必須相等,并且相應的字段的數(shù)據(jù)類型必須兼容。語法格式如下:select_statement
UNION
[ALL]select_statement5.14 CASE表達式CASE命令是一個特殊的Transact-SQL表達式,它允許按字段值動態(tài)指定顯式值。不過數(shù)據(jù)中的字段值更改是臨時的,并沒有對數(shù)據(jù)進行永久更改。CASE
表達式有兩種格式:
CASE簡單表達式,它通過將表達式與一組簡單的表達式進行比較來確定結果;CASE搜索表達式,它通過計算一組布爾表達式來確定結果。這兩種格式都支持可選的ELSE
參數(shù)。5.15 INNER
JOIN
…ON
…表達式INNERJOIN…ON…稱為內(nèi)連接,它查詢字段值與連接條件匹配的數(shù)據(jù)行,在功能上基本等同于兩表聯(lián)合查詢的WHERE…=…。語法格式如下:FROM
表名1 INNER
JOIN
表名2
on
表達式5.16
本章小結本章講述了Select命令中讀者會經(jīng)常用到以及可能用到的功能,
相信讀者已經(jīng)從中發(fā)現(xiàn)Select的神奇之處,本章的大部分講的都
是單表的查詢,其實這部分的技術也可以應用到多表組合查詢中?,F(xiàn)在讀者也應該相信Transact-SQL語言是多么地接近自然語言了吧,或許讀者又會因此而擔心它的執(zhí)行效率,完全不必,因為
Transact-SQL語言是一種描述性的語言,讀者只需要把自己的需求使用T-SQL進行描述,把執(zhí)行放心地交給查詢優(yōu)化器吧,盡管讀者可能還不曾見到過它,它會保證讀者的查詢效率。5.17
本章習題(1)熟練掌握數(shù)據(jù)庫引擎查詢編輯器的操作,請將SQL編輯器和查詢設計器的工具欄顯示出來。(2)請編寫Transact-SQL,查詢AdventureWorks數(shù)據(jù)庫Em
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學《圖像處理技術》2023-2024學年第一學期期末試卷
- 貴州財經(jīng)職業(yè)學院《古生物及地史學》2023-2024學年第一學期期末試卷
- 2025陜西建筑安全員知識題庫
- 2025年江蘇省建筑安全員-B證考試題庫附答案
- 貴陽信息科技學院《中外城市發(fā)展與規(guī)劃史》2023-2024學年第一學期期末試卷
- 硅湖職業(yè)技術學院《英語寫作1》2023-2024學年第一學期期末試卷
- 2025甘肅省建筑安全員知識題庫附答案
- 廣州新華學院《智能感知與移動計算》2023-2024學年第一學期期末試卷
- 期貨交易知識入門-理論與實務課件(考試參考)
- 稅金分析課件
- 新人教版一年級數(shù)學下冊全冊導學案
- (正式版)JBT 10437-2024 電線電纜用可交聯(lián)聚乙烯絕緣料
- 母嬰護理-課程標準
- 遼寧省大連市藥品零售藥店企業(yè)藥房名單目錄
- 矛盾糾紛排查化解登記表
- 教科版三年級上冊科學期末測試卷(二)【含答案】
- DB37T 5175-2021 建筑與市政工程綠色施工技術標準
- 泌尿道感染臨床路徑
- 古詩詞常見的修辭手法講課教案
- 科研項目評審評分表
- A5技術支持的課堂導入作業(yè)1—問題描述.針對日常教學中的某一主題針對教學目標、教學內(nèi)容以及教學對象用簡短的語言描述當前課堂導入環(huán)節(jié)中存在的問題和不足以及借助信息技術改進課堂導入的必要性
評論
0/150
提交評論