SELECT DISTINCT (SQL SELECT DISTINCT Statement)
一個資料表的某欄位中可能會有多個紀錄都是相同值的情況,在 SELECT 查詢語句中我們可使用 DISTINCT 關鍵字過濾重複出現的紀錄值。
1 | SELECT DISTINCT table_column1, table_column2... |
從 customers 資料表中查詢顧客分佈在哪幾個縣市
1 | SELECT DISTINCT `City` FROM `customers`; |
SELECT INTO 用來從某資料表查詢所得之資料集結果新增到另一個新建的資料表中。此一指令常用來複製備份資料表,或將資料表輸出至另一資料庫中。
1 | SELECT table_column1, table_column2, table_column3... |
Example
1 | //例如,我們現在想備份顧客資料表 customers: |
** MySQL 資料庫不支援 SELECT INTO,但你可以用 INSERT INTO…SELECT 來達到同樣的功能。
萬用字元是與 LIKE 運算子一起搭配使用的,我們可以利用萬用字元來建立一個模式 (pattern),進而依此模式為條件來進行資料查詢。
| 萬用字元 | 意義 |
|---|---|
| % | 用來代替「零個」至「多個」字元 |
| _ | 用來代替「一個」字元 |
| [charlist] | 用來代替「一個」在列舉範圍內的字元 |
| [^charlist] 或 [!charlist] | 用來代替「一個」不在列舉範圍內的字元 |
| 模式 | 模式意義 |
|---|
| abc% | 所有以 abc 開頭的字串。如 abc、abcx 或 abcxxx 等字串皆符合此模式。 |
| %abc% | 所有包含 abc 的字串。如 abc、xxabcy 或 abcxxxx 等字串皆符合此模式。 |
| a_ | 以 a 為開頭的兩個字。如 ab、ac 或 ad 等字串皆符合此模式,但 a 就不符合囉,因為此模式限定 a 之後一定要接任一字元。 |
| a[bcd] | 以 a 為開頭其後接著 b 或 c 或 d 其中一個字元。如 ab、ac 或 ad 等字串皆符合此模式,但 ae 就不符合囉。 |
| a[^bcd] | 以 a 為開頭其後接著非 b 或 c 或 d 的任何一個字元。如 ax、ay 或 az 等字串皆符合此模式,但 ab 就不符合囉。 |
例如,找住在台北市的客戶:
1 | SELECT * FROM `customers` WHERE City LIKE '台北%'; |
UNION 運算子用來將兩個(以上) SQL 查詢的結果合併起來,而由 UNION 查詢中各別 SQL 語句所產生的欄位需要是相同的資料型別及順序。
UNION 就是像是 OR (聯集),如果紀錄存在於第一個查詢結果集或第二個查詢結果集中,就會被取出。
UNION 與 JOIN 不同的地方在於,JOIN 是作橫向結合 (合併多個資料表的各欄位);而 UNION 則是作垂直結合 (合併多個資料表中的紀錄)。
1 | SELECT column_name(s) FROM table_name1 |
1 | CREATE TABLE `products_taiwan` ( |
1 | CREATE TABLE `products_china` ( |
1 | SELECT P_Name FROM `products_taiwan` UNION SELECT P_Name FROM `products_china`; |
1 | SELECT * FROM `products_taiwan` UNION ALL SELECT * FROM `products_china`; |
1 | SELECT P_Name FROM `products_taiwan` UNION ALL SELECT P_Name FROM `products_china`; |
UNIQUE 用來保證欄位在資料表中的唯一性,約束資料表中的欄位不能有重複的資料。
1 | CREATE TABLE customer ( |
C_Id 及 Name 這兩個欄位共同唯一,CONSTRAINT 後面接著的即是此唯一鍵的名稱。
1 | CREATE TABLE `customers` ( |
1 | ALTER TABLE `customers` ADD UNIQUE (C_Id); |
替唯一鍵命名與多欄位的唯一限制:
1 | ALTER TABLE `customers` ADD CONSTRAINT u_Customer_Id UNIQUE (C_Id, Name); |
刪除C_Id
1 | ALTER TABLE `customers` DROP INDEX C_Id; |
刪除u_Customer_Id;
1 | ALTER TABLE `customers` DROP INDEX u_Customer_Id; |
在 SELECT 查詢語句使用 WHERE 關鍵字搭配運算子來取出 “符合條件” 的紀錄值
1 | SELECT table_column1, table_column2... |
Example
1 | SELECT * FROM customers WHERE Name = '王二'; |
### 多個查詢條件式
1 | SELECT table_column1, table_column2... |
1 | SELECT `C_Id`, `Name`, `City`, `Address`, `Phone`, `Salary` FROM `customers` WHERE City = '台北市' AND Salary >= 5000; |