Heim  >  Artikel  >  Datenbank  >  Was ist die Verwendung von as in MySQL?

Was ist die Verwendung von as in MySQL?

青灯夜游
青灯夜游Original
2022-01-06 16:02:3829394Durchsuche

In MySQL wird das Schlüsselwort „as“ verwendet, um Aliase für Datentabellen und Felder anzugeben: 1. „SELECT field name AS alias FROM data table;“, Sie können Aliase für Felder angeben FROM Data table AS alias;“ können Sie einen Alias ​​für die Tabelle angeben.

Was ist die Verwendung von as in MySQL?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Zur Vereinfachung der Abfrage stellt MySQL das Schlüsselwort AS bereit, um Aliase für Tabellen und Felder anzugeben. In diesem Abschnitt wird hauptsächlich erläutert, wie Sie einen Alias ​​für Tabellen und Felder angeben.

Wenn Sie eine MySQL-Abfrage verwenden, der Tabellenname sehr lang ist oder wenn Sie spezielle Abfragen durchführen, können Sie aus Gründen der Benutzerfreundlichkeit oder wenn dieselbe Tabelle mehrmals verwendet werden muss, einen Alias ​​für die Tabelle angeben und diesen Alias ​​verwenden um den ursprünglichen Namen der Tabelle zu ersetzen.

Geben Sie Aliase für Felder an

Manchmal sind die Namen von Spalten Ausdrücke, die die Ausgabe der Abfrage schwer verständlich machen. Um einer Spalte einen beschreibenden Namen zu geben, verwenden Sie einen Spaltenalias.

Die folgende Anweisung veranschaulicht, wie Spaltenaliase verwendet werden:

SELECT 
 字段名 AS 别名
FROM 数据表;

Um einem Feld einen Alias ​​hinzuzufügen, können Sie das Schlüsselwort AS gefolgt vom Alias ​​verwenden. Wenn der Alias ​​Leerzeichen enthält, muss er wie folgt in Anführungszeichen gesetzt werden: 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图如下所示 -

Was ist die Verwendung von as in 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

Da das Schlüsselwort AS optional ist, kann es in der Anweisung weggelassen werden. Beachten Sie, dass Sie auch Aliase für Ausdrücke verwenden können.

Werfen wir einen Blick auf die Tabelle employees in der Beispieldatenbank? Ihre Tabellenstruktur ist wie folgt:

rrreeeDie folgende Abfrage wählt den Vor- und Nachnamen der Mitarbeiter aus und kombiniert sie, um den vollständigen Namen zu generieren Name. Die Funktion CONCAT_WS wird zum Verketten von Vor- und Nachnamen verwendet. rrreee

Führen Sie den obigen Code aus und erhalten Sie die folgenden Ergebnisse -🎜rrreee🎜Im obigen Beispiel sind die Spaltenüberschriften schwer zu lesen und zu verstehen. Dem Ausgabetitel kann ein aussagekräftiger Spaltenalias zugewiesen werden, um ihn besser lesbar zu machen, z. B. die folgende Abfrage: 🎜rrreee🎜Führen Sie den obigen Code aus und erhalten Sie die folgenden Ergebnisse – 🎜rrreee🎜In MySQL können Sie ORDER BY-, <code>GROUP BY- und HAVING-Klauseln, um auf die Spalte zu verweisen. 🎜🎜Die folgende Abfrage sortiert die vollständigen Namen der Mitarbeiter in alphabetischer Reihenfolge unter Verwendung des Spaltenalias in der ORDER BY-Klausel: 🎜rrreee🎜Führen Sie den obigen Code aus und erhalten Sie die folgenden Ergebnisse -🎜rrreee🎜Die folgende Anweisung fragt ab, ob die Gesamtmenge größer ist als der Auftrag code>60000. Es verwendet Spaltenaliase in den Klauseln GROUP BY und HAVING. 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse: 🎜rrreee🎜🎜Bitte beachten Sie, dass Spaltenaliase in der WHERE-Klausel nicht verwendet werden können. Der Grund dafür ist, dass bei der Auswertung der WHERE-Klausel durch MySQL der Wert der in der SELECT-Klausel angegebenen Spalte möglicherweise noch nicht ermittelt wird. 🎜🎜🎜Aliase für Tabellen angeben🎜🎜Sie können Aliase verwenden, um Tabellen unterschiedliche Namen hinzuzufügen. Verwenden Sie das Schlüsselwort AS, um dem Tabellennamen einen Alias ​​zuzuweisen, wie in der folgenden Abfrageanweisungssyntax gezeigt: 🎜rrreee🎜Der Aliasname der Tabelle ist der Tabellenalias. Wie Spaltenaliase ist das Schlüsselwort AS optional und kann daher vollständig weggelassen werden. 🎜🎜Tabellenaliase werden im Allgemeinen in Anweisungen verwendet, die INNER JOIN-, LEFT JOIN-, self join-Klauseln und Unterabfragen enthalten. 🎜🎜Werfen wir einen Blick auf die Tabellen Kunden (customers) und Bestellungen (orders). Ihre ER-Diagramme lauten wie folgt: 🎜🎜Was ist die Verwendung von as in MySQL?🎜🎜Beide Tabellen haben die gleichen Spaltennamen: customerNumber. Wenn Sie keinen Tabellenalias verwenden, um anzugeben, in welcher Tabelle sich die Spalte customerNumber befindet, erhalten Sie beim Ausführen der Abfrage eine Fehlermeldung ähnlich der folgenden: 🎜rrreee🎜Um diesen Fehler zu vermeiden, sollten Sie Folgendes tun Verwenden Sie einen Tabellenalias, um die Spalte customerNumber zu qualifizieren: 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse: 🎜rrreee🎜Die obige Abfrage beginnt bei Kunden (customers). und Bestellungen (Bestellungen) Wählen Sie den Kundennamen und die Bestellmenge aus der Tabelle aus. Es verwendet c als Tabellenalias für die Tabelle customers und o als Tabellenalias für die Tabelle orders. Auf Spalten in den Tabellen customers und orders wird über Tabellenaliase (c und o) verwiesen. 🎜🎜Wenn Sie in der obigen Abfrage keine Aliase verwenden, müssen Sie den Tabellennamen verwenden, um auf die Spalten zu verweisen, wodurch die Abfrage wie folgt langwierig und weniger lesbar wird: 🎜rrreee🎜【Verwandte Empfehlung: 🎜MySQL-Video-Tutorial🎜 】🎜

Das obige ist der detaillierte Inhalt vonWas ist die Verwendung von as in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeutet „=“ in MySQL?Nächster Artikel:Was bedeutet „=“ in MySQL?