概要:このチュートリアルでは、クエリをより短く、より理解しやすくするためのテーブルエイリアスとカラムエイリアスを含むSQLエイリアスについて学びます。
SQLエイリアスを使用すると、クエリの実行中に、テーブルまたはカラムに一時的な名前を割り当てることができます。SQLには、テーブルエイリアスとカラムエイリアスの2種類のエイリアスがあります。
SQLカラムエイリアス
データベーステーブルを設計する際、カラム名を短く保つために略語を使用することがあります。例えば
so_no
は、販売注文番号を表します。qty
は、数量を表します。
または、カラムやテーブルの名前付けに略語を積極的に使用するレガシーシステムを使用する必要があるかもしれません。
例えば、SAP ERPは、販売ドキュメント番号カラムの名前としてVBELN
などの、すべてのカラムとテーブルに(ドイツ語の)略語を使用します。
SQLを使用してこれらのテーブルからデータをクエリすると、出力は明確ではありません。これを修正するには、クエリの実行中に一時的な名前をカラムに付けるカラムエイリアスを使用できます。
次に、カラムエイリアスの使用方法の構文を示します。
column_name AS alias_name
Code language: SQL (Structured Query Language) (sql)
この構文では、AS
キーワードの後にカラム名を指定し、続いてカラムエイリアスを指定します。AS
キーワードはオプションです。したがって、次のように省略できます。
column_name alias_name
Code language: SQL (Structured Query Language) (sql)
エイリアスにスペースが含まれている場合は、次のように単一引用符(または二重引用符)で囲む必要があります。
column_name AS 'Alias Name'
Code language: SQL (Structured Query Language) (sql)
次の例は、カラムエイリアスの使用方法を示しています。
SELECT
inv_no AS invoice_no,
amount,
due_date AS 'Due date',
cust_no 'Customer No'
FROM
invoices;
Code language: SQL (Structured Query Language) (sql)
このクエリには、複数のカラムエイリアスがあります。
invoice_no
は、inv_no
カラムのカラムエイリアスです。'Due date'
は、due_date
カラムのカラムエイリアスです。エイリアスにスペースが含まれているため、単一引用符(')または二重引用符(")で囲む必要があります。'Customer no'
は、cust_no
カラムのエイリアスです。AS
キーワードがないことに注意してください。
式のエイリアス
クエリに式が含まれている場合は、式にカラムエイリアスを割り当てることができます。例:
SELECT
first_name,
last_name,
salary * 1.1 AS new_salary
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
この例では、データベースは結果セットの式の見出しとしてカラムエイリアスを使用します。
カラムエイリアスのよくある間違い
SELECT
句でカラムにエイリアスを割り当てるため、SELECT
句の後に評価される句でのみエイリアスを参照できます。
次のクエリはエラーになります。
SELECT
first_name,
last_name,
salary * 1.1 AS new_salary
FROM
employees
WHERE new_salary > 5000
Code language: SQL (Structured Query Language) (sql)
エラー
Unknown column 'new_salary' in 'where clause'
Code language: JavaScript (javascript)
なぜでしょうか?
このSELECT
ステートメントでは、データベースは次の順序で句を評価します。
FROM > WHERE > SELECT
Code language: SQL (Structured Query Language) (sql)
データベースは、SELECT
句の前にWHERE
句を評価します。したがって、WHERE
句を評価するとき、データベースにはnew_salary
カラムエイリアスの情報がありません。そのため、エラーが発生しました。
ただし、次のクエリは正しく機能します。
SELECT
first_name,
last_name,
salary * 1.1 AS new_salary
FROM
employees
ORDER BY new_salary;
Code language: SQL (Structured Query Language) (sql)
この例では、データベースは次の順序でクエリの句を評価します。
FROM > SELECT > ORDER BY
Code language: SQL (Structured Query Language) (sql)
データベースは、ORDER BY
句の前にSELECT
句を評価します。したがって、ORDER BY
句を評価する時点では、データベースは式salary * 1.1
のエイリアスであるnew_salary
エイリアスの情報を保持しています。したがって、期待どおりに動作します。
SQLテーブルエイリアス
カラムと同様に、テーブルにエイリアスを割り当てることができます。そして、これらのエイリアスはテーブルエイリアスと呼ばれます。
テーブルにエイリアスを割り当てるには、次の構文を使用します。
table_name AS table_alias
Code language: PHP (php)
この構文では、AS
キーワードもオプションです。したがって、次のように省略できます。
table_name table_alias
Code language: SQL (Structured Query Language) (sql)
テーブルにエイリアスを割り当てても、テーブルの名前が永続的に変更されるわけではないことに注意してください。クエリの実行中に一時的に別の名前がテーブルに与えられるだけです。
では、なぜテーブルエイリアスが必要なのでしょうか?
SELECT
句でカラム名を指定する場合、次の構文を使用できます。
table_name.column_name
Code language: CSS (css)
この構文では、カラムにはテーブル名とカラム名の両方を含む完全修飾名があります。例:
SELECT
employees.first_name,
employees.last_name
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
この例では、クエリはemployees
テーブルのfirst_name
カラムとlast_name
カラムからデータを選択します。一般的なクエリとは異なり、first_name
カラムとlast_name
カラムの完全修飾名を指定します。
SELECT
句では、employees
テーブル名の代わりに、employees
テーブルのテーブルエイリアスを使用できます。例:
SELECT
e.first_name,
e.last_name
FROM
employees AS e;
Code language: SQL (Structured Query Language) (sql)
この例では、FROM
句でemployees
にe
テーブルエイリアスを割り当て、SELECT
句でそれを参照します。
しかし、なぜカラムに完全修飾名を使用する必要があるのでしょうか?
サンプルデータベースの次のemployees
テーブルとdepartments
テーブルを参照してください。

employees
テーブルとdepartments
テーブルの両方に、同じ名前のカラム(department_id)があります。
両方のテーブルからデータをクエリする場合は、department_id
カラムが属する正確なテーブルを指定する必要があります。そうしないと、データベースがデータの選択元となるテーブルを認識しないため、エラーが発生します。
employees
テーブルからデータを選択する場合は、次のようにSELECT
句で参照できます。
employees.department_id
Code language: SQL (Structured Query Language) (sql)
departments
テーブルのdepartment_id
にも同じことが当てはまります。
departments.department_id
Code language: SQL (Structured Query Language) (sql)
e
とd
がemployees
テーブルとdepartments
テーブルのテーブルエイリアスである場合、次のようにテーブルエイリアスを使用して各テーブルのdepartment_id
カラムを参照できます。
e.department_id
d.department_id
Code language: SQL (Structured Query Language) (sql)
次のチュートリアルでは、join句を使用して両方のテーブルからデータを選択し、テーブルエイリアスを適用する方法を学習します。また、自己結合テクニックを使用して、単一のクエリで同じテーブルを2回参照する方法も学習します。この場合、テーブルエイリアスを使用する必要があります。
概要
- SQLには、カラムエイリアスとテーブルエイリアスの2種類のエイリアスがあります。
SELECT
句の後に評価される句で、カラムエイリアスを参照します。- カラム名を修飾するには、テーブルエイリアスを使用します。