Skip to main content

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 AngelesSan Diego 的資料
  • 可以串連多個 ANDORNOT 來取得符合條件的資料(混用的話記得用括弧分開)
  • NOT 加在任何條件前面,包含 BETWEENLIKEIN ,可以得到相反的結果

排序

SELECT <column_name>, <column_name2>, ... FROM  <table_name>
ORDER BY <column_name>, <column_name2, ... ASC|DESC;
  • 可以根據數字、字母進行排序
  • 可以多欄進行排序,排序順序優先序由左至右
  • 可以用 ASCDESC 表示順向或逆向排序
  • 多欄排序狀況下,個別欄位可以指定不同的順逆向排序 (如 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