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を省略して別名をつけることもできる。
コメント