數(shù)據(jù)庫技術(shù)第8講數(shù)據(jù)查詢語句SELECT_第1頁
數(shù)據(jù)庫技術(shù)第8講數(shù)據(jù)查詢語句SELECT_第2頁
數(shù)據(jù)庫技術(shù)第8講數(shù)據(jù)查詢語句SELECT_第3頁
數(shù)據(jù)庫技術(shù)第8講數(shù)據(jù)查詢語句SELECT_第4頁
數(shù)據(jù)庫技術(shù)第8講數(shù)據(jù)查詢語句SELECT_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第八講第八講 數(shù)據(jù)查詢語句數(shù)據(jù)查詢語句SELECTSELECTSELECT語句基礎(chǔ)語句基礎(chǔ)1多表連接查詢多表連接查詢2嵌套查詢(子查詢)嵌套查詢(子查詢)3 查詢的基本思想v查詢是從數(shù)據(jù)表中檢索數(shù)據(jù)的方法。我們在進(jìn)行查詢操作之前,必須要建立好了數(shù)據(jù)庫和表,最重要的是表中應(yīng)該有數(shù)據(jù)。 v我們這里介紹的查詢是在給定的數(shù)據(jù)庫的一個或多個表中進(jìn)行的檢索,將符合條件的數(shù)據(jù)組成一個新的表(不管是單個數(shù)據(jù)項還是多個表內(nèi)容的組合)返回給查詢語句的用戶。 查詢語句的基本語法v使用SQL語句從數(shù)據(jù)庫中查詢數(shù)據(jù),并允許從一個或多個表中選擇一個或多個行或列。雖然 SELECT 語句的完整語法較復(fù)雜,但是其主要的子句可

2、歸納如下: SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC 查詢語句的基本語法vSELECT語句的完整語法比較復(fù)雜,SELECT是語句關(guān)鍵字,不可缺省,其它的可缺省子句包括:FROM子句、 WHERE子句、GROUP BY子句、 HAVING子句、 ORDER BY子句。v在SELECT語句之間還可以使用UNION,

3、EXCEPT和INTERSECT運算符,將各個查詢的結(jié)果合并到一個結(jié)果集中。 SELECT子句設(shè)定查詢結(jié)果內(nèi)容 vSELECT子句的主要參數(shù)v查詢表中所有列SELECT子句中使用“*”v查詢表中某幾列SELECT子句中給出列名列表v給列名指定別名SELECT子句中列名后用as給出別名v查看結(jié)果的前若干條記錄使用TOP關(guān)鍵字v查看結(jié)果中不重復(fù)的記錄使用DISTINCT關(guān)鍵字v構(gòu)造計算列SELECT子句的主要參數(shù)vSELECT子句的作用是指定查詢返回的列,SELECT關(guān)鍵字后包含的參數(shù)很多,下面介紹主要的幾個。ALL:指定在結(jié)果集中包含所有行(可重復(fù)),此參數(shù)為默認(rèn)值,可省略;DISTINCT:指

4、定在結(jié)果集中只包含唯一行,即從結(jié)果集中去掉重復(fù)行;TOP expression PERCENTWITH TIES:返回結(jié)果集中的頭幾行,其中expression是一個指定的數(shù)目(如10);select_list:指定要顯示的列,各列之間用逗號分隔;*:指定返回FROM子句中所有表和視圖中的所有列。簡單查詢使用select子句選取字段v輸出表中所有列使用“*”號; SELECT * FROM studentsv輸出表中部分列指定部分列名,逗號分隔; SELECT sno,sname,dept FROM students v為結(jié)果集內(nèi)的列指定別名as 子句或“別名=列名”; SELECT sno

5、AS 學(xué)號,sname AS 姓名,dept AS 所在系 FROM students v過濾結(jié)果集內(nèi)的重復(fù)行使用distinct關(guān)鍵字; SELECT DISTINCT dept AS 系名 FROM studentsv限制返回行數(shù)top 或top percent。 SELECT TOP 5 * FROM students SELECT TOP 20 PERCENT * FROM students構(gòu)造計算列 vSELECT后的子句中可以是表達(dá)式,因此可根據(jù)表中一些列的值計算出所需要的一些結(jié)果,這稱之為構(gòu)造計算列。 SELECT TOP 5 sno AS 學(xué)號,sname AS 姓名, yea

