カラムやテーブルに自分で好きな名前をつけたい時は、SQLのAS句を使うことで実現できます。
本記事では、AS句の使い方や別名をつけるメリット、AS句の便利なポイントについて詳しく解説しています。
目次
SQLで別名をつけるメリット
メリットは見た目が分かりやすくなるからです。データ分析で使うダッシュボードは多くの人が目にします。よって、非エンジニアでも一目で理解できるカラム名にすることで、コミュニケーションコストを最小限にできるのです。
例えば、何もしないと下記のように表示されるテーブルが存在したとします。
id | name | admin | last_sign_in_at |
---|---|---|---|
1 | 山田 | 0 | 2021-01-01 |
2 | 鈴木 | 1 | 2021-05-30 |
3 | 佐藤 | 0 | 2020-08-10 |
admin
やlast_sign_in_at
はパッと見で何を指しているのか分かりづらいです。
そこで、ASを使って別名を指定することで、下記のように分かりやすくできます。
番号 | 名前 | 管理者権限 | 最後にログインした日時 |
---|---|---|---|
1 | 山田 | 0 | 2021-01-01 |
2 | 鈴木 | 1 | 2021-05-30 |
3 | 佐藤 | 0 | 2020-08-10 |
メリットが分かったところで、AS句の使い方について見ていきましょう。
カラムに別名をつける方法
まずは、ASを使ってカラムに別名をつける方法を見ていきます。
サンプルデータ
下記のusersテーブルをサンプルデータとして用意します。
id | name | age | address |
---|---|---|---|
1 | 山田 | 25 | 東京都 |
2 | 鈴木 | 34 | 神奈川県 |
3 | 佐藤 | 28 | 北海道 |
1つのカラムを指定
1つのカラムを別名に変える場合の基本構文は下記です。
SELECT カラム名 AS 別名
FROM テーブル名;
カラム名の後にAS
をつけて、その後に名前を付けます。名前は英語でも日本語でも可能ですが、日本語の場合はクォーテーションで囲む必要があります。そして、SQLの実行結果では、ここで付けた名前がそのままカラム名として表示されます。
検索クエリ
usersテーブルのnameカラムの名称を「名前」に変更してレコードを取得する
SELECT name AS '名前'
FROM users;
実行結果
名前 |
---|
山田 |
鈴木 |
佐藤 |
カラムの名称がnameから名前に変わっていることが分かります。
複数のカラムを指定
複数のカラムを別名に変える場合の基本構文は下記です。
SELECT カラム名 AS '別名', カラム名 AS '別名'
FROM テーブル名;
このように、カンマ区切りでカラムを列記していきます。
検索クエリ
usersテーブルのカラムの名称を下記のとおり変更してレコードを取得する
id
→ 番号name
→ 名前age
→ 年齢address
→ 居住地
SELECT id AS '番号', name AS '名前', age AS '年齢', address AS '居住地'
FROM users;
実行結果
番号 | 名前 | 年齢 | 居住地 |
---|---|---|---|
1 | 山田 | 25 | 東京都 |
2 | 鈴木 | 34 | 神奈川県 |
3 | 佐藤 | 28 | 北海道 |
カラム名が日本語に変更された状態でデータを取得することができました。
テーブルに別名をつける方法
次に、ASを使ってテーブルに別名をつける方法を見ていきましょう。
テーブルに別名をつけるのは、主に複数のテーブルを扱う場合です。クエリが冗長になることを防ぐために別名をつけて短縮します。
具体例を交えて解説します。
サンプルデータ
今回は、下記2つのテーブルを用意します。
usersテーブル
id | name | age | address |
---|---|---|---|
1 | 山田 | 25 | 東京都 |
2 | 鈴木 | 34 | 神奈川県 |
3 | 佐藤 | 28 | 北海道 |
productsテーブル
id | name | price | user_id |
---|---|---|---|
1 | 商品A | 980 | 1 |
2 | 商品B | 1,980 | 2 |
3 | 商品C | 2,980 | 3 |
複数のテーブルを指定
SELECT カラム名
FROM テーブル名 AS '別名', テーブル名 AS '別名';
テーブルの後にAS
をつけて、その後に名前をつけます。
検索クエリ
usersテーブルのid
とproductsテーブルのuser_id
が一致するレコードのみを取得する。
usersテーブル、productsテーブルにはそれぞれ下記のとおり、テーブルに別名をつけます。
- usersテーブル →
u
- productsテーブル →
p
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
みたいな感じですね。
実行結果
id | name | age | address | id | name | price | user_id |
---|---|---|---|---|---|---|---|
1 | 山田 | 25 | 東京都 | 1 | 商品A | 980 | 1 |
2 | 鈴木 | 34 | 神奈川県 | 2 | 商品B | 1980 | 2 |
3 | 佐藤 | 28 | 北海道 | 3 | 商品C | 2980 | 3 |
ASを使っても使わなくても実行結果は同じになります。
左4列がusersテーブルの内容で、右4列がproductsテーブルの内容です。usersテーブルのid
とproductsテーブルのuser_id
が一致したレコードを取得することができました。
複数のテーブルを指定&カラムも指定
次に、先程の複数テーブル指定に加えて、カラムにもAS句を使って別名をするケースを見ていきましょう。
検索クエリ
下記2点の条件を満たすレコードを取得する
- usersテーブルの
id
とproductsテーブルのuser_id
が一致する - 下記のとおり、カラムの名称を変更する
- usersテーブルの
name
→ 名前 - productsテーブルの
name
→ 商品名 - productsテーブルの
price
→ 料金
- usersテーブルの
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
と書くことができるのです。
このように、記述量が多くなってきた時に別名をつけて簡略化することの恩恵を受けることができます。
実行結果
名前 | 商品名 | 料金 |
---|---|---|
山田 | 商品A | 980 |
鈴木 | 商品B | 1980 |
佐藤 | 商品C | 2980 |
カラム名もASで指定した名称で取得することができました。
ORDER BY句やGROUP BY句と併用できる
ORDER BY句やGROUP BY句ではカラムを指定しますが、AS句でつけたカラム名を指定することができます。
ORDER BY句の場合
下記のように、AS句で指定した「料金」という名称をORDER BYで指定することができます。
SELECT price AS '料金'
FROM products
ORDER BY '料金' DESC;
ORDER BY句については下記の記事で詳しくまとめています。
【SQL】ORDER BY句を使ってレコードを並び替える方法(降順・昇順でソート)GROUP BY句の場合
下記のように、AS句で指定した「名前」という名称をGROUP BY句で指定することができます。
SELECT name AS '名前'
FROM users
GROUP BY '名前';
GROUP BY句については下記の記事で詳しくまとめています。
GROUP BY句を使って集計!COUNTやHAVINGとの合わせ技も解説【SQL】AS句は省略もできる
ここまでASを使って別名をつける方法を解説してきましたが、実はASは省略が可能なんです。
下記のように、ASを省略しても別名をつけることができます。
SELECT カラム名 '別名', カラム名 '別名'
FROM テーブル名;
省略することで記述量は減りますが、個人的には可読性が落ちるので書いた方が見やすい派です。ここは個人差があるので、自分に合った方を選ぶといいでしょう。
内容のまとめ
- AS句を使って別名をつけるメリットは、第三者から見たときに伝わりやすくなること
- カラムやテーブルの後に
AS 別名
と指定して、別名をつける - テーブルに別名をつけるのは、主に複数のテーブルを扱う場合
- テーブルで別名をつけた場合、その名称をカラムでも使うことができる。例えば、usersテーブルに
u
という別名をつけた場合、nameカラムに対してu.name
と指定することができる - AS句はORDER BY句やGROUP BY句と併用することができる
- AS句は省略することもでき、
カラム名 別名
と書くことで別名をつけられる