SQL雜俎_陪老婆一起學SQL系列_Chapter 04_查詢基礎3
阿新 • • 發佈:2020-12-09
一、WHERE語句簡單篩選
截至到目前,已經出現過的查詢語句示例中,我們都是對整張student表中的某一列或者某幾列做完整的查詢,
但實際上在業務處理過程中,往往需要新增一些限制條件來縮小範圍,獲取我們想要的查詢結果。
比如:只篩選查詢“二班”的學生資訊、“得分在60以上的學生記錄”......
語法:
SELECT <列名1>,<列名2>,...
FROM<表名>
WHERE<條件表示式>;
示例1:
--查詢所有性別為F的學生記錄 SELECT * FROM student WHERE sex = 'F'
執行結果:
示例1中,WHERE sex = ‘F’
Tips:表示式中的字串需要用 單引號(‘ ’)括起來x
在查詢的的過程中,會逐行將行中的sex的值與‘F’進行比較,滿足限制條件“=”(等於)時,
這一行記錄會被篩選出來
示例1中使用了(*)星號查詢,所以篩選出sex=‘F’行的記錄後,會返回所有列。
示例2:
--僅查詢所有性別為F的學生班級、姓名、性別 SELECT class_no AS "班級", name AS "姓名", sex AS "性別" FROM student WHERE sex = 'F'
執行結果:
相較於示例1,示例2的語句僅查出了所有性別為‘F’的學生的 班級、姓名、性別
可以想象一下這個語句的處理過程,如下圖
首先①步驟 通過語句 WHERE sex = ‘F’篩選出符合條件的行(紅色框選)
接著②步驟 語句 SELECT 指定了針對符合要求的行中需要提取的列(藍色框選)
Tips:
# 篩選條件不是必須作為查詢列,你可以嘗試一下示例2中,查詢性別列註釋掉試試看,你能成功執行麼?
執行結果有什麼不同?如果不能執行的話,你找到原因在哪了麼???
SQL中語句的順序是固定的,不按照規定順序會執行錯誤
示例3:
--僅查詢所有性別為F的學生班級、姓名、性別 --嘗試將WHERE語句放在FROM語句前 SELECT class_no AS "班級", nameAS "姓名", sex AS "性別" WHERE sex = 'F' FROM student
執行結果:
Tips:WHERE語句需要放在FROM語句之後