第5章穿喉一劍數(shù)據(jù)查詢利器select_第1頁
第5章穿喉一劍數(shù)據(jù)查詢利器select_第2頁
第5章穿喉一劍數(shù)據(jù)查詢利器select_第3頁
第5章穿喉一劍數(shù)據(jù)查詢利器select_第4頁
第5章穿喉一劍數(shù)據(jù)查詢利器select_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論