Maison  >  Article  >  base de données  >  A quoi sert comme dans MySQL

A quoi sert comme dans MySQL

青灯夜游
青灯夜游original
2022-01-06 16:02:3829395parcourir

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.

A quoi sert comme dans MySQL

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.

Spécifiez des alias pour les champs

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 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图如下所示 -

A quoi sert comme dans MySQL

两个表都具有相同的列名称: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

Le mot-clé 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 -

rrreeeLa requête suivante sélectionne le prénom et le nom des employés et les combine pour générer le nom complet. nom. La fonction CONCAT_WS permet de concaténer les noms et prénoms. rrreee

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 -🎜🎜A quoi sert comme dans MySQL🎜🎜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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Que signifie "=" dans MySQL ?Article suivant:Que signifie "=" dans MySQL ?