共計 5215 個字符,預計需要花費 14 分鐘才能閱讀完成。
本篇內容主要講解“mysql 中 as 怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“mysql 中 as 怎么用”吧!
在 mysql 中,“as”關鍵字用于為數據表和字段指定別名,語法:1、“SELECT 字段名 AS 別名 FROM 數據表;”,可為字段指定別名;2、“SELECT 字段名 FROM 數據表 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)
employees;
執行上面代碼,得到以下結果 –
mysql SELECT
CONCAT_WS(, , lastName, firstname)
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`
employees;
執行上面代碼,得到以下結果 –
mysql SELECT
CONCAT_WS(, , lastName, firstname) AS `Full name`
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`
employees
ORDER BY
`Full name`;
執行上面代碼,得到以下結果 –
mysql SELECT
CONCAT_WS( , lastName, firstname) `Full name`
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
orderdetails
GROUP BY
`Order no.`
HAVING
total 60000;
執行上面查詢語句,得到以下結果 –
mysql SELECT
orderNumber `Order no.`,
SUM(priceEach * quantityOrdered) total
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
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
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
customers
INNER JOIN orders ON customers.customerNumber = orders.customerNumber
GROUP BY
customerName
ORDER BY
total DESC
到此,相信大家對“mysql 中 as 怎么用”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!