6、r(getdate()-in_year+1 AS 年級 FROM studentsWHERE子句設(shè)定查詢條件 v在實際應(yīng)用中我們是根據(jù)一定的條件來查找所需要的數(shù)據(jù),而不是表中所有記錄。因此WHERE子句在查詢語句顯得特別地重要。v包含WHERE子句SELECT語句基本格式如下: SELECT column_expression FROM table_name WHERE condition_expressionWHERE子句設(shè)定查詢條件v其中WHERE子句后的condition_expression是條件表達(dá)式,也就是查詢條件。v查詢條件就是一種邏輯表達(dá)式,只有那些使這個表達(dá)式的值為真值的記錄

7、才按照目標(biāo)列表達(dá)式column_expression指定的方式組成一個新記錄在結(jié)果中顯示。v因為表達(dá)式的結(jié)果是一個邏輯值,因此多個條件可以用邏輯聯(lián)結(jié)詞NOT、OR、AND(邏輯非運算、邏輯或運算、邏輯與運算)組合成復(fù)合條件。簡單的查詢條件(僅包含比較運算符)v簡單的查詢條件是這種模式“列名 比較運算符 值”,例如“sname=吳天天”,或“cj60”這種形式。 v查詢條件中的列名必須是表中存在的,不能有拼寫錯誤,不要用單引號括起來;而對應(yīng)的值如果是字符和日期型數(shù)據(jù)就需要用單引號括起來。v演示例子:查找出2011年入學(xué)的學(xué)生信息由聯(lián)結(jié)詞構(gòu)成的復(fù)合查詢條件 v當(dāng)給定的查詢要求比較復(fù)雜時,不能用簡單

8、的查詢條件來表示時,可以使用邏輯運算符非、或、與(NOT、OR、AND)將多個簡單條件組合成復(fù)合條件。v演示例子:查找出工程系2011年入學(xué)的學(xué)生信息使用BETWEENAND進(jìn)行范圍查詢 v當(dāng)要查詢的條件取值在某個范圍之內(nèi)時,可使用BETWEENAND進(jìn)行范圍鎖定,例如課程成績?nèi)≈翟?0到84之間,用上面介紹的復(fù)合條件表示為 “cj=60 AND cj”、“=”、“=”、“”等)將字段值與這個單值進(jìn)行比較,構(gòu)成查詢的邏輯表達(dá)式。基于多值的子查詢 v如果子查詢的結(jié)果是多個值,比如在選課(sc)表中給定學(xué)號(sno)值查詢學(xué)生所選修的課程號,則返回的結(jié)果是由多個課程號組成的多值信息。v對于返回多值

9、的子查詢,我們前面介紹了使用IN謂詞進(jìn)行判斷,另外還可以使用SOME、ANY和ALL加邏輯運算符來構(gòu)成新的比較運算實現(xiàn)查詢。vSOME或ANY代表多值中的一個,而ALL代表多值中的所有。在嵌套子查詢中,使用SOME與ANY具有完全相同的功能。相關(guān)與無關(guān)子查詢v在嵌套查詢中,如果子查詢不能獨立運行,依賴于父查詢的數(shù)據(jù)或結(jié)果,則這種子查詢稱之為相關(guān)子查詢。如果子查詢能夠獨立運行,不依賴于父查詢的數(shù)據(jù)和結(jié)果,則這種子查詢稱之為無關(guān)子查詢。v前面我們介紹的子查詢基本上都是無關(guān)子查詢,這些子查詢可以獨立運行,在父查詢運行前先獲得了運行結(jié)果。使用EXISTS的嵌套查詢 v在SELECT語句的WHERE子句中使用EXISTS謂詞的子查詢,只要子查詢的結(jié)果不為空則條件為真;相反地,使用NOT EXISTS的子查詢,則只要子查詢?yōu)榭談t條件為真。v使用EXISTS謂詞的子查詢結(jié)果其內(nèi)容并不重要,子查詢結(jié)果記錄的多少也不重要,只要區(qū)分結(jié)果中有和無記錄即可。v相關(guān)子查詢一般是

溫馨提示

  • 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

提交評論