【MySQL】AS - テーブル・カラムの別名

【MySQL】AS - テーブル・カラムの別名

MySQLのASについて解説します。

検証環境

AS

AS句は“テーブルやカラムに別名を付ける句”です。

別名によって、クエリを短縮することができます。

基本構文

対象 AS 別名

対象はテーブル名やカラム名です。

ASに続く別名を付けることができます。

サンプル

次のshopsテーブルとitemsテーブルについて、テーブルとカラムに別名を付けるサンプルを示します。

mysql> DESC shops;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int         | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> DESC items;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int         | NO   | PRI | NULL    | auto_increment |
| name    | varchar(20) | YES  |     | NULL    |                |
| price   | int         | YES  |     | NULL    |                |
| stock   | int         | YES  |     | NULL    |                |
| shop_id | int         | YES  | MUL | NULL    |                |
+---------+-------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

テーブルに別名を付ける

mysql> SELECT
    -> shops.name, fruits.name, fruits.price, fruits.stock
    -> FROM shops
    ___ih_hl_start
    -> INNER JOIN items AS fruits ON shops.id = fruits.shop_id;
    ___ih_hl_end
+-------------+-----------+-------+-------+
| name        | name      | price | stock |
+-------------+-----------+-------+-------+
| Fruits Shop | Apple     |   200 |    10 |
| Fruits Shop | Orange    |   150 |     3 |
| Food Shop   | Pineapple |  1100 |     3 |
| Food Shop   | Grapes    |  3500 |     1 |
+-------------+-----------+-------+-------+
4 rows in set (0.00 sec)

4行目のitems AS fruitsの部分でitemsテーブルに別名としてfruitsを付けています。

別名は結合条件の部分(shops.id = fruits.shop_id)のように使うことが可能です。

カラムに別名を付ける

mysql> SELECT
    ___ih_hl_start
    -> shops.name, items.name AS fruits, items.price, items.stock
    ___ih_hl_end
    -> FROM shops
    -> INNER JOIN items ON shops.id = items.shop_id;
+-------------+-----------+-------+-------+
| name        | fruits    | price | stock |
+-------------+-----------+-------+-------+
| Fruits Shop | Apple     |   200 |    10 |
| Fruits Shop | Orange    |   150 |     3 |
| Food Shop   | Pineapple |  1100 |     3 |
| Food Shop   | Grapes    |  3500 |     1 |
+-------------+-----------+-------+-------+
4 rows in set (0.00 sec)

2行目のitems.name AS fruitsの部分でitemsテーブルのnameカラムに別名としてfruitsを付けています。

クエリ実行結果のように、カラムに別名を付けると表の列名に適用されます。

また、カラムの別名はGROUP BY句やORDER BY句、HAVING句で使用できますが、WHERE句では使用できません。