SQLエイリアスはSQLのちょっとした機能で、列名が存在しない場合に、より簡潔なコードを記述して列名を作成できます。
2つのSQLエイリアスタイプがあります。列エイリアス、およびテーブルエイリアス。この記事では、両方の概要を説明します。
SQLのエイリアスとは何ですか?
SQLでは、エイリアスは、SQLクエリの列またはテーブルに一時的に別の名前を割り当てることができる機能です。これにより、クエリ内のコードの量を減らすことができます。これは、複雑なクエリで特に役立ちます。
また、列名が存在しないクライアントアプリケーションに列名を提供することもできます(たとえば、計算フィールドを使用する場合)。
SQLエイリアスの利点
SQLエイリアスの主な利点は次のとおりです。
- 結果に表示されるときに、列ヘッダーに読みやすい名前を付けることができます
- クライアントアプリケーションが、列名が存在しない場合に計算フィールドを名前で参照できるようにします
- コードを減らし、クエリをより簡潔にすることができます
- クエリの基になる列の名前を保護するための難読化手法として使用できます
エイリアスを割り当てても、実際には列またはテーブルの名前が変更されないことを指摘しておく必要があります。それを参照するために使用できる代替名を提供するだけです。
エイリアス構文
SQLでエイリアスを作成するには、列名またはテーブル名の後に選択したエイリアスを続けるだけです。オプションでAS
を使用できます 列/テーブル名とエイリアスの間のキーワード。
列の場合は次のようになります:
SELECT Column1 AS Alias1
...
or
SELECT Column1 Alias1
...
または、テーブルの場合は次のようになります:
...
FROM Table1 AS Alias1
...
or
...
FROM Table1 Alias1
...
次の例は、これをよりよく説明します。
列エイリアス
おそらく最も一般的に使用されるエイリアスは列エイリアスです。列エイリアスを使用すると、列に一時的な名前を付けることができます。
また、列名が存在しない場所に列名を指定することもできます。
次の2つの例は、列エイリアスを使用した場合と使用しない場合の同じクエリを示しています。
列エイリアスなし
しない簡単なSQLクエリを次に示します。 列エイリアスを使用します。
SELECT
f_name,
l_name
FROM customers;
結果:
+----------+----------+ | f_name | l_name | |----------+----------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +----------+----------+
この場合、列エイリアスを指定しなかったため、実際の基になる列名が結果の列ヘッダーとして表示されました。
列エイリアスあり
今回は列エイリアスを使用することを除いて、同じクエリです。
SELECT
f_name AS FirstName,
l_name AS LastName
FROM customers;
結果:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
結果の列ヘッダーとして列エイリアスが使用されていることに注意してください。
計算フィールドの列エイリアス
列エイリアスは、列名が存在しない計算フィールドでも使用できます。列名がある計算列ではなく、単純な列の値以外の式から値が派生するフィールドを意味します。
「どうして列名がないのでしょうか?」あなたは尋ねるかもしれません。
クエリで列名が返されない場合がよくあります。 (No column name)
を見たことがありますか クエリ結果の列ヘッダーとして?
これが発生する可能性のある状況はたくさんあります。
列エイリアスなし
列ヘッダーを返さないクエリの例を次に示します。
SELECT
f_name + ' ' + l_name
FROM customers;
結果:
+--------------------+ | (No column name) | |--------------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +--------------------+
この例では、各顧客の名前と名前を連結し、結果を1つの列として表示します。唯一の問題は、DBMSが列の名前を認識していないことです。
これはエイリアスにとって絶好の機会です!
列エイリアスあり
これは同じ例ですが、結果に列エイリアスを割り当てる点が異なります。
SELECT
f_name + ' ' + l_name AS FullName
FROM customers;
結果:
+---------------+ | FullName | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
これの良い点は、すべてのクライアントアプリケーションがこれらの結果を取得し、そのエイリアスによって計算フィールドを参照できることです。
上記の例では、SQL Serverの文字列連結演算子(+
)を使用していることに注意してください。 )。 DB2、Oracle、PostgreSQL、およびSQLiteでは、||
を使用する必要があります 。また、MySQLとMariaDBでは、CONCAT()
を使用します 働き。これはSQLエイリアスとは関係ありませんが、言及したいと思いました🙂
スペースのあるエイリアス
スペースを使用してエイリアスを作成することもできます。
これを行うときは、エイリアスを二重引用符で囲みます。一部のDBMSでは、オプションで他の文字(角かっこ[]
など)を使用できます。 SQL Serverで)。
SELECT
f_name + ' ' + l_name AS "Full Name"
FROM customers;
結果:
+---------------+ | FullName | |---------------| | Homer Connery | | Bart Pitt | | Nancy Simpson | | Boris Trump | +---------------+
エイリアスにスペースを含めることは、一般的に良い習慣とは見なされないことに注意してください。スペースはクライアントアプリケーションにあらゆる種類の問題を引き起こす可能性があるため、通常、列エイリアスにスペースを含めないようにする必要があります。
AS
を省略します キーワード
前述のように、AS
キーワードはオプションです。したがって、AS
を使用せずに、前の例を書き直すことができます。 キーワード。
これが1つの例です。
SELECT
f_name FirstName,
l_name LastName
FROM customers;
結果:
+-------------+------------+ | FirstName | LastName | |-------------+------------| | Homer | Connery | | Bart | Pitt | | Nancy | Simpson | | Boris | Trump | +-------------+------------+
AS
は省略できますが キーワード、一部のSQL専門家は、読みやすさの理由から、常にそれを含めることを好みます。
どちらの構文を使用する場合でも、一貫性を保つことをお勧めします。 AS
を省略することを選択した場合 キーワード、それからそれをどこでも省略します。含めることを選択した場合は、どこにでも含めてください。
テーブルエイリアス
テーブルエイリアスは列エイリアスに似ていますが、名前が示すように、テーブルエイリアスはテーブル用です。
テーブルエイリアスは、相関名とも呼ばれます。 。
テーブルエイリアスは、結合を実行するときによく使用されます。コードをより簡潔で読みやすくするのに役立つため、複雑なクエリで特に役立ちます。
以下は2つの例です。 1つはテーブルエイリアスがなく、もう1つはテーブルエイリアスがあります。
テーブルエイリアスのない例
これは、2つのテーブル間で左結合を行うクエリの基本的な例です。
SELECT
PetTypes.PetType,
COUNT(Pets.PetTypeId) AS Count
FROM Pets
LEFT JOIN PetTypes
ON Pets.PetTypeId = PetTypes.PetTypeId
GROUP BY PetTypes.PetType
ORDER BY Count DESC, PetTypes.PetType;
結果:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
参照する必要がある場合は常に、各テーブルの名前を詳しく説明していることに注意してください。
テーブルエイリアスの例
テーブルエイリアスを除いて、同じ例を次に示します。
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets AS p
LEFT JOIN PetTypes AS pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
結果:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
列エイリアスと同様に、AS
キーワードは、テーブルエイリアスではオプションです。 Oracleでは、AS
キーワードは、テーブルエイリアスではサポートされていません(ただし、列エイリアスではサポートされています)。
したがって、例を次のように書き直すことができます。
SELECT
pt.PetType,
COUNT(p.PetTypeId) AS Count
FROM Pets p
LEFT JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId
GROUP BY pt.PetType
ORDER BY Count DESC, pt.PetType;
結果:
+-----------+---------+ | PetType | Count | |-----------+---------| | Dog | 4 | | Cat | 3 | | Bird | 1 | +-----------+---------+
いずれにせよ、同じ結果です。