概要:このチュートリアルでは、MySQL aliasを使用してクエリの読みやすさを向上させる方法を学びます。
MySQLは、列エイリアスとテーブルエイリアスと呼ばれる2種類のエイリアスをサポートしています。
列のMySQLエイリアス
列名が非常に技術的であるため、クエリの出力を理解するのが非常に困難な場合があります。 列にわかりやすい名前を付けるには、列の別名を使用できます。
次のステートメントは、列エイリアスの使用方法を示しています:
Code language: SQL (Structured Query Language) (sql)
列に別名を割り当てるには、AS
キーワードの後に別名を使用します。 エイリアスにスペースが含まれている場合は、次のように引用符で囲む必要があります:
Code language: SQL (Structured Query Language) (sql)
AS
キーワードは省略可能であるため、ステートメントでは省略できます。 式に別名を付けることもできます。
サンプルデータベースのemployees
テーブルを見てみましょう。
次のクエリは、従業員の姓と名を選択します。 名前と姓を完全な名前に連結するには、CONCAT_WS()
関数を使用します。
Code language: SQL (Structured Query Language) (sql)
試してみてください
列見出しは読みにくいです。 これを解決するには、次のクエリに示すように、出力の列見出しに列エイリアスを割り当てることができます:
Code language: SQL (Structured Query Language) (sql)
試してみてください
MySQLでは、ORDER BY
、GROUP BY
、およびHAVING
句で列エイリアスを使用して列を参照できます。
次のクエリでは、ORDER BY
句の列エイリアスを使用して、従業員のフルネームをアルファベット順に並べ替えます:
Code language: SQL (Structured Query Language) (sql)
試してみてください
次のステートメントは、合計金額が60000より大きい注文を選択します。 これは、GROUP BY
句およびHAVING
句で列の別名を使用します。
Code language: SQL (Structured Query Language) (sql)
試してみてください
WHERE
句では列エイリアスを使用できないことに注意してください。 その理由は、MySQLがWHERE
句を評価するときに、SELECT
句で指定された列の値がまだ評価されないためです。
テーブルのMySQLエイリアス
エイリアスを使用して、テーブルに別の名前を付けることができます。 テーブルにエイリアスを割り当てるには、AS
キーワードを次の構文として使用します:
Code language: SQL (Structured Query Language) (sql)
表の別名は表別名と呼ばれます。 列の別名と同様に、AS
キーワードは省略可能なため、省略できます。
このクエリは、employees
テーブルエイリアスをeとして割り当てる方法を示しています:
Code language: SQL (Structured Query Language) (sql)
テーブルにエイリアスが割り当てられたら、次の構文を使用してテーブルの列を参照できます:
Code language: SQL (Structured Query Language) (sql)
例えば:
Code language: SQL (Structured Query Language) (sql)
テーブルエイリアスは、以下を含むステートメントでよく使用されますINNER JOIN
, LEFT JOIN
, RIGHT JOIN
句およびサブクエリ内。
customers
とorders
の表を見てみましょう:
両方のテーブルに同じ列名customerNumber
があります。テーブルエイリアスを使用してcustomerNumber
列を修飾しないと、次のようなエラーメッセージが表示されます:
Code language: SQL (Structured Query Language) (sql)
このエラーを回避するには、テーブルエイリアスを使用してcustomerNumber
列を修飾します:
Code language: SQL (Structured Query Language) (sql)
試してみてください
上記のクエリは、customers
テーブルとorders
テーブルから顧客名と注文数を選択します。 これは、c
をcustomers
テーブルのテーブル別名として使用し、o
をorders
テーブルのテーブル別名として使用します。 customers
およびorders
テーブル内の列は、テーブルエイリアスを介して参照されます。
上記のクエリでエイリアスを使用しない場合は、テーブル名を使用してその列を参照する必要があります。:
Code language: SQL (Structured Query Language) (sql)
それを試してみてください
このチュートリアルでは、列とテーブルのエイリアスを含むMySQLエイリアスを使用する方法を学びました。
- このチュートリアルは役に立ちましたか?