SQL 語法筆記
選擇、查詢及條件
一般選擇
SELECT <column_name>, <column_name2>, ... FROM <table_name>;
- From 後面可以接另外一個查詢字串,不一定要
table_name
不重複選擇
SELECT DISTINCT <column_name>, <column_name2>, ... FROM <table_name>;
- 你可以用
COUNT()
來數不重複項目的數量
# 通用寫法
SELECT COUNT(*) AS <CustomName> FROM (SELECT DISTINCT <column_name>, <column_name2>, ... FROM <table_name>);
# 非Access才可以用的寫法
SELECT COUNT(DISTINCT <column_name>, <column_name2>, ...) FROM <table_name>;
過濾結果
使用 WHERE
SELECT <column_name> FROM <table_name> WHERE <condition>;
e.g:
SELECT * FROM Customers
WHERE CustomerID > 80;
- 你可以用
=
、<
、>
、<=
、>=
、<>
(不等於)作為條件判斷 - 條件後面接
BETWEEN
相當等於>=
和<=
的組合,例如BETWEEN 50 AND 60
- 條件後面接
LIKE
則是用於找 pattern,例如LIKE s%
等於「找出以 s 為開頭的的字串」 - 條件後面接
IN
則是用於找至少已知的一組資料,例如IN("Los Angeles", "San Diego")
就是在找所選條件裡面包含Los Angeles
或San Diego
的資料 - 可以串連多個
AND
或OR
或NOT
來取得符合條件的資料(混用的話記得用括弧分開) -
NOT
加在任何條件前面,包含BETWEEN
、LIKE
或IN
,可以得到相反的結果
排序
SELECT <column_name>, <column_name2>, ... FROM <table_name>
ORDER BY <column_name>, <column_name2, ... ASC|DESC;
- 可以根據數字、字母進行排序
- 可以多欄進行排序,排序順序優先序由左至右
- 可以用
ASC
、DESC
表示順向或逆向排序 - 多欄排序狀況下,個別欄位可以指定不同的順逆向排序 (如
ORDER BY <column_name> ASC, <column_name2> DESC
資料操作(插入、更新、移除)
插入資料
INSERT INTO <table_name>(<column_name>, <column_name2> ...)
VALUES (<value1>, <value2>, ...);
- 可以省略
column_name
,資料庫會依照資料表 Column 的順序插入 - 可以只選定特定的 Column 插入資料
- 可以一次插入多組資料,像這樣:
INSERT INTO <table_name>(<column_name>, <column_name2> ...)
VALUES
(<value1>, <value2>, ...),
(<value1>, <value2>, ...),
...;
NULL
如果資料插入後,有些欄位沒有資料,那該欄上的資料會變成 NULL
如果要查詢的話,可以用 IS NULL
或 IS NOT NULL
來做條件篩選,例如:
SELECT <column_name>
FROM <table_name>
WHERE <column_name> IS NULL | IS NOT NULL;
NULL 不是空白,也不是空格,NULL 就是空,完全沒有資料的意思
更新資料
UPDATE <table_name>
SET <column1> = <value1>, <column2> = <value2>, ...
WHERE <condition>
- 更新符合條件的數值,所以
WHERE
是必要的,不寫WHERE
則是整張資料表的資料都會更新
刪除資料
DELETE FROM <table_name> WHERE <condition>
- 同
UPDATE
,不寫WHERE
就是清空整張表的資料 - 如果要讓整張表 Bang 不見是
DROP TABLE <table_name>
而不是DELETE FROM