承接上篇,本文詳細解析SELECT語句的select_list、FROM、WHERE子句及邏輯運算規則,助你精準掌握查詢語意與優化技巧。
select_list:六大構成元素
*:依CREATE TABLE順序返回所有欄位。
- 自訂順序的欄位清單。
- 欄位別名:
column_name AS column_heading。
- 運算式:欄位、常數、函數、算術/位元運算任意組合。
- 內建函數或聚合函數(
COUNT、SUM、AVG等)。
- 以上任意組合。
FROM子句
- 指定查詢涉及的表,多表以逗號分隔,順序不影響結果。
- 表別名語法:
tbl_name [AS] alias_name。
例:SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 WHERE t1.name=t2.name。
- 別名不可以數字開頭;
WHERE、HAVING等後續子句必須使用別名引用。
WHERE子句:搜尋條件完整語法
基本形式:[NOT] expression comparison_operator expression
| 運算子 | 意義 |
= | 等於 |
> / < | 大於 / 小於 |
>= / <= | 大於等於 / 小於等於 |
!= / <> | 不等於 |
字串比較:<較接近字母表開頭,>較接近尾部;小寫>大寫>數字(視作業系統排序規則);尾端空格被忽略('Dirk' = 'Dirk ')。
日期比較:<表示早於,>表示晚於。
字元/日期型別必須加引號。
特殊條件運算子
IS [NOT] NULL:檢查NULL值。
[NOT] LIKE 'pattern':%(0或多字元)、_(單一字元)。DATETIME查詢建議用LIKE(如WHERE arrival_time LIKE '%9:20%')。
[NOT] BETWEEN x AND y:含邊界;若x > y則無結果。
[NOT] IN (value_list):集合成員資格檢查。
邏輯運算優先序
AND:最高優先序,除非用括號改變。
OR:次之,同樣可用括號改變順序。
AND要求兩條件皆真,OR僅需一真。複雜條件務必善用括號明確邏輯分組,避免語意歧義導致錯誤結果集。
算術運算子
掌握這些基礎語法規則,是編寫高效、正確SQL查詢的基石。下篇將探討GROUP BY、HAVING、ORDER BY、LIMIT等進階子句。
- 上一篇文章: MySQL 進階 SELECT(三):NOT、GROUP BY/HAVING、ORDER BY、LIMIT 進階用法
- 下一篇文章: MySQL進階SELECT語法深度解析(一):完整語法架構與擴展關鍵字解析
Copyright ©
程式碼之家 All Rights Reserved