【SQL】AS句を使ってカラムやテーブルに別名をつける

カラムやテーブルに自分で好きな名前をつけたい時は、SQLのAS句を使うことで実現できます。

本記事では、AS句の使い方や別名をつけるメリット、AS句の便利なポイントについて詳しく解説しています。

SQLで別名をつけるメリット

メリットは見た目が分かりやすくなるからです。データ分析で使うダッシュボードは多くの人が目にします。よって、非エンジニアでも一目で理解できるカラム名にすることで、コミュニケーションコストを最小限にできるのです。

例えば、何もしないと下記のように表示されるテーブルが存在したとします。

idnameadminlast_sign_in_at
1山田02021-01-01
2鈴木12021-05-30
3佐藤02020-08-10
usersテーブル

adminlast_sign_in_atはパッと見で何を指しているのか分かりづらいです。

そこで、ASを使って別名を指定することで、下記のように分かりやすくできます。

番号名前管理者権限最後にログインした日時
1山田02021-01-01
2鈴木12021-05-30
3佐藤02020-08-10
usersテーブル

メリットが分かったところで、AS句の使い方について見ていきましょう。

カラムに別名をつける方法

まずは、ASを使ってカラムに別名をつける方法を見ていきます。

サンプルデータ

下記のusersテーブルをサンプルデータとして用意します。

idnameageaddress
1山田25東京都
2鈴木34神奈川県
3佐藤28北海道
usersテーブル

1つのカラムを指定

1つのカラムを別名に変える場合の基本構文は下記です。

SQL
SELECT カラム名 AS 別名
FROM テーブル名;

カラム名の後にASをつけて、その後に名前を付けます。名前は英語でも日本語でも可能ですが、日本語の場合はクォーテーションで囲む必要があります。そして、SQLの実行結果では、ここで付けた名前がそのままカラム名として表示されます。

検索クエリ

usersテーブルのnameカラムの名称を「名前」に変更してレコードを取得する

SQL
SELECT name AS '名前'
FROM users;

実行結果

名前
山田
鈴木
佐藤
usersテーブル

カラムの名称がnameから名前に変わっていることが分かります。

複数のカラムを指定

複数のカラムを別名に変える場合の基本構文は下記です。

SQL
SELECT カラム名 AS '別名', カラム名 AS '別名'
FROM テーブル名;

このように、カンマ区切りでカラムを列記していきます。

検索クエリ

usersテーブルのカラムの名称を下記のとおり変更してレコードを取得する

  • id → 番号
  • name → 名前
  • age → 年齢
  • address → 居住地
SQL
SELECT id AS '番号', name AS '名前', age AS '年齢', address AS '居住地'
FROM users;

実行結果

番号名前年齢居住地
1山田25東京都
2鈴木34神奈川県
3佐藤28北海道
usersテーブル

カラム名が日本語に変更された状態でデータを取得することができました。

テーブルに別名をつける方法

次に、ASを使ってテーブルに別名をつける方法を見ていきましょう。

テーブルに別名をつけるのは、主に複数のテーブルを扱う場合です。クエリが冗長になることを防ぐために別名をつけて短縮します。

具体例を交えて解説します。

サンプルデータ

今回は、下記2つのテーブルを用意します。

usersテーブル

idnameageaddress
1山田25東京都
2鈴木34神奈川県
3佐藤28北海道

productsテーブル

idnamepriceuser_id
1商品A9801
2商品B1,9802
3商品C2,9803

複数のテーブルを指定

SQL
SELECT カラム名
FROM テーブル名 AS '別名', テーブル名 AS '別名';

テーブルの後にASをつけて、その後に名前をつけます。

検索クエリ

usersテーブルのidとproductsテーブルのuser_idが一致するレコードのみを取得する。

usersテーブル、productsテーブルにはそれぞれ下記のとおり、テーブルに別名をつけます。

  • usersテーブル → u
  • productsテーブル → p
SQL
SELECT *
FROM users AS u, products AS p
WHERE u.id = p.user_id;

