Navicatブログ

データベースエイリアスの使用 2023年7月10日 Robert Gravelle

SQLでは、テーブルまたは列に一時的な名前を付けるためのエイリアスの使用がサポートされています。エイリアスを使用すると、入力の手間が省けるだけでなく、クエリを読みやすく理解しやすくすることもできます。今日のブログでは、Navicat Premium 16.2を使用して、クエリにエイリアスを組み込む方法を学びます。

SQLエイリアスの概要

冒頭で述べたように、テーブル名と列名の両方にエイリアスを付けることができます。それぞれの構文は次のとおりです:

エイリアス列の構文

SELECT 
  column_name [AS] alias_name,
  column_name AS 'Alias Name' -- for names with spaces
FROM table_name;

エイリアステーブルの構文

SELECT column_name(s)
FROM table_name [AS] alias_name;

エイリアスに関して考慮すべき2つの点:

  • エイリアスの前には通常ASキーワードが付きますが、これはオプションです。
  • エイリアスは、そのクエリの存続期間中にのみ存在します。

結合クエリのテーブルエイリアス

以下は、特定の映画の全てのコピーに関する情報を取得する、Sakilaサンプルデータベースに対するクエリです:

SELECT *
FROM film f 
  INNER JOIN inventory i ON i.film_id = f.film_id
WHERE i.store_id = 1 AND f.title = "Academy Dinosaur";

上記のクエリでは、filmテーブルとinventoryテーブルの両方にfilm_id列が含まれているため、完全修飾する必要があります。つまり、テーブル名をプレフィックスとして付ける必要があります。この場合、ステートメントを短縮するためにエイリアスを使用できます。

Navicatのクエリとその結果を次に示します:

film_query (80K)

列のエイリアス

列名の場合、データベーステーブルを設計する時に列名を短くするために略語がよく使用されます。例えば:

  • "sales order number"は"so_no"。
  • "qty"は"quantity"を表します。

ここで、列の内容をより直観的にするために列のエイリアスを使用することができます。以下に例を示します:

SELECT
	inv_no AS invoice_no,
	amount,
	due_date AS 'Due date',
	cust_no 'Customer No'
FROM
	invoices;

以下に示すように、列のエイリアスを式に割り当てることもできます:

expression_alias (113K)

上記のクエリは、価格引き上げを適用した後の製品の現在価格と将来の価格の両方を選択します。

列エイリアスの制限事項

列のエイリアスは、SELECT句で割り当てられるため、SELECT句の後に評価される句でのみエイリアスを参照できます。したがって、WHERE句にエイリアスを含めることはできません。実行するとエラーが発生します:

alias_error (42K)

これは、データベースがSELECT句の前にWHERE句を評価するために発生します。したがって、WHERE句を評価する時点では、データベースにはNewPrice列のエイリアスの情報がありません。

ただし、ORDER BY句はSELECT句の後に評価されるため、ORDER BY句で列のエイリアスを使用することができます:

alias_in_order_by (113K)

データベースはクエリの句を次の順序で評価します:

FROM > SELECT > ORDER BY

テーブルエイリアスとNavicat

Navicatでは、テーブルエイリアスが定義されると、オートコンプリートリストに表示されます。

alias_in_navicat (65K)

これにより、エイリアスを使用するとさらに時間が節約されます!

データベースエイリアスの使用に関する最終的な考え方

今日のブログでは、Navicat Premium 16.2 を使用して、クエリにエイリアスを組み込む方法を学びました。エイリアスは、クエリを読みやすく理解しやすくする簡単な方法です。コードは実行だけを目的とするものではないため、これは重要です。それはコミュニケーションメカニズムでもあります。

ブログのアーカイブ
シェア