[SQL]SQL-查詢基礎

選取查詢使用SELECT指令,用於將一 個或多個資料表的特定資料選取出來
這也是非常常用的功能,所以特別開一篇詳細說明

SELECT {*|欄位} [AS別名]
FROM {table_name}
[WHERE 過濾條件]
[GROUP BY 群組項目,…]
[ORDER BY 排序條件[ASC|DESC], …]
[LIMIT [offset,]rows]

大括號為必填欄位,例如要選擇那些內容?從哪個table裡選擇
中括號代表的是選填欄位,一些條件之類的

WHERE


WHERE用來建立篩選的條件,可用的條件分為

  1. 文字查詢

  2. 數字查詢

  3. 日期查詢

  4. 多重查詢


文字查詢


很像if判斷式,用 = 或是 != 來判斷,文字部分要用單引號 ' 框起來
SELECT * FROM books WHERE booksAuthor ='Allan';

以上是從books 這個資料表,選擇出符合booksAuthor = 'Allan' 的所有欄位

當條件比較模糊的時候,就把等號改成 LIKE 來做比對,有兩種方式

  • % (百分比)代表前/後任何 n 個字元

    • WHERE 欄位 LIKE'[%]文字[%]'



  • _ (底線) 代表前/後任何1 個字元

    • WHERE 欄位 LIKE'[_]文字[_]'




數字查詢


同樣可以使用 = 和 != 做比對,同時也可以用 >, < 以及BETWEEN 做比對
且數字部分不加單引號
SELECT * FROM books WHERE booksPrice > 750;

上面的語法是把books裡面,價錢 > 750的書給找出來

SELECT * FROM books WHERE booksPages BETWEEN 400 AND 800;

把books裡面,頁數介於400~800的書給查詢出來

日期查詢


剛才的查詢方式也可以用在日期上面,日期視同文字,需要加上單引號
也可以用 > 或是 < 找出特定日期前後的內容
SELECT * FROM books WHERE booksPublish
BETWEEN '2011-01-01' AND'2011-06-30';

多重查詢


和PHP一樣我們可以用 AND 和 OR 做多個條件的查詢
找出售價$1,000 內,頁數大於400的書 

SELECT
* FROM books
WHERE booksPages > 400 AND booksPrice
找出書名為「天」開頭,作者為Frank的書

SELECT * FROM books
WHERE booksName LIKE '天%' OR booksAuthor ='Frank';

AS 子句使用


我們可以在SQL指令中做一些計算來取得原本不存在的欄位
例如原本我們想知道這本書墊泡麵,或是壓桌腳的CP值高不高?
所以我們用 booksPages/booksPrice 來了解這本書 一頁要多少錢?
結果如下

01

可以看到是他是成功把所求的值找出來了,但是欄位名稱就是booksPages/booksPrice
太長了不方便,所以我們用 AS 來賦予他一個代稱'cost'

所以AS的用處就是:暫存在某個不存在的 欄位,以方便我們顯示
例如下面的圖片顯示

02

以上就是關於一些常用到的基礎查詢方式
下一篇要介紹的是mySQL裡面的內建函數,還有進階的查詢方法

留言