mysql에서 "as" 키워드는 데이터 테이블과 필드에 대한 별칭을 지정하는 데 사용됩니다. 구문: 1. "SELECT field name AS alias FROM data table;", 필드에 대한 별칭을 지정할 수 있습니다. FROM Data table AS alias;", 테이블의 별칭을 지정할 수 있습니다.
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
쿼리 편의를 위해 MySQL은 테이블과 필드에 별칭을 지정하는 AS 키워드를 제공합니다. 이 섹션에서는 주로 테이블과 필드에 별칭을 지정하는 방법을 설명합니다.
MySQL 쿼리를 사용할 때, 테이블 이름이 매우 길거나, 일부 특수 쿼리를 수행할 때, 작업의 편의를 위해 또는 동일한 테이블을 여러 번 사용해야 하는 경우, 테이블에 대한 별칭을 지정하고 이 별칭을 사용할 수 있습니다. 테이블의 원래 이름을 바꾸려면
때때로 열 이름은 쿼리 출력을 이해하기 어렵게 만드는 표현식입니다. 열에 설명적인 이름을 지정하려면 열 별칭을 사용하세요.
다음 문은 열 별칭을 사용하는 방법을 보여줍니다.
SELECT 字段名 AS 别名 FROM 数据表;
필드에 별칭을 추가하려면 AS
키워드 뒤에 별칭을 사용할 수 있습니다. 별칭에 공백이 포함된 경우 다음과 같이 인용해야 합니다. AS
关键词后跟别名。 如果别名包含空格,则必须引用以下内容:
SELECT 字段名 AS `别名` FROM 数据表;
因为AS
关键字是可选的,可以在语句中省略它。 请注意,还可以在表达式上使用别名。
我们来看看示例数据库中的employees
表,其表结构如下所示 -
mysql> desc employees; +----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+-------+ | employeeNumber | int(11) | NO | PRI | NULL | | | lastName | varchar(50) | NO | | NULL | | | firstName | varchar(50) | NO | | NULL | | | extension | varchar(10) | NO | | NULL | | | email | varchar(100) | NO | | NULL | | | officeCode | varchar(10) | NO | MUL | NULL | | | reportsTo | int(11) | YES | MUL | NULL | | | jobTitle | varchar(50) | NO | | NULL | | +----------------+--------------+------+-----+---------+-------+ 8 rows in set
以下查询选择员工的名字和姓氏,并将其组合起来生成全名。 CONCAT_WS
函数用于连接名字和姓氏。
SELECT CONCAT_WS(', ', lastName, firstname) FROM employees;
执行上面代码,得到以下结果 -
mysql> SELECT CONCAT_WS(', ', lastName, firstname) FROM employees; +--------------------------------------+ | CONCAT_WS(', ', lastName, firstname) | +--------------------------------------+ | Murphy, Diane | | Patterson, Mary | | Firrelli, Jeff | | Patterson, William | | Bondur, Gerard | | Bow, Anthony | | Jennings, Leslie | | Thompson, Leslie | | Firrelli, Julie | | Patterson, Steve | | Tseng, Foon Yue | | Vanauf, George | | Bondur, Loui | | Hernandez, Gerard | | Castillo, Pamela | | Bott, Larry | | Jones, Barry | | Fixter, Andy | | Marsh, Peter | | King, Tom | | Nishi, Mami | | Kato, Yoshimi | | Gerard, Martin | +--------------------------------------+ 23 rows in set
在上面示例中,列标题很难阅读理解。可以为输出的标题分配一个有意义的列别名,以使其更可读,如以下查询:
SELECT CONCAT_WS(', ', lastName, firstname) AS `Full name` FROM employees;
执行上面代码,得到以下结果 -
mysql> SELECT CONCAT_WS(', ', lastName, firstname) AS `Full name` FROM employees; +--------------------+ | Full name | +--------------------+ | Murphy, Diane | | Patterson, Mary | | Firrelli, Jeff | ... ... | King, Tom | | Nishi, Mami | | Kato, Yoshimi | | Gerard, Martin | +--------------------+ 23 rows in set
在MySQL中,可以使用ORDER BY
,GROUP BY
和HAVING
子句中的列别名来引用该列。
以下查询使用ORDER BY
子句中的列别名按字母顺序排列员工的全名:
SELECT CONCAT_WS(' ', lastName, firstname) `Full name` FROM employees ORDER BY `Full name`;
执行上面代码,得到以下结果 -
mysql> SELECT CONCAT_WS(' ', lastName, firstname) `Full name` FROM employees ORDER BY `Full name`; +-------------------+ | Full name | +-------------------+ | Bondur Gerard | | Bondur Loui | | Bott Larry | | Bow Anthony | | Castillo Pamela | | Firrelli Jeff | | Firrelli Julie | | Fixter Andy | | Gerard Martin | | Hernandez Gerard | | Jennings Leslie | | Jones Barry | | Kato Yoshimi | | King Tom | | Marsh Peter | | Murphy Diane | | Nishi Mami | | Patterson Mary | | Patterson Steve | | Patterson William | | Thompson Leslie | | Tseng Foon Yue | | Vanauf George | +-------------------+ 23 rows in set
以下语句查询总金额大于60000
的订单。它在GROUP BY
和HAVING
子句中使用列别名。
SELECT orderNumber `Order no.`, SUM(priceEach * quantityOrdered) total FROM orderdetails GROUP BY `Order no.` HAVING total > 60000;
执行上面查询语句,得到以下结果 -
mysql> SELECT orderNumber `Order no.`, SUM(priceEach * quantityOrdered) total FROM orderdetails GROUP BY `Order no.` HAVING total > 60000; +-----------+----------+ | Order no. | total | +-----------+----------+ | 10165 | 67392.85 | | 10287 | 61402.00 | | 10310 | 61234.67 | +-----------+----------+ 3 rows in set
请注意,不能在
WHERE
子句中使用列别名。原因是当MySQL评估求值WHERE
子句时,SELECT
子句中指定的列的值可能尚未确定。
可以使用别名为表添加不同的名称。使用AS
关键字在表名称分配别名,如下查询语句语法:
SELECT 字段名 FROM 数据表 AS 别名;
该表的别名称为表别名。像列别名一样,AS
关键字是可选的,所以完全可以省略它。
一般在包含INNER JOIN
,LEFT JOIN
,self join
子句和子查询的语句中使用表别名。
下面来看看客户(customers
)和订单(orders
)表,它们的ER图如下所示 -
两个表都具有相同的列名称:customerNumber
。如果不使用表别名来指定是哪个表中的customerNumber
列,则执行查询时将收到类似以下错误消息:
Error Code: 1052. Column 'customerNumber' in on clause is ambiguous
为避免此错误,应该使用表别名来限定customerNumber
列:
SELECT customerName, COUNT(o.orderNumber) total FROM customers c INNER JOIN orders o ON c.customerNumber = o.customerNumber GROUP BY customerName HAVING total >=5 ORDER BY total DESC;
执行上面查询语句,得到以下结果 -
mysql> SELECT customerName, COUNT(o.orderNumber) total FROM customers c INNER JOIN orders o ON c.customerNumber = o.customerNumber GROUP BY customerName HAVING total >=5 ORDER BY total DESC; +------------------------------+-------+ | customerName | total | +------------------------------+-------+ | Euro+ Shopping Channel | 26 | | Mini Gifts Distributors Ltd. | 17 | | Reims Collectables | 5 | | Down Under Souveniers, Inc | 5 | | Danish Wholesale Imports | 5 | | Australian Collectors, Co. | 5 | | Dragon Souveniers, Ltd. | 5 | +------------------------------+-------+ 7 rows in set
上面的查询从客户(customers
)和订单(orders
)表中选择客户名称和订单数量。 它使用c
作为customers
表的表别名,o
作为orders
表的表别名。customers
和orders
表中的列通过表别名(c
和o
SELECT customers.customerName, COUNT(orders.orderNumber) total FROM customers INNER JOIN orders ON customers.customerNumber = orders.customerNumber GROUP BY customerName ORDER BY total DESC
AS
키워드는 선택 사항이므로 구문에서 생략할 수 있습니다. 표현식에 별칭을 사용할 수도 있습니다. 샘플 데이터베이스의 employees
테이블을 살펴보겠습니다. 테이블 구조는 다음과 같습니다. -rrreee다음 쿼리는 직원의 이름과 성을 선택하고 이를 결합하여 전체를 생성합니다. 이름. CONCAT_WS
함수는 이름과 성을 연결하는 데 사용됩니다. rrreee
ORDER BY, <code>GROUP BY
및 HAVING
절을 사용하여 열을 참조합니다. 🎜🎜다음 쿼리는 ORDER BY
절의 열 별칭을 사용하여 직원의 전체 이름을 알파벳 순서로 정렬합니다. 🎜rrreee🎜위 코드를 실행하고 다음 결과를 얻습니다. -🎜rrreee🎜다음 문 총 금액이 code>60000 순서보다 큰 쿼리입니다. GROUP BY
및 HAVING
절에 열 별칭을 사용합니다. 🎜rrreee🎜위 쿼리문을 실행하면 다음과 같은 결과가 나옵니다. -🎜rrreee🎜🎜 WHERE
절에는 열 별칭을 사용할 수 없다는 점에 유의하세요. 그 이유는 MySQL이 WHERE
절을 평가할 때 SELECT
절에 지정된 열의 값이 아직 결정되지 않았을 수 있기 때문입니다. 🎜🎜🎜테이블에 대한 별칭 지정🎜🎜별칭을 사용하여 테이블에 다른 이름을 추가할 수 있습니다. 다음 쿼리 문 구문에 표시된 대로 AS
키워드를 사용하여 테이블 이름에 별칭을 할당합니다. 🎜rrreee🎜테이블의 별칭 이름은 테이블 별칭입니다. 열 별칭과 마찬가지로 AS
키워드는 선택 사항이므로 완전히 생략할 수 있습니다. 🎜🎜테이블 별칭은 일반적으로 INNER JOIN
, LEFT JOIN
, self Join
절 및 하위 쿼리가 포함된 문에 사용됩니다. 🎜🎜고객(customers
) 및 주문(orders
) 테이블을 살펴보겠습니다. 해당 ER 다이어그램은 다음과 같습니다.🎜🎜🎜🎜두 테이블 모두 동일한 열 이름을 가집니다: 고객번호
. 테이블 별칭을 사용하여 customerNumber
열이 있는 테이블을 지정하지 않으면 쿼리를 실행할 때 다음과 유사한 오류 메시지가 표시됩니다. 🎜rrreee🎜이 오류를 방지하려면 다음을 수행해야 합니다. 테이블 별칭을 사용하여 customerNumber
열을 한정합니다. 🎜rrreee🎜위 쿼리 문을 실행하고 다음 결과를 얻습니다. 🎜rrreee🎜위 쿼리는 고객(customers
)에서 시작됩니다. 및 주문(orders
) 표에서 고객 이름과 주문 수량을 선택합니다. c
를 customers
테이블의 테이블 별칭으로 사용하고 o
를 orders
테이블의 테이블 별칭으로 사용합니다. customers
및 orders
테이블의 열은 테이블 별칭(c
및 o
)을 통해 참조됩니다. 🎜🎜위 쿼리에서 별칭을 사용하지 않는 경우 테이블 이름을 사용하여 해당 열을 참조해야 합니다. 이렇게 하면 쿼리가 길어지고 가독성이 떨어지게 됩니다. -🎜rrreee🎜【관련 권장 사항: 🎜mysql 비디오 튜토리얼🎜 】🎜위 내용은 mysql에서 as의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!