數(shù)據(jù)庫系統(tǒng)概論:第4章 關(guān)系數(shù)據(jù)庫標準語言——SQL語言3_第1頁
數(shù)據(jù)庫系統(tǒng)概論:第4章 關(guān)系數(shù)據(jù)庫標準語言——SQL語言3_第2頁
數(shù)據(jù)庫系統(tǒng)概論:第4章 關(guān)系數(shù)據(jù)庫標準語言——SQL語言3_第3頁
數(shù)據(jù)庫系統(tǒng)概論:第4章 關(guān)系數(shù)據(jù)庫標準語言——SQL語言3_第4頁
數(shù)據(jù)庫系統(tǒng)概論:第4章 關(guān)系數(shù)據(jù)庫標準語言——SQL語言3_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、4.3 數(shù)據(jù)查詢 SQL語言中最重要、最核心的操作就是數(shù)據(jù)查詢。關(guān)系代數(shù)的運算在關(guān)系數(shù)據(jù)庫中主要由SQL數(shù)據(jù)查詢來體現(xiàn)。 1問題提出:查找所有女生的學(xué)生學(xué)號與姓名Select sno,snameFrom studentWhere sex=女;sno,sname( sex=女 (Student)2 SELECT 語句完整的句法: 其基本格式為:SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;3其中:SELECT子句說明要查詢的數(shù)據(jù)。ALL表示篩選出數(shù)據(jù)庫表中滿足條件的所有記錄,一般情況下省略不寫。DIST

2、INCT表示輸出結(jié)果中無重復(fù)記錄。FROM子句說明要查詢的數(shù)據(jù)來源。WHERE子句指定查詢條件。GROUP BY子句表示在查詢時,可以按照某個或某些字段分組匯總。HAVING子句必須跟隨GROUP BY一起使用,表示在分組匯總時,可以根據(jù)組條件表達式篩選出滿足條件的組記錄。ORDER BY子句表示在顯示結(jié)果時,按照指定字段進行排序。ASC表示升序,DESC表示降序,省略不寫默認情況下是ASC。4 下面我們以學(xué)生選課系統(tǒng)為例說明SELECT語句的各種用法。學(xué)生表:Student(Sno,Sname,Sex,Age,Dept) 5課程表:Course(Cno,Cname,Tname,Cpno,Cr

3、edit) 6選課表:SC(Sno,Cno,Grade) 7單表查詢 1選擇表中若干列 選擇表中的全部列或部分列,這就是投影運算。 (1)查詢指定的列 【例】查詢?nèi)w學(xué)生的學(xué)號、姓名和年齡。 SELECT Sno,Sname,Age FROM Student;8【例】查詢?nèi)空n程的課程名稱和授課教師名。 SELECT Cname,Tname FROM Course;9(2)查詢?nèi)苛小纠坎樵內(nèi)空n程的詳細記錄。 SELECT * FROM Course;10(3)查詢經(jīng)過計算的值【例】查詢?nèi)w學(xué)生的姓名、性別及其出生年份。 SELECT Sname,Sex,2011-age FROM Stu

4、dent;11(4)指定別名來改變查詢結(jié)果的列標題 方法就是:在列名的后面加上一個空格或者是“as”,然后寫上它的別名。在查詢結(jié)果顯示時就用別名代替列名了。【例】查詢?nèi)w學(xué)生的姓名、性別及其出生年份。 SELECT Sname,Sex,2011-age 出生年份 FROM Student;122選擇表中若干行 選擇表中若干行,這就是選擇運算。(1)消除取值重復(fù)的行【例】查詢所有選修了課程的學(xué)生學(xué)號。 SELECT Sno FROM SC; 由于存在一名同學(xué)選修多門課程的情況,所以查詢的結(jié)果中包含了許多重復(fù)的行。如果想去掉重復(fù)的行,必須指定DISTINCT關(guān)鍵字。 SELECT DISTINCT

5、 Sno FROM SC;13(2)查詢滿足條件的元組 查詢滿足指定條件的元組可以通過WHERE子句來實現(xiàn)。使用WHERE 子句時,應(yīng)該注意以下幾點:如果該列數(shù)據(jù)類型為字符型,需要使用單引號把字符串括起來。如:WHERE Cname=java,單引號內(nèi)的字符串大小寫是有區(qū)別的。如果該列數(shù)據(jù)類型為日期型,需要使用單引號把日期括起來。如果該列數(shù)據(jù)類型為數(shù)字型,則不必用單引號。如:WHERE Age20。在WHERE子句中可以使用列名或表達式,但不能使用它的別名。14 查詢滿足條件的元組是通過WHERE子句實現(xiàn)。在WHERE子句中常用的查詢條件如表所示。查詢條件謂詞比 較=、 、 = 、 20;17

6、【例】查詢考試成績有不及格的學(xué)生的學(xué)號。 SELECT DISTINCT Sno FROM SC WHERE Grade60; 語句中使用了DISTINCT關(guān)鍵字,目的是當(dāng)某一個學(xué)生有多門課程不及格時,他的學(xué)號只顯示一次。18確定范圍(謂詞BETWEEN AND)【例】查詢年齡在16至20歲(包括16歲和20歲)之間的學(xué)生姓名和年齡。 SELECT Sname,Age FROM Student WHERE Age BETWEEN 16 AND 20;19【例】查詢年齡不在16至20歲之間的學(xué)生姓名和年齡。 SELECT Sname,Age FROM Student WHERE Age NOT

7、BETWEEN 16 AND 20;20確定集合(謂詞IN)【例】查詢計算機系、日語系和管理系的學(xué)生姓名和性別。SELECT Sname,SexFROM StudentWHERE Dept IN (計算機系, 日語系, 管理系);21【例】查詢既不是計算機系、日語系,也不是管理系的學(xué)生姓名和性別。 SELECT Sname,Sex FROM Student WHERE Dept NOT IN (計算機系, 日語系, 管理系);22字符匹配(謂詞LIKE) 謂詞LIKE可以用來進行字符串的匹配。其中:% (百分號)代表任意長度(長度可以為0)的字符串。 _(下橫線)代表任意單個字符。23【例】查

8、詢所有姓張的學(xué)生姓名、年齡和系別名稱。 SELECT Sname,Age,Dept FROM Student WHERE Sname LIKE 張%; 如果換成NOT LIKE,表示不姓張的同學(xué)。 24【例】查詢姓名中,第二個漢字是“七”的學(xué)生姓名和年齡。 SELECT Sname,Age FROM Student WHERE Sname LIKE _七% ;25【例】查詢以“jsp_”開頭,且倒數(shù)第2個字符為g的課程的詳細信息。 SELECT * FROM Course WHERE Cname LIKE jsp_%g_ ESCAPE ;26涉及空值的查詢【例】查詢選修了課程,但沒有成績的學(xué)生學(xué)號和相應(yīng)的課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;注意:這里“IS”不能用等號(=)代替。27【例】查詢選修了課程,并且有成績的學(xué)生學(xué)號和相應(yīng)的課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;28多重條件查詢 邏輯運算符AND和OR可用來聯(lián)結(jié)多個查詢條件。AND的優(yōu)先級高于OR,但用戶可以通過括號來改變優(yōu)先級?!纠坎樵?nèi)照Z系女同學(xué)的姓名和年齡。 SELECT Sn

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論