AS句を使ってusersテーブルをu、productsテーブルをpと定義したことで、u.id = p.user_idと簡略化して記述することができています。

別名をつけずにWHERE users.id = products.user_idとすることもできますが、クエリが冗長になってしまいます。クエリが長くなればなるほど、ASを使った方が記述量を減らせるので使うことをおすすめします。

一般的にはテーブル名の頭文字だけに省略することが多いです。usersテーブルの場合はuみたいな感じですね。

実行結果

idnameageaddressidnamepriceuser_id
1山田25東京都1商品A9801
2鈴木34神奈川県2商品B19802
3佐藤28北海道3商品C29803

ASを使っても使わなくても実行結果は同じになります。

左4列がusersテーブルの内容で、右4列がproductsテーブルの内容です。usersテーブルのidとproductsテーブルのuser_idが一致したレコードを取得することができました。

複数のテーブルを指定&カラムも指定

次に、先程の複数テーブル指定に加えて、カラムにもAS句を使って別名をするケースを見ていきましょう。

検索クエリ

下記2点の条件を満たすレコードを取得する

  1. usersテーブルのidとproductsテーブルのuser_idが一致する
  2. 下記のとおり、カラムの名称を変更する
    • usersテーブルのname → 名前
    • productsテーブルのname → 商品名
    • productsテーブルのprice → 料金
SQL
SELECT u.name AS '名前', p.name AS '商品名', p.price AS '料金'
FROM users AS u, products AS p
WHERE u.id = p.user_id

usersテーブル、productsテーブルにはそれぞれnameカラムが存在します。普通にnameと書くだけではどっちのテーブルのnameなのか分からずエラーが出てしまいます。

よって、users.nameという風にテーブル名から指定する必要があります。ここで、テーブル名に別名をつけていれば、u.nameと書くことができるのです。

このように、記述量が多くなってきた時に別名をつけて簡略化することの恩恵を受けることができます。

実行結果

名前商品名料金
山田商品A980
鈴木商品B1980
佐藤商品C2980

カラム名もASで指定した名称で取得することができました。

ORDER BY句やGROUP BY句と併用できる

ORDER BY句やGROUP BY句ではカラムを指定しますが、AS句でつけたカラム名を指定することができます。

ORDER BY句の場合

下記のように、AS句で指定した「料金」という名称をORDER BYで指定することができます。

SQL
SELECT price AS '料金'
FROM products
ORDER BY '料金' DESC;

ORDER BY句については下記の記事で詳しくまとめています。

【SQL】ORDER BY句を使ってレコードを並び替える方法(降順・昇順でソート)

GROUP BY句の場合

下記のように、AS句で指定した「名前」という名称をGROUP BY句で指定することができます。

SQL
SELECT name AS '名前'
FROM users
GROUP BY '名前';

GROUP BY句については下記の記事で詳しくまとめています。

GROUP BY句を使って集計!COUNTやHAVINGとの合わせ技も解説【SQL】

AS句は省略もできる

ここまでASを使って別名をつける方法を解説してきましたが、実はASは省略が可能なんです。

下記のように、ASを省略しても別名をつけることができます。

SQL
SELECT カラム名 '別名', カラム名 '別名'
FROM テーブル名;

省略することで記述量は減りますが、個人的には可読性が落ちるので書いた方が見やすい派です。ここは個人差があるので、自分に合った方を選ぶといいでしょう。

内容のまとめ

  • AS句を使って別名をつけるメリットは、第三者から見たときに伝わりやすくなること
  • カラムやテーブルの後にAS 別名と指定して、別名をつける
  • テーブルに別名をつけるのは、主に複数のテーブルを扱う場合
  • テーブルで別名をつけた場合、その名称をカラムでも使うことができる。例えば、usersテーブルにuという別名をつけた場合、nameカラムに対してu.nameと指定することができる
  • AS句はORDER BY句やGROUP BY句と併用することができる
  • AS句は省略することもでき、カラム名 別名と書くことで別名をつけられる