mysql中as的用法是什麼

青灯夜游
發布: 2022-01-06 16:02:38
原創
29150 人瀏覽過

在mysql中,“as”關鍵字用於為資料表和欄位指定別名,語法:1、“SELECT 欄位名AS 別名FROM 資料表;”,可為欄位指定別名;2、“ SELECT 欄位名FROM 資料表AS 別名;”,可為表指定別名。

mysql中as的用法是什麼

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

為了查詢方便,MySQL 提供了 AS 關鍵字來指定資料表和欄位。本節主要講解如何為表格和欄位指定一個別名。

在使用MySQL查詢時,當表名很長或執行一些特殊查詢的時候,為了方便操作或需要多次使用相同的表時,可以為表指定別名,用這個別名代替表原來的名稱。

為欄位指定別名

有時,列的名稱是一些表達式,使查詢的輸出很難理解。要給列一個描述性名稱,可以使用列別名。

以下語句說明如何使用列別名:

SELECT 
 字段名 AS 别名
FROM 数据表;
登入後複製

要為欄位新增別名,可以使用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
登入後複製

【相關推薦:mysql影片教學

以上是mysql中as的用法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!