MySQL のエイリアス
ここでは MySQL のエイリアスについてご説明します。
サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。
MySQL のカラムエイリアス
エイリアスというのは「別名」のことで、MySQL では、テーブルやカラムにエイリアスをつけて、クエリーを読みやすくしたり、わかりやすくすることができます。
まずは、MySQL のカラムエイリアスについて見ていきましょう。
SELECT 文でカラムにエイリアスをつけるには、次のようにします。
SELECT カラム名 AS エイリアス名
FROM テーブル名;
AS は必須ではありませんが、間違いが減るため、MySQL の本家のサイトでもつけるのが推奨されています。
エイリアス名は WHERE句では使えませんが、GROUP BY、ORDER BY、HAVING 句では使うことができます。
それでは実際にカラムエイリアスを使ってみます。
次のような students テーブルがあります。
first_name とlast_name をつなげて、そのカラムに full_name というエイリアスをつけて、full_name で並べ替えたい時は次のようにできます。
SELECT CONCAT(first_name, " ", last_name) AS full_name
FROM students
ORDER BY full_name;
[実行結果]
文字列をつなげるのに CONCAT() 関数を使っているので、エイリアスをつけないと次のようなカラム名になってしまいます。
そのカラムに AS full_name とエイリアスをつけることでわかりやすくなっています。
また、ORDER BY でそのエイリアス名を使って並び替えもできています。
MySQL のテーブルエイリアス
MySQL のテーブルにもエイリアスをつけることができます。
SELECT エイリアス名.カラム名1,
エイリアス名.カラム名2
FROM テーブル名 AS エイリアス名;
こちらも、AS は必須ではありません。
結合したり、クエリーの中にテーブルが二個以上出てくる時はエイリアスをつけたほうが良いです。
結合した際などに、ひとつのテーブルにしか存在しないカラムは、テーブル名.カラム名 のように指定しなくても大丈夫ですが、複数のテーブルに存在するカラム名には テーブル名.カラム名 と指定するか、テーブルエイリアス名.カラム名のように指定する必要があります。
そんな時にテーブルエイリアスをつけることによって、クエリーが読みやすくなります。
では、テーブルエイリアスを使ってみましょう。
次のような exams と exam_results テーブルがあります。
students テーブルとこれらのテーブルを JOIN して学生の名前、テストの名前、スコアなどを取得するには、次のようにできます。
SELECT s.student_id,
s.first_name,
e.exam_name_en,
er.score
FROM exam_results AS er
INNER JOIN students AS s
ON er.student_id = s.student_id
INNER JOIN exams AS e
ON er.exam_id = e.exam_id
ORDER BY s.student_id;
[実行結果]
それぞれのテーブルにエイリアスをつけることでクエリーが読みやすくなっています。
ちなみに、同じクエリーをエイリアスを使わないで書くと次のようになります。
ひとつのテーブルにしか存在しないカラム名は テーブル名.カラム名 とする必要はありませんが、それを除いてもエイリアスを使ったクエリーのほうが読みやすくなっていますね。
以上、MySQL のエイリアスについてご説明しました。