MySQL - 别名
MySQL 别名
MySQL 别名用于为 SQL 中的表或列分配一个临时名称,称为别名。
别名使用 AS 关键字创建,用于引用特定的表或列而不更改其原始名称。当处理名称相似的表或列时,它们可以使查询更易于阅读。
为列名添加别名
为列名添加别名用于为表中的列分配不同的名称。
语法
列别名的基本语法如下 -
SELECT column_name AS alias_name FROM table_name;
示例
首先,我们使用以下查询创建一个名为 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 INTO 语句将值插入上面创建的表中,如下所示 -
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 | 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 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
示例
在下面的查询中,我们创建了两个别名,一个用于 ID 列,一个用于 AGE 列 -
SELECT ID AS CUST_ID, AGE AS CUST_AGE FROM CUSTOMERS;
输出
上述查询的输出如下所示 -
CUST_ID | CUST_AGE |
---|---|
1 | 32 |
2 | 25 |
3 | 23 |
4 | 25 |
5 | 27 |
6 | 22 |
7 | 24 |
示例
如果我们希望别名包含空格,可以使用双引号,如以下查询所示 -
SELECT ID AS "CUST ID", AGE AS "CUST AGE" FROM CUSTOMERS;
输出
执行给定查询后,输出显示如下 -
CUST ID | CUST AGE |
---|---|
1 | 32 |
2 | 25 |
3 | 23 |
4 | 25 |
5 | 27 |
6 | 22 |
7 | 24 |
示例
在下面的查询中,我们创建一个名为"INFORMATION"的别名,它合并了两列(AGE,ADDRESS)-
SELECT ID, CONCAT(AGE, ', ', ADDRESS) AS INFORMATION FROM CUSTOMERS;
输出
执行上述查询时,输出如下-
ID | INFORMATION |
---|---|
1 | 32, Ahmedabad |
2 | 25, Delhi |
3 | 23, Kota |
4 | 25, Mumbai |
5 | 27, Bhopal |
6 | 22, Hyderabad |
7 | 24, Indore |
表名别名
表名别名用于为表分配不同的名称。
语法
以下是表别名的语法 -
SELECT column1, column2.... FROM table_name AS alias_name
示例
让我们使用以下查询创建另一个名为 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 INTO 语句将值插入上面创建的表中,如下所示 -
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 | 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 表的别名为"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 | NAME | AGE | AMOUNT |
---|---|---|---|
3 | Kaushik | 23 | 1500 |
2 | Khilan | 25 | 1560 |
3 | Kaushik | 23 | 3000 |
4 | Chaitali | 25 | 2060 |
使用自连接进行别名化
MySQL 自连接用于将一个表与其自身连接起来,就像两个独立的表一样。自连接中的别名用于在 SQL 语句中临时重命名表,以避免混淆。
语法
以下是使用别名执行自连接的语法 -
SELECT 列名 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 |