1. 程式人生 > SQL入門教學 >10 SQL Where

10 SQL Where

1. 定義

維基百科:SQLWhere 指令用於篩選出滿足條件的結果集。

解釋:資料表中的資料往往比較繁雜,在查詢的時候需要按照一定的條件進行篩選,Where 可以有效地剔除無用資料,保留被需要的資料。

2. 前言

本小節,我們將一起學習 SQL Where

Where 可以搭配很多 SQL 指令使用,因此它的知識點是比較多的,本節我們主要介紹 Where 與 Select 是如何搭配使用的。
本節的主要知識點有:1.運算子;2.單條件查詢;3.連線符;4.多條件查詢。

本小節測試資料如下,請先在資料庫中執行:

DROP TABLE IF EXISTS imooc_user;
CREATE
TABLE imooc_user ( username varchar(20), age int ); INSERT INTO imooc_user(username,age) VALUES('pedro', 23), ('mike', 18), ('jerry', 26), ('Mary', 32);

3. 運算子

使用Where時,後面需搭配條件子句,條件字句由條件欄位、運算子和條件值三部分組成,它們的關係如下:

[col] [condition] [val]

其中col表示資料表中的欄位,condition是運算子,val是條件值。

例如:age > 18 就是一個基本的條件子句,age是條件欄位,> 是運算子,而 18 就是條件值,該條件語句表示選取
年齡大於 18 的使用者。

上面的例子中使用到了運算子 >,> 是一種常見的單值比較運算子,類似的還有:

運算子 描述 運算子 描述
= 等於 <> 不等於
> 大於 != 不等於
< 小於 !< 不小於
>= 大於等於 !> 不大於
<= 小於等於

運算子的多樣性導致了條件子句的多樣性。

不同的條件欄位搭配不同的運算子,讓 Where 的條件過濾變得更為強大。

4. 單條件查詢

Where 後面僅有一個條件子句的查詢稱為單條件查詢。

使用語法如下:

SELECT [col1],[col2] from [table_name]
WHERE [col3] [condition] [val];

其中col是欄位名稱,table_name是資料表名稱,condition是運算子,val是值,數字1、2表示多個欄位。

4.1 例1 單條件查詢使用者 1

請書寫 SQL 語句,查詢imooc_user表中年齡超過25的使用者,並返回使用者名稱。

分析:

由題幹可知,age 是條件欄位,25 是條件值,需篩選出年齡超過25的使用者,所以運算子選擇 >。

語句

整理可得語句如下:

SELECT username from imooc_user WHERE age > 25;

結果如下:

+----------+
| username |
+----------+
| jerry    |
| Mary     |
+----------+

4.2 例2 單條件查詢使用者 2

請書寫 SQL 語句,查詢imooc_user表中年齡等於18的使用者名稱。

分析

與上述分析大致相同,但是篩選條件變成了等於,因此運算子選擇 =。

語句

SELECT username from imooc_user WHERE age = 18;

結果如下:

+----------+
| username |
+----------+
| mike     |
+----------+

5. 連線符

Where 後面的條件子句不僅可以為單條件子句,還可以是多條件子句。

多條件子句需要通過AND或者OR兩個連線符進行連線。

這兩個的運算子的作用如下:

運算子 描述
AND 連線兩個條件表示式,若二者都為True,返回True,否則返回False
OR 連線兩個條件表示式,若二者都為False,返回False,否則返回True

AND 和 OR 兩個連線符讓多條件查詢變得更加靈活,從而讓 Where 也變得更加靈活。

6. 多條件查詢

Where 後面有多個條件子句的查詢稱為多條件查詢。

6.1 例3 多條件查詢使用者 1

請書寫 SQL 語句,查詢imooc_user表中年齡大於等於18但小於25的使用者名稱。

分析

條件欄位仍是 age,但篩選條件從一個變成了兩個,第一個條件,age 要大於等於 18,第二個條件,age 要小於 25。

兩個條件之間使用 AND 連線。

語句

整理語句如下:

SELECT username from imooc_user
WHERE age >= 18
AND age < 25;

結果如下:

+----------+
| username |
+----------+
| pedro    |
| mike     |
+----------+

6.2 例4 多條件查詢使用者2

請書寫 SQL 語句,查詢imooc_user表中年齡小於20或者年齡大於25的使用者名稱。

分析

條件欄位仍是 age,但篩選條件從一個變成了兩個,且二者的關係發生了變化,第一個條件,age 要小於 20,第二個條件,age 要大於 25。

兩個條件之間使用 OR 連線。

語句

整理語句如下:

SELECT username from imooc_user
WHERE age < 20
OR age > 25;

結果如下:

+----------+
| username |
+----------+
| mike     |
| jerry    |
| Mary     |
+----------+

6.3 例5 多條件查詢使用者 3

多條件的查詢還可以更加靈活,上述的例子都只涉及到單條件欄位的查詢,有時候需要從多個欄位進行結果篩選。

請書寫 SQL 語句,查詢imooc_user表中年齡在2530之間(包含25和30),並且使用者名稱為jerry的使用者。

分析

條件欄位變成了兩個——username 和 age,username 只有一個條件,等於jerry,即 =jerry,age 有兩個條件,既要大於等於25,
還要小於等於30,即 >=25,<=30。

三個條件之間均用 AND連線。

語句

整理語句如下:

SELECT username from imooc_user
WHERE username = 'jerry'
AND age >= 25
AND age <= 30;

結果如下:

+----------+
| username |
+----------+
| jerry    |
+----------+

注意: SQL中字串用單引號包括,即''

7. 小結

  • Where 是使用最為頻繁的指令之一,它的用法極其重要,絕大多數情況下,查詢資料都需要新增過濾條件,請務必熟練掌握它。
  • AND 和 OR 的搭配非常靈活,可以說是兩兩搭配無窮盡也。