Dans MySQL, le mot-clé "as" est utilisé pour spécifier des alias pour les tables de données et les champs. Syntaxe : 1. "SELECT nom du champ AS alias FROM table de données ;", vous pouvez spécifier des alias pour les champs ; FROM Data table AS alias;", vous pouvez spécifier un alias pour la table.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
Pour faciliter les requêtes, MySQL fournit le mot-clé AS pour spécifier les alias des tables et des champs. Cette section explique principalement comment spécifier un alias pour les tables et les champs.
Lors de l'utilisation d'une requête MySQL, lorsque le nom de la table est très long ou lors de l'exécution de requêtes spéciales, pour des raisons de commodité d'utilisation ou lorsque la même table doit être utilisée plusieurs fois, vous pouvez spécifier un alias pour la table et utiliser cet alias pour remplacer le nom d'origine de la table.
Parfois, les noms de colonnes sont des expressions qui rendent le résultat de la requête difficile à comprendre. Pour donner à une colonne un nom descriptif, utilisez un alias de colonne.
L'instruction suivante illustre comment utiliser les alias de colonne :
SELECT 字段名 AS 别名 FROM 数据表;
Pour ajouter un alias à un champ, vous pouvez utiliser le mot-clé AS
suivi de l'alias. Si l'alias contient des espaces, il doit être cité comme suit : 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
étant facultatif, il peut être omis de la déclaration. Notez que vous pouvez également utiliser des alias sur les expressions. Jetons un coup d'œil à la table employés
dans l'exemple de base de données. Sa structure de table est la suivante -Exécutez le code ci-dessus et obtenez les résultats suivants -🎜rrreee🎜Dans l'exemple ci-dessus, les en-têtes de colonnes sont difficiles à lire et à comprendre. Le titre de sortie peut se voir attribuer un alias de colonne significatif pour le rendre plus lisible, comme la requête suivante : 🎜rrreee🎜Exécutez le code ci-dessus et obtenez les résultats suivants - 🎜rrreee🎜Dans MySQL, vous pouvez utiliser ORDER BY, <code>GROUP BY
et HAVING
pour référencer la colonne. 🎜🎜La requête suivante trie les noms complets des employés par ordre alphabétique en utilisant l'alias de colonne dans la clause ORDER BY
: 🎜rrreee🎜Exécutez le code ci-dessus et obtenez les résultats suivants -🎜rrreee🎜L'instruction suivante demande que le montant total est supérieur à la commande code>60000. Il utilise des alias de colonnes dans les clauses GROUP BY
et HAVING
. 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -🎜rrreee🎜🎜Veuillez noter que les alias de colonne ne peuvent pas être utilisés dans la clause WHERE
. La raison en est que lorsque MySQL évalue la clause WHERE
, la valeur de la colonne spécifiée dans la clause SELECT
peut ne pas encore être déterminée. 🎜🎜🎜Spécifiez des alias pour les tables🎜🎜Vous pouvez utiliser des alias pour ajouter différents noms aux tables. Utilisez le mot-clé AS
pour attribuer un alias au nom de la table, comme indiqué dans la syntaxe d'instruction de requête suivante : 🎜rrreee🎜Le nom d'alias de la table est l'alias de la table. Comme les alias de colonnes, le mot-clé AS
est facultatif, il peut donc être complètement omis. 🎜🎜Les alias de table sont généralement utilisés dans les instructions contenant des clauses INNER JOIN
, LEFT JOIN
, self join
et des sous-requêtes. 🎜🎜Jetons un coup d'œil aux tableaux des clients (customers
) et des commandes (orders
) Leurs diagrammes ER sont les suivants -🎜🎜🎜🎜Les deux tables ont les mêmes noms de colonnes : numéro client
. Si vous n'utilisez pas d'alias de table pour spécifier dans quelle table se trouve la colonne customerNumber
, vous recevrez un message d'erreur similaire au suivant lors de l'exécution de la requête : 🎜rrreee🎜Pour éviter cette erreur, vous devez utilisez un alias de table pour qualifier la colonne customerNumber
: 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants : 🎜rrreee🎜La requête ci-dessus démarre à partir des clients (clients
) et commandes (orders
) Sélectionnez le nom du client et la quantité commandée dans le tableau. Il utilise c
comme alias de table pour la table clients
et o
comme alias de table pour la table commandes
. Les colonnes des tables clients
et commandes
sont référencées via des alias de table (c
et o
). 🎜🎜Si vous n'utilisez pas d'alias dans la requête ci-dessus, vous devez utiliser le nom de la table pour faire référence à ses colonnes, ce qui rendra la requête longue et moins lisible, comme suit -🎜rrreee🎜【Recommandation associée : 🎜Tutoriel vidéo MySQL🎜 】🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!