SQL - 別名語法



您可以透過為資料庫中的表或列賦予另一個虛擬名稱來臨時重新命名它們。此虛擬名稱稱為別名。使用別名的目的是在 SQL 語句中引用特定的表或列,而無需更改資料庫中它們的原始名稱。別名使用AS關鍵字建立。

在處理涉及多個表或具有相似名稱的列的複雜查詢時,別名尤其有用。透過為這些表或列分配臨時名稱,您可以使您的 SQL 查詢更具可讀性和易於理解。

SQL 別名

別名用於在 SQL 查詢中使用較短或更有意義的名稱來引用資料庫表。表別名的基本語法如下所示。

SELECT column1, column2....
FROM table_name AS alias_name;

示例

假設我們在 MySQL 資料庫中使用 CREATE TABLE 語句建立了一個名為 CUSTOMERS 的表,如下所示:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

以下查詢使用 INSERT 語句將值插入此表:

INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00),
(2, 'Khilan', 25, 'Delhi', 1500.00),
(3, 'Kaushik', 23, 'Kota', 2000.00),
(4, 'Chaitali', 25, 'Mumbai', 6500.00),
(5, 'Hardik', 27, 'Bhopal', 8500.00),
(6, 'Komal', 22, 'Hyderabad', 4500.00),
(7, 'Muffy', 24, 'Indore', 10000.00);

獲得的 CUSTOMERS 表如下所示:

ID 名稱 年齡 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

現在,我們使用 CREATE TABLE 語句建立第二個表 ORDERS,如下所示:

CREATE TABLE ORDERS (
   OID INT NOT NULL,
   DATES DATETIME NOT NULL,
   CUSTOMER_ID INT NOT NULL,
   AMOUNT INT NOT NULL,      
   PRIMARY KEY (OID)
);

以下查詢使用 INSERT 語句將值插入此表:

INSERT INTO ORDERS VALUES
(102, '2009-10-08 00:00:00', 3, 3000),
(100, '2009-10-08 00:00:00', 3, 1500),
(101, '2009-11-20 00:00:00', 2, 1560),
(103, '2008-05-20 00:00:00', 4, 2060);

獲得的 ORDERS 表如下所示:

OID 日期 CUSTOMER_ID 金額
102 2009-10-08 00:00:00 3 3000.00
100 2009-10-08 00:00:00 3 1500.00
101 2009-11-20 00:00:00 2 1560.00
103 2008-05-20 00:00:00 4 2060.00

現在,以下查詢顯示了表別名的用法。CUSTOMERS 表被命名為 'C',ORDERS 表被命名為 'O':

SELECT C.ID, C.NAME, C.AGE, O.AMOUNT 
FROM CUSTOMERS AS C, ORDERS AS O
WHERE  C.ID = O.CUSTOMER_ID;

輸出

這將產生以下結果:

ID 名稱 年齡 金額
3 Kaushik 23 3000.00
3 Kaushik 23 1500.00
2 Khilan 25 1560.00
4 Chaitali 25 2060.00

列名別名

我們還可以使用 SQL 中的列名別名在查詢的結果集中為其提供不同的名稱。別名的基本語法如下所示:

SELECT column_name AS alias_name
FROM table_name;

示例

以下是列別名的用法。這裡,NAME 列被命名為 'CUSTOMER_NAME':

SELECT ID AS CUSTOMER_ID, NAME AS CUSTOMER_NAME
FROM CUSTOMERS;

輸出

這將產生以下結果:

CUSTOMER_ID CUSTOMER_NAME
1 Ramesh
2 Khilan
3 Kaushik
4 Chaitali
5 Hardik
6 Komal
7 Muffy

使用自連線的別名

SQL 自連線用於將表本身連線到自身,就好像該表是兩個表一樣。在此過程中,我們需要使用其中一個表的別名作為臨時名稱,以避免混淆。此重新命名使用別名完成。

語法

以下是使用別名執行自連線的語法:

SELECT column_name(s)
FROM my_table a, my_table b
ON a.join_column = b.join_column;

示例

現在,讓我們使用以下自連線查詢將 CUSTOMERS 表連線到自身。我們的目標是根據客戶的收入建立客戶之間的關係。在這裡,我們使用列名和表名的別名:

SELECT 
   a.ID, b.NAME as EARNS_HIGHER, 
   a.NAME as EARNS_LESS, 
   a.SALARY as LOWER_SALARY
FROM CUSTOMERS a, CUSTOMERS b
WHERE a.SALARY < b.SALARY;

輸出

上述查詢的輸出如下所示:

ID 收入更高 收入較低 較低薪水
2 Ramesh Khilan 1500.00
2 Kaushik Khilan 1500.00
6 Chaitali Komal 4500.00
3 Chaitali Kaushik 2000.00
2 Chaitali Khilan 1500.00
1 Chaitali Ramesh 2000.00
6 Hardik Komal 4500.00
4 Hardik Chaitali 6500.00
3 Hardik Kaushik 2000.00
2 Hardik Khilan 1500.00
1 Hardik Ramesh 2000.00
3 Komal Kaushik 2000.00
2 Komal Khilan 1500.00
1 Komal Ramesh 2000.00
6 Muffy Komal 4500.00
5 Muffy Hardik 8500.00
4 Muffy Chaitali 6500.00
3 Muffy Kaushik 2000.00
2 Muffy Khilan 1500.00
1 Muffy Ramesh 2000.00
廣告