MySql UNION 運算子 (SQL UNION Operator)

UNION 運算子用來將兩個(以上) SQL 查詢的結果合併起來,而由 UNION 查詢中各別 SQL 語句所產生的欄位需要是相同的資料型別及順序。

UNION 就是像是 OR (聯集),如果紀錄存在於第一個查詢結果集或第二個查詢結果集中,就會被取出。

UNION 與 JOIN 不同的地方在於,JOIN 是作橫向結合 (合併多個資料表的各欄位);而 UNION 則是作垂直結合 (合併多個資料表中的紀錄)。

1
2
3
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2;
1
2
3
4
CREATE TABLE `products_taiwan` (
P_Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
P_Name VARCHAR(30) NOT NULL
);
1
2
3
4
CREATE TABLE `products_china` (
P_Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
P_Name VARCHAR(30) NOT NULL
);
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`;

MySql UNIQUE 唯一限制 (SQL UNIQUE Constraint)

UNIQUE 唯一限制 (SQL UNIQUE Constraint)

UNIQUE 用來保證欄位在資料表中的唯一性,約束資料表中的欄位不能有重複的資料。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE customer (
C_Id INT NOT NULL UNIQUE,
Name VARCHAR(50) NOT NULL,
Address VARCHAR(255),
Phone VARCHAR(20)
);
//or
CREATE TABLE `customers` (
C_Id INT NOT NULL,
Name VARCHAR(50) NOT NULL,
Address VARCHAR(255),
Phone VARCHAR(20),
UNIQUE (C_Id)
);

替唯一鍵命名與多欄位的唯一限制

C_Id 及 Name 這兩個欄位共同唯一,CONSTRAINT 後面接著的即是此唯一鍵的名稱。

1
2
3
4
5
6
7
CREATE TABLE `customers` (
C_Id INT NOT NULL,
Name VARCHAR(50) NOT NULL,
Address VARCHAR(255),
Phone VARCHAR(20),
CONSTRAINT u_Customer_Id UNIQUE (C_Id, Name)
);

更改資料表限制 ALTER TABLE

1
ALTER TABLE `customers` ADD UNIQUE (C_Id);
替唯一鍵命名與多欄位的唯一限制:
1
ALTER TABLE `customers` ADD CONSTRAINT u_Customer_Id UNIQUE (C_Id, Name);

移除資料表限制 ALTER TABLE…

刪除C_Id

1
ALTER TABLE `customers` DROP INDEX C_Id;

刪除u_Customer_Id;

1
2
3
ALTER TABLE `customers` DROP INDEX u_Customer_Id;
//CONSTRAINT
ALTER TABLE `customers` DROP CONSTRAINT u_Customer_Id;

MySql UPDATE

UPDATE 修改資料表中的資料

1
2
3
4
UPDATE table_name
SET column1=value1, column2=value2, column3=value3···
WHERE some_column=some_value;

WHERE 條件式

1
2
3
UPDATE `customers`
SET Name="Lara", Address="zzz路29號", Phone="0910-123456",City="台中市"
WHERE C_Id=5;

MySql WHERE

WHERE 查詢子句 (SQL WHERE Clause)

在 SELECT 查詢語句使用 WHERE 關鍵字搭配運算子來取出 “符合條件” 的紀錄值

WHERE 語法 (SQL WHERE Syntax)

1
2
3
SELECT table_column1, table_column2...
FROM table_name
WHERE column_name operator value;

Example

1
SELECT * FROM customers WHERE Name = '王二';
### 多個查詢條件式
  • AND 運算子表示其左右兩條件皆需符合
  • OR 運算子表示其左右兩條件至少需符合一個
1
2
3
4
5
SELECT table_column1, table_column2...
FROM table_name
WHERE column_name1 operator value1
AND column_name2 operator value2
[AND|OR]...;
Example
1
SELECT `C_Id`, `Name`, `City`, `Address`, `Phone`, `Salary` FROM `customers` WHERE City = '台北市' AND Salary >= 5000;

MySql TOP, LIMIT, ROWNUM 子句 (SQL TOP, LIMIT, ROWNUM Clause)

TOP, LIMIT, ROWNUM 子句 (SQL TOP, LIMIT, ROWNUM Clause)

TOP (SQL Server), LIMIT (MySQL), ROWNUM (Oracle) 這些語法其實都是同樣的功能,都是用來限制您的 SQL 查詢語句最多只影響幾筆資料,而不同的語法則只因不同的資料庫實作時採用不同的名稱。

指令

1
2
SELECT table_column1, table_column2...
FROM table_name LIMIT number;

例如:取出前兩筆資料

1
SELECT * FROM `customers` LIMIT 2;