最簡 SELECT 語法
SELECT column_list FROM table_name [WHERE condition];
column_list:指定列名,用逗號分隔;* 代表所有列(生產環境慎用)
WHERE:可選,行級過濾條件
比較運算符速查
| 運算符 | 含義 |
= | 等於 |
> / < / >= / <= | 大於/小於/大於等於/小於等於 |
<> | 不等於(標準 SQL) |
LIKE 模糊查詢:通配符核心
| 通配符 | 含義 | 範例 | 匹配示例 |
% | 任意長度字符(含 0) | first LIKE 'Er%' | Eric, Erica, Er |
_ | 單個任意字符 | last LIKE '_mith' | Smith, smith |
[範圍] | 單字符在集合內 | code LIKE '[A-C]%' | A..., B..., C... |
[^範圍] | 單字符不在集合 | code LIKE '[^0-9]%' | 非數字開頭 |
實戰範例
-- 精確匹配
SELECT * FROM empinfo WHERE first = 'Eric';
-- 前綴模糊(可用索引)
SELECT first, last, city FROM empinfo WHERE first LIKE 'Er%';
-- 後綴模糊(通常掃表)
SELECT first, last FROM empinfo WHERE last LIKE '%s';
-- 包含模糊(全表掃描)
SELECT * FROM empinfo WHERE first LIKE '%ric%';
性能提示
- 前綴
LIKE 'abc%' 可利用 B+ 樹索引 Seek
- 前導通配符
LIKE '%abc' 或 LIKE '%abc%' 導致 Index Scan
- 大量模糊查詢考慮全文索引或 Elasticsearch
LIKE 預設不區分大小寫(取決於 Collation),區分用 COLLATE Latin1_General_CS_AS