1. IN
運算符 IN 允許我們在 WHERE 子句中過濾某個字段的多個值。
它的基本形式如下:
SELECT [列名1, 列名2, ...] FROM 表名 WHERE 字段名 IN(值1, 值2, ...)
下面是一個簡單的示例,找到ID爲2,3,4,9的記錄
SELECT * FROM employee WHERE id IN (2, 3, 4, 9);
結果如下:
2. LIKE
當我們需要查詢 包含 xxxx 的所有記錄時,就需要使用 LIKE 子句。
說明:
- LIKE 子句中的 % 類似於正則表達式中的 * ,匹配 0個或多個字符 。
- LIKE 子句中的 _ 匹配任意單個字符。
- LIKE 子句中如果沒有 % 和 _ ,相當於運算符 = 的效果。
下面是簡單的示例:
SELECT * FROM employee WHERE name LIKE '%小%'; # 匹配名字中帶小的記錄
SELECT * FROM employee WHERE name LIKE '張_'; # 匹配姓張且名字爲兩個字的記錄
3. 排序
使用關鍵字 ORDER BY 可以對查詢結果按照一個或者多個字段進行排序。
ASC (正序), DESC (倒序) 默認爲 ASC
對於表 employee 按照工資排序, 可以使用如下sql語句:
SELECT * FROM employee ORDER BY salary;
結果如下:
注意: 如果指定多列作爲排序的條件,則表示如果第一個列的值相同,則按照後面的列的順序進行排序。
默認爲正序(從小到大)的順序排序,想要實現倒序的效果,可以使用關鍵字 DESC 。
SELECT * FROM employee ORDER BY salary DESC;
4. 分頁
如果數據比較多,想分爲多頁的方式顯示數據,則可以使用 LIMIT 關鍵字。它的基本形式如下:
SELECT [列1, 列2, ...] FROM 表名 LIMIT offset, row_count
- offset : 表示偏移的位置
- row_count :表示最多顯示的行數
如果顯示第N頁的內容,每頁顯示M條記錄,則可以使用公式
offset = (N - 1) * M
這裏值得注意的是,如果想要從第一個數據開始,需要指定的索引(offset) 爲0。
下面簡單的示例:
SELECT * FROM employee ORDER BY salary DESC LIMIT 0, 4; # 獲取第1頁的數據
SELECT * FROM employee ORDER BY salary DESC LIMIT 4, 4; # 獲取第2頁的數據
SELECT * FROM employee ORDER BY salary DESC LIMIT 8, 4; # 獲取第3頁的數據
示例中,從表employee中按照的工資(salary)的高低(由高到低)顯示前3頁的數據,每頁4條記錄。