>  기사  >  데이터 베이스  >  mysql에서 as의 사용법은 무엇입니까

mysql에서 as의 사용법은 무엇입니까

青灯夜游
青灯夜游원래의
2022-01-06 16:02:3829395검색

mysql에서 "as" 키워드는 데이터 테이블과 필드에 대한 별칭을 지정하는 데 사용됩니다. 구문: 1. "SELECT field name AS alias FROM data table;", 필드에 대한 별칭을 지정할 수 있습니다. FROM Data table AS alias;", 테이블의 별칭을 지정할 수 있습니다.

mysql에서 as의 사용법은 무엇입니까

이 튜토리얼의 운영 환경: 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 BYGROUP BYHAVING子句中的列别名来引用该列。

以下查询使用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 BYHAVING子句中使用列别名。

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 JOINLEFT JOINself join子句和子查询的语句中使用表别名。

下面来看看客户(customers)和订单(orders)表,它们的ER图如下所示 -

mysql에서 as의 사용법은 무엇입니까

两个表都具有相同的列名称: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表的表别名。customersorders表中的列通过表别名(co

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

위 코드를 실행하여 다음과 같은 결과를 얻습니다. -🎜rrreee🎜위 예에서는 열 헤더가 읽고 이해하기 어렵습니다. 출력 제목에 의미 있는 열 별칭을 할당하여 읽기 쉽게 만들 수 있습니다(예: 다음 쿼리): 🎜rrreee🎜위 코드를 실행하고 다음 결과를 얻습니다. - 🎜rrreee🎜MySQL에서는 ORDER BY, <code>GROUP BYHAVING 절을 사용하여 열을 참조합니다. 🎜🎜다음 쿼리는 ORDER BY 절의 열 별칭을 사용하여 직원의 전체 이름을 알파벳 순서로 정렬합니다. 🎜rrreee🎜위 코드를 실행하고 다음 결과를 얻습니다. -🎜rrreee🎜다음 문 총 금액이 code>60000 순서보다 큰 쿼리입니다. GROUP BYHAVING 절에 열 별칭을 사용합니다. 🎜rrreee🎜위 쿼리문을 실행하면 다음과 같은 결과가 나옵니다. -🎜rrreee🎜🎜 WHERE 절에는 열 별칭을 사용할 수 없다는 점에 유의하세요. 그 이유는 MySQL이 WHERE 절을 평가할 때 SELECT 절에 지정된 열의 값이 아직 결정되지 않았을 수 있기 때문입니다. 🎜🎜🎜테이블에 대한 별칭 지정🎜🎜별칭을 사용하여 테이블에 다른 이름을 추가할 수 있습니다. 다음 쿼리 문 구문에 표시된 대로 AS 키워드를 사용하여 테이블 이름에 별칭을 할당합니다. 🎜rrreee🎜테이블의 별칭 이름은 테이블 별칭입니다. 열 별칭과 마찬가지로 AS 키워드는 선택 사항이므로 완전히 생략할 수 있습니다. 🎜🎜테이블 별칭은 일반적으로 INNER JOIN, LEFT JOIN, self Join 절 및 하위 쿼리가 포함된 문에 사용됩니다. 🎜🎜고객(customers) 및 주문(orders) 테이블을 살펴보겠습니다. 해당 ER 다이어그램은 다음과 같습니다.🎜🎜mysql에서 as의 사용법은 무엇입니까🎜🎜두 테이블 모두 동일한 열 이름을 가집니다: 고객번호. 테이블 별칭을 사용하여 customerNumber 열이 있는 테이블을 지정하지 않으면 쿼리를 실행할 때 다음과 유사한 오류 메시지가 표시됩니다. 🎜rrreee🎜이 오류를 방지하려면 다음을 수행해야 합니다. 테이블 별칭을 사용하여 customerNumber 열을 한정합니다. 🎜rrreee🎜위 쿼리 문을 실행하고 다음 결과를 얻습니다. 🎜rrreee🎜위 쿼리는 고객(customers)에서 시작됩니다. 및 주문(orders) 표에서 고객 이름과 주문 수량을 선택합니다. ccustomers 테이블의 테이블 별칭으로 사용하고 oorders 테이블의 테이블 별칭으로 사용합니다. customersorders 테이블의 열은 테이블 별칭(co)을 통해 참조됩니다. 🎜🎜위 쿼리에서 별칭을 사용하지 않는 경우 테이블 이름을 사용하여 해당 열을 참조해야 합니다. 이렇게 하면 쿼리가 길어지고 가독성이 떨어지게 됩니다. -🎜rrreee🎜【관련 권장 사항: 🎜mysql 비디오 튜토리얼🎜 】🎜

위 내용은 mysql에서 as의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.