バナー画像

SQLで別名のつけ方

SQLでデータを取得する際に、そのままでは意味がわかりづらい名前や演算結果のカラムに特別な名前をつけたい場合があると思います。

このように、カラム名やテーブル名に別名をつけたい場合は「AS句」を使いましょう。

この記事では、SQLで別名を設定できるAS句について解説します。
短期集中でWebエンジニアになれるスクールはこちら

AS句とは

AS句とは、カラムやテーブルに別名をつけられる句です。

記述方法は次の通りになります。

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

別名をつけたいカラムの後ろに「AS」と別名を記述すればOKです。

サンプルデータで別名をつけてみましょう。ここでは次のテーブルを作成しました。

mysql> CREATE TABLE user(id int, name varchar(20), address varchar(20));

このテーブルに次のようにデータを追加します。

mysql> INSERT INTO user VALUES(1, '佐藤', '東京');
mysql> INSERT INTO user VALUES(2, '田中', '大阪');
mysql> INSERT INTO user VALUES(3, '山田', '北海道');

これらのデータを取得する際に「id」「name」「address」に別名をつけてみましょう。

今回は、それぞれのカラムを日本語に変更してみます。

mysql> SELECT id AS '番号', name AS '名前', address AS '住所' FROM user;
+--------+--------+-----------+
| 番号   | 名前   | 住所      |
+--------+--------+-----------+
|      1 | 佐藤   | 東京      |
|      2 | 田中   | 大阪      |
|      3 | 山田   | 北海道    |
+--------+--------+-----------+
3 rows in set (0.00 sec)

このように、それぞれ指定した別名がつけられているのがわかります。

別名に日本語を指定する場合は「’(シングルクォーテーション)」で囲んでください。

テーブルに別名をつける場合の例

テーブルに別名をつけるのは、データ取得の際に「複数のテーブルを指定」する場合によく使われます。

こちらもサンプルで確認してみましょう。

先ほどのuserテーブルとは別に、次の「employee」テーブルを作成します。

CREATE TABLE employee(id int, salary int);

そして、次のようにデータを追加します。

mysql> INSERT INTO employee VALUES(1, 200000);
mysql> INSERT INTO employee VALUES(2, 230000);
mysql> INSERT INTO employee VALUES(3, 180000);

employeeテーブルとuserテーブルを結合してデータを取得してみます。

mysql> SELECT u.id, u.name, u.address, e.salary FROM user AS u, employee AS e WHERE u.id = e.id;
+------+--------+-----------+--------+
| id   | name   | address   | salary |
+------+--------+-----------+--------+
|    1 | 佐藤   | 東京      | 200000 |
|    2 | 田中   | 大阪      | 230000 |
|    3 | 山田   | 北海道    | 180000 |
+------+--------+-----------+--------+
3 rows in set (0.01 sec)

上記のクエリを見るとuserを「u」に、employeeを「e」と別名をつけています。

別名をつけないと「user.id」「employee.salary」など、クエリが冗長になってしまうでしょう。

このように、テーブル名を短く設定したい場合などにテーブルの別名設定は有効です。

別名はWHERE句では使用不可

SELECTで別名を設定し、WHERE句で条件を指定したい場合もあるかと思います。

しかし、WHERE句内では別名は使用できません。

次のようなエラーになります。

mysql> SELECT id AS '番号', name AS '名前', address AS '住所' FROM user WHERE '番号' = 1;
Empty set, 1 warning (0.01 sec)
mysql> SELECT id AS user_id, name AS '名前', address AS '住所' FROM user WHERE user_id = 1;
ERROR 1054 (42S22): Unknown column 'user_id' in 'where clause'

簡単な回避方法は、別名をつける前のカラム名を使うことです。

mysql> SELECT id AS '番号', name AS '名前', address AS '住所' FROM user WHERE id = 1;
+--------+--------+--------+
| 番号   | 名前   | 住所   |
+--------+--------+--------+
|      1 | 佐藤   | 東京   |
+--------+--------+--------+
1 row in set (0.01 sec)

すでにあるカラムを指定する分には問題ありませんが、次のような計算結果などを取得したい場合は少し面倒になるでしょう。

SELECT (Sum1_Total + Sum2_Total + Sum3_Total) AS TotalSum
FROM sample
WHERE (Sum1_Total + Sum2_Total + Sum3_Total) > 100; 

