利用SQL語言進行簡單查詢

單表查詢-SELECT-FROM-WHERE
Select 的簡單語法形式:
Select 列名 [[, 列名] … ]
From 表名
[ Where 檢索條件 ] ;

語義:從表名所給出的表中,查詢出滿足檢索條件的元組,並按給定的列名及順序進行投影顯示。
相當於:在這裏插入圖片描述
Select語句中的select … , from… , where…, 等被稱爲子句,在以上基本形式基礎上會增加許多構成要素,也會增加許多新的子句,滿足不同的需求。

示例:檢索學生表中所有學生的信息
Select S#, Sname, Ssex, Sage, Sclass, D#
From Student ;

Select * From Student ; //如投影所有列,則可以用*來簡寫

示例:檢索學生表中所有學生的姓名及年齡
Select Sname, Sage //投影出某些列
From Student ;

示例:檢索學生表中所有年齡小於等於19歲的學生的年齡及姓名
Select Sage, Sname //投影的列可以重新排定順序
From Student
Where Sage <= 19;

檢索條件-SELECT-FROM-WHERE
其邏輯運算符用 and , or, not 來表示, 同時也要注意運算符的優先次序及括弧的使用。書寫要點是注意對自然語言檢索條件的正確理解。

示例:檢索教師表中所有工資少於1500元或者工資大於2000元 並且是03系的教師姓名?
錯誤示範:
Select Tname
From Teacher
Where Salary < 1500 or Salary > 2000 and D# = ’03’;

(這樣選出來的是工資大於2000且是三系 或 工資少於1500 的教師,這樣的結果不一定都是3系的,與題目不符)
正確示範:
Select Tname
From Teacher
Where (Salary < 1500 or Salary > 2000) and D# = ’03’;

(要善於運用括號控制優先級)

示例:求或者學過001號課程, 或者學過002號課程的學生的學號
Select S# From SC
Where C# = ‘001’ OR C#=‘002’;
(C#是字符型數據,須加引號)

示例:求既學過001號課程, 又學過002號課程的學生的學號?
錯誤示範:
Select S# From SC
Where C# = ‘001’ AND C#=‘002’;

(這樣的結果是空值)
正確示範:
Select S1.S# From SC S1, SC S2
Where S1.S# = S2.S# and S1.C#=‘001’
and S2.C#=‘002 ;

(需用到多表聯合查詢)

檢索結果之去重複記錄-SELECT DISTINCT FROM-WHERE
結果唯一性問題
關係模型不允許出現重複元組。但現實DBMS,卻允許出現重複元組,但也允許無重複元組。
在Table中要求無重複元組是通過定義Primary key或Unique來保證的;而在檢索結果中要求無重複元組, 是通過DISTINCT保留字的使用來實現的。

示例:在選課表中,檢索成績大於80分的所有學號
Select S#
From SC
Where Score > 80 ;

//有重複元組出現,比如一個同學兩門以上課程大於80
Select DISTINCT S#
From SC
Where Score > 80;

//重複元組被DISTINCT過濾掉,只保留一份

檢索結果之排序-SELECT-FROM-WHERE-ORDER BY
結果排序問題
DBMS可以對檢索結果進行排序,可以升序排列,也可以降序排列。
Select語句中結果排序是通過增加order by子句實現的
order by 列名 [asc | desc]
意義爲檢索結果按指定列名進行排序,若後跟asc或省略,則爲升序;若後跟desc, 則爲降序。

示例:按學號由小到大的順序顯示出所有學生的學號及姓名
Select S#, Sname From Student
Order By S# ASC ;

示例:檢索002號課大於80分的所有同學學號並按成績由高到低順序顯示
Select S# From SC Where C# = ‘002’ and Score > 80
Order By Score DESC ;

模糊查詢-SELECT-FROM-WHERE * LIKE *
模糊查詢問題
比如檢索姓張的學生,檢索張某某;這類查詢問題,Select語句是通過在檢
索條件中引入運算符like來表示的
含有like運算符的表達式:
列名 [not] like “字符串”
找出匹配給定字符串的字符串。其中給定字符串中可以出現%, _ 等匹配符。
匹配規則:
“%” 匹配零個或多個字符
“ _ ” 匹配任意單個字符
“ \ ” 轉義字符,用於去掉一些特殊字符的特定含義,使其被作爲普通字符看待, 如用 “ \ % ”去匹配字符%,用 \ _ 去匹配字符_

示例:檢索所有姓張的學生學號及姓名
Select S#, Sname From Student
Where Sname Like ‘張%’ ;

示例:檢索名字爲張某某的所有同學姓名
Select Sname From Student
Where Sname Like ‘張_ _ _ _’;

(兩個下劃線表示一個漢字)

示例:檢索名字不姓張的所有同學姓名
Select Sname From Student
Where Sname Not Like ‘張%’;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章