ホームページ  >  記事  >  データベース  >  mysqlでのasの使用法は何ですか

mysqlでのasの使用法は何ですか

青灯夜游
青灯夜游オリジナル
2022-01-06 16:02:3829410ブラウズ

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

In 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 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 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) は、テーブルから顧客名と注文数量を選択します。 customers テーブルのテーブル エイリアスとして c を使用し、orders テーブルのテーブル エイリアスとして o を使用します。 customers テーブルと orders テーブルの列は、テーブル エイリアス (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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。