1. 程式人生 > 實用技巧 >SQL雜俎_陪老婆一起學SQL系列_Chapter 04_查詢基礎3

SQL雜俎_陪老婆一起學SQL系列_Chapter 04_查詢基礎3

一、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 "班級",
    name  
AS "姓名", sex AS "性別" WHERE sex = 'F' FROM student

執行結果:

Tips:WHERE語句需要放在FROM語句之後