MySQLのカラム・テーブル別名のASとは?使い方とAS省略など

MySQL MySQL

MySQLのASを使うと、カラムやテーブルに別名をつけることができます。
この記事ではASの解説やカラムやテーブルに実際にASをつけると、どのような動作をするか書いています。

MySQLのバージョン8.0.32で、動作を検証しています。

カラムにASをつけて別名にする

テーブルのカラムにASをつけて使ってみます。
ASをつけることで、データが返ってくる時のカラム名を変えることができます。

usersというテーブルに下記のようにデータが入っています。

id name age birthday
1 taro 25 1998-01-01
2 jiro 23 2000-01-01
3 hanako 26 1997-01-01

この時にnameカラムにASをつけて、カラム名を別名にしてみます。

SELECT name AS userName FROM users;

実行すると、下記のように返ってきたカラム名が指定したuserNameになりました。

mysql> SELECT name AS userName FROM users;
+----------+
| userName |
+----------+
| taro     |
| jiro     |
| hanako   |
+----------+
3 rows in set (0.00 sec)

関数の結果に別名をつける

関数を実行した結果にも別名をつけることができます。
例えば、usersテーブルの行の件数をCOUNT関数でカウントしたときです。

下記のようにASを使って、別名をつけることができます。

mysql> SELECT count(*) AS userCount FROM users;
+-----------+
| userCount |
+-----------+
|         3 |
+-----------+
1 row in set (0.00 sec)

userCountというカラム名で結果が返ってきました。
このように結果を取得する時に、わかりやすいカラム名をつけることができます。

値に別名をつける

適当な値をSELECTしたときにも、下記のように使うことができます。

mysql> SELECT 'test123' AS test;
+---------+
| test    |
+---------+
| test123 |
+---------+
1 row in set (0.00 sec)

テーブルにASをつけて別名にする

テーブルにもASをつけることで、別名にすることができます。

SELECT * FROM users AS u;

このように、テーブル名の後ろにASを使って、別名をつけることができます。
今回はusersテーブルにASを指定して、uという名前をつけました。

基本的には、あまり単体のテーブルで使うことはないかと思います。

テーブルの結合(JOIN)のときにASを使う

テーブルの結合時にはASを使うことがよくあります。
テーブル名を省略することで、SQLを短く見やすくできます。

postsという名前のテーブルには、下記のようにデータが入っています。

id user_id title memo
1 1 テスト テストメッセージ
2 1 テスト2 テストメッセージ2

このテーブルを、先ほどのusersテーブルと結合してみます。

SELECT * FROM posts AS p 
  JOIN users AS u ON p.user_id = u.id

postsテーブルをpという別名にして、usersテーブルにuという別名をつけました。
その後に、別名を使ってONで結合条件を指定しました。

実行すると、下記のようにデータが表示されました。

mysql> SELECT * FROM posts AS p JOIN users AS u ON p.user_id = u.id;
+----+---------+------------+---------------------------+----+------+------+------------+
| id | user_id | title      | memo                      | id | name | age  | birthday   |
+----+---------+------------+---------------------------+----+------+------+------------+
|  1 |       1 | テスト     | テストメッセージ          |  1 | taro |   25 | 1998-01-01 |
|  2 |       1 | テスト2    | テストメッセージ2         |  1 | taro |   25 | 1998-01-01 |
+----+---------+------------+---------------------------+----+------+------+------------+
2 rows in set (0.00 sec)

このように、ASを使うことでテーブル名を省略して結合し、データ取得することができます。

ASを省略する

ASを書いて別名をつけてきましたが、ASを省略して書くこともできます。
例えば、カラムに対して使うときには、このように書いて別名をつけることもできます。

mysql> SELECT count(*) userCount FROM users AS u;
+-----------+
| userCount |
+-----------+
|         3 |
+-----------+
1 row in set (0.00 sec)

テーブルに対してのASも下記のように省略することが可能です。

mysql> SELECT * FROM posts p
    -> JOIN users u ON p.user_id = u.id;
+----+---------+------------+---------------------------+----+------+------+------------+
| id | user_id | title      | memo                      | id | name | age  | birthday   |
+----+---------+------------+---------------------------+----+------+------+------------+
|  1 |       1 | テスト     | テストメッセージ          |  1 | taro |   25 | 1998-01-01 |
|  2 |       1 | テスト2    | テストメッセージ2         |  1 | taro |   25 | 1998-01-01 |
+----+---------+------------+---------------------------+----+------+------+------------+
2 rows in set (0.00 sec)

ASがなくても、このように実行可能です。
ですが、筆者としては、つけたほうが見やすくなるので良いのではないかと思います。

MySQLのカラムとテーブルに別名をつける方法まとめ

今回はMySQLのカラムとテーブルに別名をつける方法について書きました。
記事の内容をまとめると、下記のようになります。

・カラムやテーブルにASをつけて、別名をつけることができた。
・関数の結果や値に対しても別名をつけることができた。
・ASを省略して別名をつけることもできる。

コメント

タイトルとURLをコピーしました