SQLエイリアス完全ガイド|列名・テーブル名の別名指定方法を実例つきで解説
SQLエイリアスとは、テーブルや列(カラム)につける「参照用の別名」のことです。長いテーブル名を扱う場合などに、クエリを短くシンプルにするために活用されます。テーブルにも列にも、ASキーワードを使ってエイリアスを定義できます。なお、エイリアスはクエリの実行中のみ有効であり、恒久的なものではありません。
複雑なクエリを書いていると、長い列名やテーブル名を何度も入力するのが面倒に感じることはありませんか?SQLの学習を進めるほど、この悩みはよく起こるものです。そんなときに役立つのがエイリアスです。エイリアスを使えば、クエリをぐっと短くできます。
このガイドでは、SQLエイリアスとは何か、なぜ使われるのかを解説し、実際の使用例を2つのシナリオに沿って紹介します。それでは始めましょう!
注:このチュートリアルはPostgreSQLを使用して執筆されています。
SQLエイリアスとは?
SQLエイリアスは、人間の「通称(ニックネーム)」のようなものです。テーブルやその中の列に対して、代わりとなる名前を割り当てます。エイリアスを使うことで、クエリやその結果が読みやすくなり、解釈もしやすくなります。
良いエイリアスとは、ひと目見ただけで意味が理解できるものです。
たとえば、nameという列にエイリアスnを付けるのは避けるべきでしょう。同じテーブルにnumber_of_productsのような列も存在する場合、どちらも「n」で始まるため混乱を招きやすくなります。
この場合、full name(氏名)の各単語の頭文字を取ったfnの方が適切です。このようなエイリアスなら、誤解が生じにくくなります。
また、自分が書いたSQLクエリは、自分以外の人によって読まれたり使われたりする可能性があることも忘れてはいけません。すべての読者にとって直感的に理解できるよう、常に心がけましょう。
SQLエイリアス:列(カラム)への付け方
まずは列名へのエイリアスの使い方から見ていきましょう。列にエイリアスを付けると、クエリの出力結果における列名を自由に変更できます。
例として、サンプルデータベースにある次の2つのテーブルを使用します。employees(従業員)テーブルとbranches(支店)テーブルです。
employeesテーブル
| name | title | branch_id | salary |
|---|---|---|---|
| Geoff | Senior Sales Associate | 1 | 38000 |
| Adam | Senior Sales Associate | 2 | 38000 |
| Emma | Marketing Executive | 2 | 50000 |
| Luke | Marketing Assistant | 3 | 32000 |
branchesテーブル
| branch_id | branch_name |
|---|---|
| 1 | San Francisco |
| 2 | Cambridge |
| 3 | Los Angeles |
employeesテーブルは4列×4行、branchesテーブルは2列×3行で構成されています。
それでは、「各支店における最高給与」を求めるSELECT文を書いてみましょう。
SELECT branches.branch_name, MAX(employees.salary)
FROM employees LEFT JOIN branches
ON employees.branch_id = branches.branch_id
GROUP BY branches.branch_name;
ここでは、MAX()集計関数を使ってemployeesテーブルのsalary(給与)列の最大値を取得しています。さらにLEFT JOINを使ってbranchesテーブルとemployeesテーブルを結合することで、支店ごとの結果を表示できるようにしています。
このクエリを実行すると、次のような結果が返ります。
| branch_name | max |
|---|---|
| San Francisco | 38000 |
| Los Angeles | 32000 |
| Cambridge | 50000 |
クエリ自体は正しく動作していますが、出力の見出しがあまり直感的ではありません。このクエリを書いた人以外にとって、「max」という列名は分かりにくいかもしれません。
そこで、列にエイリアスを指定してこの問題を解決しましょう。
SELECT branches.branch_name AS "Branch Name", MAX(employees.salary) AS "Highest Salary"
FROM employees LEFT JOIN branches
ON employees.branch_id = branches.branch_id
GROUP BY branches.branch_name;
ここでは2つのエイリアスを指定しています。branch_nameには「Branch Name(支店名)」、MAX()関数の結果には「Highest Salary(最高給与)」というエイリアスを付けています。もう一度クエリを実行してみましょう。
| Branch Name | Highest Salary |
|---|---|
| San Francisco | 38000 |
| Los Angeles | 32000 |
| Cambridge | 50000 |
返ってくるデータ行は同じですが、見出しが変わり、「branch_name」が「Branch Name」に、「max」が「Highest Salary」になりました。これで結果表が格段に読みやすくなりましたね。
SQLエイリアス:テーブルへの付け方
テーブルにもエイリアスを定義できます。これは、1つのクエリ内で同じテーブルを何度も参照する場合に特に便利です。こうしたケースは、より複雑なクエリでよく発生します。
複数のテーブルを扱うクエリでは、あいまいさを避けるために、列名の前に必ずテーブル名を指定する必要があります。テーブル名と列名はピリオド(.)で区切ります。これにより、SQLは各記述がどのテーブルの列を指しているのかを正確に判断できます。
この仕組みはクエリの曖昧さを防いでくれる一方で、記述が長くなり読みにくくなるというデメリットもあります。だからこそ、エイリアスは誰にとっても理解しやすいものを選ぶことが大切です。
それでは、「すべての従業員の名前と、その従業員が勤務する支店の名前」を返すクエリを書いてみましょう。
SELECT employees.name, branches.branch_name
FROM employees LEFT JOIN branches
ON employees.branch_id = branches.branch_id;
実行結果は次のとおりです。
| name | branch_name |
|---|---|
| Geoff | San Francisco |
| Adam | Cambridge |
| Emma | Cambridge |
| Luke | Los Angeles |
このクエリでは、employeesとbranchesの2つのテーブルを参照し、LEFT JOINを使って両テーブルのbranch_idの値を紐づけています。これにより、各従業員がどの支店に関連付けられているかを確認できます。
しかし、このクエリはかなり長くなっています。「employees」と「branches」という単語をそれぞれ2回繰り返しており、クエリがさらに長くなれば、これらの単語をもっと多く書くことになります。
そこで、エイリアスを使ってクエリを短くしてみましょう。SQLクエリでテーブルにエイリアスを作成するには、ASキーワードを使用します。
SELECT e.name, b.branch_name
FROM employees AS e LEFT JOIN branches AS b
ON e.branch_id = b.branch_id;
このクエリは、最初のクエリとまったく同じ結果を返します。
ここでは2つのエイリアスを割り当てています。
employees→ebranches→b
以降、クエリ内でeやbを参照すると、SQLはそれぞれ「employees」「branches」を指しているものとして扱います。テーブルエイリアスを使うことで、SQL文内の繰り返しを大幅に減らせるのです。
まとめ
SQLエイリアスとは、列やテーブルに付ける代替名のことです。エイリアスはクエリごとに有効であり、あるクエリで定義したエイリアスは、再定義しない限り別のクエリでは使えません。エイリアスはASキーワードを使って設定します。
SQLについてさらに学びたい方は、ぜひ「SQLの学習方法ガイド」もチェックしてみてください。おすすめの学習コースの選び方から、役立つオンライン学習リソースまで、幅広く網羅した総合ガイドです。
-
【2024年最新】フォートナイト(Fortnite)のシステム要件を徹底解説|PC・Macの動作環境チェック完全ガイド
フォートナイト(Fortnite)は今や世界中で大人気のバトルロイヤルゲームですが、「自分のPCでも動くのか?」「このPCのスペックで快適にプレイできるのか?」という疑問を持つ方は少なくありません。一般的に、ゲームは通常のアプリケーションと比べて、メモリ(RAM)、CPU(プロセッサー)、グラフィックボード、DirectXなどに対する要求水準が高くなっています。 本記事では、以下の内容について詳しく解説します。 フォートナイトの最低動作環境とは? 推奨PCスペックはどれくらい? Macでのシステム要件は? おまけ:ドライバーとゲームコンポーネントの更新でフォートナイトを高速化する方法
-
Fitbit Pay完全ガイド:設定方法からお支払い・セキュリティ対策まで徹底解説
Fitbitは、最も優れたスマートウェアラブルデバイスのひとつです。多彩なモデルと豊富な機能を備えており、その中でも人気の高い機能が「Fitbit Pay」です。Fitbit IonicやFitbit Versaに搭載されたNFC(近距離無線通信)チップにより、非接触決済に対応したあらゆる店舗で、腕時計をつけたまま支払いが可能になります。 この記事では、Fitbit Payの使い方をマスターできるよう、設定方法からセキュリティ対策まで完全ガイドとして詳しく解説します。 Fitbit Payとは? Fitbit Payは、デビットカードやクレジットカードをFitbit IonicおよびVersa