檢索數據
從某表中檢索某列或者多列:
SELECT 列名1,列名2,列名3
FROM 表名;
檢索所有的列,可以在實際列名的位置使用星號通配符:
SELECT *
FROM 表名;
排序檢索數據
上面檢索出來的數據順序是沒有意義的,爲了明確的排序,我們可以使用ORDER BY子句,ORDER BY子句必須是SELECT子句中最後一條子句:
SELECT 列名1
FROM 表名
ORDER BY 列名2;
經常需要按不止一列進行數據排序,例如:如果要顯示僱員清單,可能希望按姓和名排序。如果列4中的所有值都是唯一的,則不會按照列5排序:
SELECT 列名1,列名2,列名3
FROM 表名
ORDER BY 列名4,列名5;
除了可以用列名指出排序順序外,還可以按照相對列位置進行排序:
SELECT 列名1,列名2,列名3
FROM 表名
ORDER BY 2,3;
數據排序默認是升序(ascending)排序,也可以使用ODER BY子句以降序(descendng)排序。
SELECT 列名1
FROM 表名
ORDER BY 列名2 DESC;
過濾數據
使用WHERE子句
表操作中檢索出表數據的子集是經常用的,下面介紹使用WHERE子句中指定的搜索條件進行過濾:
SELECT 列名
FROM 表名
WHERE 檢索條件;
WHERE子句操作符
操作符 | 說明 |
---|---|
= | 等於 |
<> | 不等於 |
!= | 不等於 |
< | 小於 |
> | 大於 |
<= | 小於等於 |
>= | 大於等於 |
!< | 不小於 |
!> | 不大於 |
BETWEEN | 在指定的兩個值之間 |
IS NULL | 爲NULL值 |
組合WHERE子句
SQL允許給出多個WHERE子句,這些子句可以以AND子句的方式或OR子句的方式使用。
- AND操作符表示檢索滿足所有給定的過濾條件的行,
- OR操作符表示檢索匹配任一給定的過濾條件的行,
- IN操作符用來指定條件範圍
- NOT操作符用來否定它之後所跟的任何條件
用通配符進行過濾
利用通配符可以創建比較特定數據的搜索模式。
- %通配符表示任何字符出現任意次數
- _通配符只匹配單個字符而不是多個字符
- [ ]通配符用來指定一個字符集,它必須匹配指定位置的一個字符
下面的語句可以找出名字以B或L開頭的學生名字:
SELECT student_name
FROM student
WHERE student_name LIKE "[BL]%"
ORDER BY student_name;
用正則表達式進行搜索
正則表達式是用來匹配文本的特殊的字符集合的。
我們先來看一個例子:
SELECT student_name
FROM student
WHERE student_name REGEXP "[BL][a-z]+"
ORDER BY student_name;
表示匹配以B或L開頭,後面爲1個或多個小寫字母的student_name。
參考書籍:
《MySQL必知必會》 Ben Forta著
《SQL必知必會》 Ben Forta著