




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第 3 講 SELECT 語句一、使用 SELECT 語句二、格式化結(jié)果集合 三、用 WHERE 子句選擇行四、查詢設(shè)計器簡介1一、使用 SELECT 語句 SQL中最主要、最核心的部分是查詢功能,它可以在數(shù)據(jù)庫中按用戶的要求檢索數(shù)據(jù),并將結(jié)果以表格的形式返回. 許多其他功能也都離不開 SELECT 語句,如創(chuàng)建視圖,實際上是利用查詢語句來實現(xiàn)的,又如插入數(shù)據(jù)時,有很多時候是從另外一個表或多個表中選擇符合條件的數(shù)據(jù). 掌握查詢語句是掌握 SQL 語言的關(guān)鍵. 21 簡單的 SELECT 語句 使用 SELECT 語句可以從數(shù)據(jù)表中提取列,從一個或多個表中選擇一個或多個行或列. 它的基本語法如下
2、:SELECT 逗號分隔的列名稱 FROM 表名稱 將欲查詢的列名稱放在 SELECT 關(guān)鍵字之后.當(dāng)存在多個字段時, 對象之間使用逗號進(jìn)行分隔. FROM 子句之后指定了進(jìn)行操作的表名稱.3 SELECT子句后的列名稱順序可作適當(dāng)調(diào)整, 以便閱讀. 而 FROM 子句內(nèi)指定的數(shù)據(jù)庫對象名稱可省略服務(wù)器名稱, 因為它會默認(rèn)采用當(dāng)前連接的服務(wù)器實例. 要查詢所有的列, 可使用星號 * .SELECT * FROM Pubs.dbo.titles 在 SELECT 子句內(nèi)使用通配符 * 返回所有列雖然方便, 但應(yīng)盡量少用, 主要因素是執(zhí)行的效率問題. 4 當(dāng)數(shù)據(jù)源包含多個表或視圖時, 可以使用別名
3、. 一旦使用了表別名, 在整個過程就要始終使用.SELECT s.UnitPrice, p.*FROM OrderDetails AS s JOINProducts AS p ON OrderDetails.ProductID = Products.ProductIDORDER BY p.ProductIDGO5 SELECT 查詢語句的簡單語法如下: SELECT ALL|DISTINCT ,目標(biāo)表達(dá)式 INTO FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC 6 2 查詢處理的邏輯順序 T-SQL 語法與其他程序語言相比, 差異較大之處在于其執(zhí)
4、行的邏輯順序. (8) SELECT (9) DISTINCT(11) Top n 返回結(jié)果列表 INTO 新表名稱 FROM 表 INNER| LEFT| RIGHT JOIN 表(2) ON (4) WHERE (5) GROUP BY (6) WITH CUBE | ROLLUP (7) HAVING (10) ORDER BY ASC| DESC7二、格式化結(jié)果集合 目的 - 增加查詢結(jié)果的可讀性. 1 修改列名稱( AS子句 ) 一般來說,查詢的結(jié)果列及名稱來自于表或視圖, 通過 AS 子句可以為結(jié)果列或派生的列賦予不同的名稱, 以增加結(jié)果的可讀性. 實際上, AS 可以省略.USE
5、 NorthwindSELECT CategoryName AS 產(chǎn)品名稱, Description AS 說明FROM dbo.Categories8 當(dāng)賦值的列名稱有空格符、關(guān)鍵字或特殊符號時, 可使用方括號(或雙引號)括起來. 在查詢的列中也可以有派生列, 如下例所示.USE NorthwindSELECT ShipName 商店 名稱, year(OrderDate) 年, month(OrderDate) 月FROM dbo.Orders9 在 SQL 表中的數(shù)據(jù)是無序的. 主鍵的作用是惟一地標(biāo)識一行記錄, 而不是對表進(jìn)行排序. 在其他的桌面數(shù)據(jù)庫中, 如果在 select 語句中沒
6、有使用 order by 子句, 將按照主鍵值的順序來顯示表中的數(shù)據(jù). 但是, 依賴于這種功能并不是一種好習(xí)慣.如果不指定 order by 子句, 就意味著結(jié)果集中記錄行的順序?qū)⒉淮砣魏蚊鞔_的含義.2 數(shù)據(jù)排序 ( ORDER BY )10 ORDER BY 子句對項目數(shù)沒有限制, 但排序操作所需的中繼工作表, 行大小限制為8060 字節(jié). 這會限制所指定的列的總大小. 排序的方式可為遞增 ASC, 也可以遞減 DESC. 默認(rèn)的方式是 ASC. 若排序內(nèi)容中包含 NULL 值, 則該值會被當(dāng)作最小值來處理. 另外, 使用 ORDER BY 子句時要特別注意, 它不能用于 ntext、te
7、xt、 image 或 xml 格式的列. 11 使用列名指定排序順序 這種方法最簡單,也很清晰.SELECT Categoryid 產(chǎn)品類別代號, productname, unitprice 單價FROM NductsORDER BY unitprice ASC此例中, 結(jié)果集的列名稱為 單價. 可改為ORDER BY 單價 ASCORDER BY 312 不過, 當(dāng)表的字段在 SELECT 子查詢中使用的是別名時, 只能使用別名來限定其在子句中的行.USE Northwindselect P.* from( SELECT productid, produc
8、tname, categoryid, unitprice 單價 FROM ducts) AS PORDER BY unitprice13 如果在 ORDER BY 子句中存在多個列,結(jié)果集將會形成嵌套的排序.SELECT categoryid 產(chǎn)品類別代號, productname, unitprice 單價FROM NductsORDER BY categoryid, unitprice DESC 數(shù)據(jù)庫引擎和服務(wù)器都有自己的排序規(guī)則,有關(guān)問題請參見聯(lián)機(jī)叢書.14 移除重復(fù)的行(DISTINCT) 使用 DISTINCT 關(guān)鍵字可將重復(fù)的行從查詢
9、結(jié)果中移除. 比較下面兩個結(jié)果.SELECT title, regionFROM Northwind.dbo.EmployeesORDER BY title SELECT DISTINCT titleFROM Northwind.dbo.EmployeesORDER BY title 15 使用表達(dá)式 表達(dá)式是操作數(shù)和運算符的組合, 可以用在許多地方, 例如訪問或修改數(shù)據(jù)時. 表達(dá)式可以是常量、函數(shù)、列名稱、變量、子查詢、 CASE、 NULLIF 和 COALESCE 等. 此外, 也可以利用操作符組合上述項目來建立. T-SQL 提供了多種不同類型的運算符, 例如,比較、邏輯、算術(shù)、字符串
10、連接等. 16 首先看算術(shù)運算符: 加(+) 、減(-)、乘()、除(/)、取余(%). 也可以使用括號或嵌套的括號.SELECT OrderID 訂單編號, productID 產(chǎn)品編號, (UnitPrice*Quantity)*(1-Discount) 總金額FROM Northwind.dbo.Order DetailsORDER BY 3 DESC17 在 datetime 和 smalldatetime 列上也可以使用日期函數(shù)或一般加減算術(shù)運算符來執(zhí)行算術(shù)運算.SELECT GETDATE() 今天, GETDATE()+1 明天, GETDATE()-2 前天18 加號 ” +
11、” 除了用于算術(shù)運算, 也可以是連接字符串的運算符. USE AdventureWorksSELECT c.FirstName+.+c.LastName FullName, VacationHours, SickLeaveHours, VacationHours + SickLeaveHours 休假總時數(shù)FROM HumanResources.Employee AS e JOIN Person.Contact AS c ON e.ContactID=c. ContactIDORDER BY 休假總時數(shù) ASC19 當(dāng)兩個操作數(shù)都有運算符所支持的數(shù)據(jù)類型,且至少符合下列條件之一時, 就可以用這
12、個運算符來組合這兩個操作數(shù). 操作數(shù)有相同的數(shù)據(jù)類型. 優(yōu)先級較低的數(shù)據(jù)類型可以隱式地轉(zhuǎn)換成優(yōu)先級較高的數(shù)據(jù)類型.SELECT emp_id, fname, pub_id, 04 + pub_id FROM pubs.dbo.employee e20 用 CAST 或 CONVERT 函數(shù)直接指定其數(shù)據(jù)格式, 要記得用單引號指定 04 這個字符串, 否則它會隱式轉(zhuǎn)換為優(yōu)先級較高的數(shù)字類型, 使得 0 不出現(xiàn). 如下例所示.SELECT emp_id, fname, pub_id, convert(char,04)+pub_idFROM pubs.dbo.employee e21 在此僅是強(qiáng)調(diào)隱
13、式轉(zhuǎn)換的優(yōu)先級, 若只是加上 04 的字符串, 直接連接即可.SELECT emp_id, fname, job_id,04+ job_id FROM pubs.dbo.employee eSELECT emp_id, fname, pub_id, 04+pub_idFROM pubs.dbo.employee e 注意到 job_id 是數(shù)字型的, 看下例.22三、用 WHERE 子句選擇行 使用 SELECT 子句, 除了需要指定從哪一個表查詢及要查詢的列名稱之外, 通常會利用 WHERE 子句做進(jìn)一步的條件限制, 以選擇合適的數(shù)據(jù). 注意當(dāng)列的數(shù)據(jù)類型為以下幾種時, 要在數(shù)據(jù)前后加上單引
14、號: char、nchar、varchar、nvarchar、text、datetime、smalldatetime.23 使用 WHERE 子句時, 可以搭配運算符或關(guān)鍵字來確定查詢條件. 最常用的是比較運算符.該運算符是用來處理字符、數(shù)值或日期型數(shù)據(jù)的.運算符意 義=等于大于=大于或等于=小于或等于不等于表 3-1 T-SQL 提供的比較運算符24 比較運算符的運算結(jié)果是數(shù)據(jù)類型. 它提供三個值來代表比較的結(jié)果, 分別為 TRUE、FALSE 和 UNKNOWN. 下例通過比較運算符, 查詢國家字段內(nèi)容為USA 的員工.USE NorthwindSELECT country, city,
15、lastname FROM employeesWHERE country = USA25 如果要查詢國家字段內(nèi)容位于 USA 以外的員工數(shù)據(jù)?SELECT country, city, lastname FROM Northwind.dbo.employeesWHERE country USA 找出庫存量大于 100 的產(chǎn)品數(shù)據(jù).SELECT ProductName,UnitPrice, UnitInStock FROM Northwind.dbo.ProductsWHERE UnitInStock 11026 比較運算符用于日期型數(shù)據(jù)時, 可能會遇到一些問題. 比如, 在 Order 表中查
16、詢 Orderdate字段等于1996年7月8日的訂單數(shù)據(jù). 一般會寫成:SELECT OrderID , OrderDate FROM Northwind.dbo.OrdersWHERE OrderDate = 1996/07/08SELECT OrderID , OrderDate FROM Northwind.dbo.OrdersWHERE OrderDate = 1996/07/08 AND OrderDate 40035SELECT ProductID, ProductModelID FROM AdventureWorks. Production. ProductWHERE Prod
17、uctModelID = 20 OR ProductModelID = 21 AND Color= Red 用語言敘述下面查詢語句的含義.36 查找范圍(BETWEEN AND)或列表(IN) 范圍查找可返回數(shù)值介于某兩個指定數(shù)值之間的所有數(shù)據(jù), 與 NOT 關(guān)鍵字配合使用還可排除數(shù)值位于某范圍的所有數(shù)據(jù). 理解下例的含義. WHERE UnitePrice=15 AND UnitePrice=25 SELECT ProductID, ProductName, UnitPriceFROM Northwind.dbo. ProductsWHERE UnitPrice BETWEEN 15 AND
18、 25 37 使用 IN 關(guān)鍵字可以用來判斷指定值是否位于子查詢或列表中. 比較下面兩例. SELECT Companyname, countryFROM Northwind.dbo. suppliersWHERE country = UK OR country = Italy OR country = Japan OR country = Australia SELECT Companyname, countryFROM Northwind.dbo. suppliersWHERE country IN (UK,Italy,Japan,Australia) 38三、查詢設(shè)計器簡介 查詢設(shè)計器是最受歡迎的數(shù)據(jù)檢索和修改工具, 雖然它幾乎完全隱藏在企業(yè)管理器的內(nèi)部. 打開查詢設(shè)計器的惟一方法是展開一個數(shù)據(jù)庫的表列表, 選擇其中一個表, “右鍵單擊”打開表”查詢”. 查詢設(shè)計器總要隨著一個表打開, 沒有辦法能夠在沒有表的情況下打開查詢設(shè)計器. 39 除了 select 語句之外, 查詢設(shè)計器還可以執(zhí)行 DML 語句(Data Manipulation Language,數(shù)據(jù)操縱語言)-insert、update、delete. 與查詢分析器不同
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出口咖啡合同范本
- 防汛評估工程合同范本
- 勞務(wù)派遣公司派遣合同范本
- 人教版初中歷史與社會九年級上冊 1.2.2 武昌起義與中華民國的創(chuàng)建 教學(xué)設(shè)計
- Unit 3 Powerful Music Listening,Understanding and Communicating 教學(xué)設(shè)計-2024-2025學(xué)年高中英語重大版(2019)必修第一冊
- 動物及其產(chǎn)品銷售合同
- 建筑公司合同管理職責(zé)
- 教科版(2019)必修一 5.2探秘人工智能 教學(xué)設(shè)計
- 滬教版高中信息技術(shù)必修 第一章第2節(jié) 2.2信息技術(shù)的發(fā)展 教學(xué)設(shè)計
- 《擬行路難》教學(xué)設(shè)計 2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊
- 2025包頭青山賓館有限公司面向社會公開招聘18人筆試參考題庫附帶答案詳解
- 2025年業(yè)務(wù)員工作總結(jié)及工作計劃模版(3篇)
- 2025至2030年中國毛絨卡通玩具數(shù)據(jù)監(jiān)測研究報告
- 2024年連云港市贛榆區(qū)區(qū)屬國企對外招聘筆試真題
- 海南省??谑?024-2025學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 2025年度智能充電樁場地租賃合同范本3篇
- 2025年注射用賴氮匹林項目可行性研究報告
- 2025江西吉安市新廬陵投資發(fā)展限公司招聘11人高頻重點提升(共500題)附帶答案詳解
- 技術(shù)推廣服務(wù)合同模板五篇
- 2025年山東出版集團(tuán)招聘筆試參考題庫含答案解析
- 心電監(jiān)護(hù)儀的操作及注意事項 課件
評論
0/150
提交評論