短期集中でWebエンジニアになれるスクールはこちら

ORDER BY句で別名は使用可

WHERE句では別名の使用ができませんが、ORDER BY句は使用できます。

mysql> SELECT id AS user_id, name AS first_name, address FROM user ORDER BY user_id DESC;
+---------+------------+-----------+
| user_id | first_name | address   |
+---------+------------+-----------+
|       3 | 山田       | 北海道    |
|       2 | 田中       | 大阪      |
|       1 | 佐藤       | 東京      |
+---------+------------+-----------+
3 rows in set (0.00 sec)

ただし、別名を日本語で設定していると期待した動作にならないことがあるので注意が必要です。

mysql> SELECT id AS '番号', name AS '名前', address AS '住所' FROM user ORDER BY '番号' DESC;
+--------+--------+-----------+
| 番号   | 名前   | 住所      |
+--------+--------+-----------+
|      1 | 佐藤   | 東京      |
|      2 | 田中   | 大阪      |
|      3 | 山田   | 北海道    |
+--------+--------+-----------+
3 rows in set (0.00 sec)

別名に括弧は使える?

カラムの別名に括弧を使いたい場合もあるでしょう。

括弧はMySQLでは使用可能です。

mysql> SELECT id AS '番号(ID)', name AS '名前', address AS '住所' FROM user;
+------------+--------+-----------+
| 番号(ID)   | 名前   | 住所      |
+------------+--------+-----------+
|          1 | 佐藤   | 東京      |
|          2 | 田中   | 大阪      |
|          3 | 山田   | 北海道    |
+------------+--------+-----------+
3 rows in set (0.00 sec)

mysql> SELECT id AS '番号(ID)', name AS '名前', address AS '住所' FROM user;
+----------------+--------+-----------+
| 番号(ID)     | 名前   | 住所      |
+----------------+--------+-----------+
|              1 | 佐藤   | 東京      |
|              2 | 田中   | 大阪      |
|              3 | 山田   | 北海道    |
+----------------+--------+-----------+
3 rows in set (0.00 sec)

mysql> SELECT id AS '番号「ID」', name AS '名前', address AS '住所' FROM user;
+----------------+--------+-----------+
| 番号「ID」     | 名前   | 住所      |
+----------------+--------+-----------+
|              1 | 佐藤   | 東京      |
|              2 | 田中   | 大阪      |
|              3 | 山田   | 北海道    |
+----------------+--------+-----------+
3 rows in set (0.00 sec)

このように、さまざまな括弧が使用できます。

ただし、DBMSによっては使えないものもあります。

詳しくは、使用しているDBMSで確認してみてください。

別名をつけるのにルールはある?

SQLで別名をつける際に決まったルールというものはありません。

好きなようにつけられますが、仕事やプロジェクトで他の人も使う場合は誰が見てもわかりやすい別名をつけるとよいでしょう。

AS句は省略も可能

ここまで別名をつける際には「AS句」を使用してきましたが、実は省略も可能です。

mysql> SELECT id '番号', name '名前', address '住所' FROM user;
+--------+--------+-----------+
| 番号   | 名前   | 住所      |
+--------+--------+-----------+
|      1 | 佐藤   | 東京      |
|      2 | 田中   | 大阪      |
|      3 | 山田   | 北海道    |
+--------+--------+-----------+
3 rows in set (0.00 sec)

このように、カラム名の後ろに別名を記述すればOKです。

SQLを学んでWebエンジニアを目指そう

Webエンジニアは、Webサービスを作るエンジニアで非常に人気の高い職種です。
スタートアップやベンチャー企業が中心なので柔軟性のある雇用形態、魅力的な作業環境、面白いプロジェクト、高い報酬など非常に魅力的な求人が多いです。
Ruby on RailsやGo言語を用いたプロジェクトが多く、SQLも重要なスキルとなります。

このブログを運営するプログラミングスクールのポテパンキャンプでは、実践的なカリキュラムと現役エンジニアからのレビュー、そしてポートフォリオ添削や模擬面談などの面談転職サポートにより、最短距離でWebエンジニアを目指すことができます。

Webエンジニアへの転職を考えている方は、是非一度無料カウンセリングへお申込みください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。