SQL學習(二)

檢索數據

從某表中檢索某列或者多列:

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著

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章