SQL 别名语法

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 |
+----+--------------+------------+--------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程