本文へスキップ
BecomeCoder

SQL テーブル設計 (DDL)コース · 第5章 テーブルの先へ · レッスン19

シノニム ― オブジェクトに「別名」をつける

ブラウザで完結

導入

前のレッスンで見たように、大きな DB では sales.orders のように「スキーマ名.テーブル名」で指定します。しかし毎回この長い名前を書くのは面倒ですし、参照先を後から変えたくなることもあります。そこで、テーブルなどのオブジェクト短い別名を付けておける仕組みが シノニム(Synonym) です。主に Oracle で使われる機能です。

説明

シノニム(synonym=同義語)は、あるオブジェクトを指す「あだ名」です。Oracle では CREATE SYNONYM 注文 FOR sales.orders; のように作り、以後は SELECT * FROM 注文; と短く呼べます。利点は「呼ぶ側と、実体の場所を切り離せる」こと。呼び出し側はいつも別名を見ていて、その裏で本体を差し替えられます。

flowchart LR
  App["アプリ・利用者"] -->|"SELECT * FROM 注文"| Syn["シノニム 注文"]
  Syn -.今は.-> Old["sales.orders_2025"]
  Syn -.差し替え後.-> New["sales.orders_2026"]
  Note["呼ぶ側のSQLは変えずに<br/>参照先だけ入れ替えられる"]

「年が替わってテーブルを orders_2026 に切り替えたい」というとき、シノニム 注文 の向き先を変えるだけで、アプリ側の SELECT * FROM 注文; は一切変えずに済みます。この「間接的に指す」性質が、大規模運用で効いてきます。

SQLite にはシノニムはありません。 いちばん近い代わりが、レッスン26 のビューです。CREATE VIEW 別名 AS SELECT * FROM 元テーブル; とすれば、「元テーブルを指す別名」として使えます。仕組みは違いますが、「短い名前で本体を呼ぶ」という目的は同じように果たせます。

CREATE VIEW 顧客 AS SELECT * FROM users;
SELECT * FROM 顧客;

やってみよう

初期表示の CREATE VIEW 顧客 AS SELECT * FROM users; を実行し、続けて SELECT * FROM 顧客; を実行してください。users と同じ中身が「顧客」という別名で取り出せます。これが、SQLite でシノニムに一番近い使い方です。Oracle ではこれを CREATE SYNONYM で、より軽量に(SELECT を挟まず)実現している、とイメージしてください。

演習

products テーブルを指す別名 商品一覧 を、ビューを使って作ってください。

ヒント1を見る

CREATE VIEW 商品一覧 AS SELECT * FROM products; の形です。

ヒント2を見る

CREATE VIEW 商品一覧 AS SELECT * FROM products;(作成後 SELECT * FROM 商品一覧; で確認)

実際に動かしてみよう

下のエディタにクエリを書いて「実行」を押すと、ブラウザ内のSQLiteで結果が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう。

SQL — ブラウザ内で実行(SQLite)

ブラウザ内でSQLを動かす環境(SQLite)を読み込みます(初回のみ一瞬)。
スクロールして表示された時点でも自動で読み込まれます。