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) 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 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
) は、テーブルから顧客名と注文数量を選択します。 customers
テーブルのテーブル エイリアスとして c
を使用し、orders
テーブルのテーブル エイリアスとして o
を使用します。 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
[関連する推奨事項 :mysql ビデオ チュートリアル ]
以上がmysqlでのasの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。