SQL 别名语法
您可以通过给数据库中的表或列指定另一个伪名来临时重命名它们。这个伪名被称为 别名 。使用别名是为了在SQL语句中引用特定的表或列,而不改变它们在数据库中的原始名称。别名是使用 AS 关键字来创建的。
当在复杂的查询中涉及到多个表或具有相似名称的列时,别名尤其有用。通过给这些表或列分配临时名称,您可以使您的SQL查询更具可读性和易于理解。
别名表的名称
别名用于在SQL查询中以更短或更有意义的名称来引用数据库表。表示表别名的基本语法如下。
SELECT column1, column2....
FROM table_name AS alias_name
示例
假设我们使用以下的CREATE TABLE语句在SQL数据库中创建了一个名为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);
insert INTO CUSTOMERS VALUES(2, 'Khilan', 25, 'Delhi', 1500.00);
insert INTO CUSTOMERS VALUES(3, 'kaushik', 23, 'Kota', 2000.00);
insert INTO CUSTOMERS VALUES(4, 'Chaitali', 25, 'Mumbai', 6500.00);
insert INTO CUSTOMERS VALUES(5, 'Hardik', 27, 'Bhopal', 8500.00);
insert INTO CUSTOMERS VALUES(6, 'Komal', 22, 'MP', 4500.00);
insert INTO CUSTOMERS VALUES(7, 'Muffy', 24, 'Indore', 10000.00);
如果我们使用SELECT语句验证CUSTOMERS表的内容,我们可以观察到插入的记录如下所示:
表1 - CUSTOMERS Table 的内容如下。
SELECT * from CUSTOMERS;
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 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 | MP | 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);
insert INTO ORDERS VALUES(100, '2009-10-08 00:00:00', 3, 1500);
insert INTO ORDERS VALUES(101, '2009-11-20 00:00:00', 2, 1560);
insert INTO ORDERS VALUES(103, '2008-05-20 00:00:00', 4, 2060);
如果我们使用SELECT语句验证ORDERS表的内容,我们可以观察到插入的记录如下所示:
表2 – ORDERS表如下所示。
SELECT * from ORDERS;
+-----+---------------------+-------------+--------+
|OID | DATES | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 100 | 2009-10-08 00:00:00 | 3 | 1500 |
| 101 | 2009-11-20 00:00:00 | 2 | 1560 |
| 102 | 2009-10-08 00:00:00 | 3 | 3000 |
| 103 | 2008-05-20 00:00:00 | 4 | 2060 |
+-----+---------------------+-------------+--------+
现在,下面的查询显示了使用表别名的用法。 表别名 是将客户表(customers table)别名为’C’,并将订单表(orders table)别名为’O’ –
SELECT C.ID, C.NAME, C.AGE, O.AMOUNT
FROM CUSTOMERS AS C, ORDERS AS O
WHERE C.ID = O.CUSTOMER_ID;
输出
这将产生以下结果。
+----+----------+-----+--------+
| ID | NAME | AGE | AMOUNT |
+----+----------+-----+--------+
| 3 | kaushik | 23 | 3000 |
| 2 | Khilan | 25 | 1560 |
| 3 | kaushik | 23 | 1500 |
| 4 | Chaitali | 25 | 2060 |
+----+----------+-----+--------+
别名列名
我们在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自连接用于将一个表与其自身连接,就好像这个表是两个表一样。为了完成这个操作,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 | EARNS_HIGHER | EARNS_LESS | LOWER_SALARY |
+----+--------------+------------+--------------+
| 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 |
+----+--------------+------------+--------------+