SQLのシノニムを作成/使用するサンプルです。Oracleで確認しています。
目次
説明 | シノニム(synonym) |
サンプル | シノニムを作成する |
シノニム名を変更する | |
シノニムを削除する | |
シノニムを確認する | |
「public synonymを作成する権限」を付与する |
シノニム(synonym)
create public synonym シノニム名 for テーブル等; |
- シノニムは、表やプロシージャ等の別名をつけて実行できます。
- 元の表名等が変更になってもシノニムを再定義すればアプリ側は影響を受けません。
- 元のオブジェクトが変更や削除されるとシノニムは無効になります。
- ほぼpublicで使用されます。publicがつくと全ユーザーが参照できます。
- あるユーザが他のスキーマのテーブルにアクセスする際は、スキーマ名.テーブル名の指定が必要ですが、シノニムであればシノニム名のみでよくなります。
- シノニム(synonym)は、同義語という意味です。
- 以下は、Oracleのシノニムのリンクです。
https://docs.oracle.com/cd/E16338_01/server.112/b56299/statements_7001.htm
シノニムを作成する
シノニムを作成するサンプルです。
1.以下のテーブルがあるとします。
id | name | romaji |
---|---|---|
1 | 鈴木 | suzuki |
2 | 田中 | tanaka |
3 | 佐藤 | sato |
2.上記のemployeeテーブルからTestSyno1というPublicシノニムを作成します。
CREATE PUBLIC SYNONYM TestSyno1 FOR employee;
3.以下は、シノニムで値を取得するサンプルです。
select * from TestSyno1;
4.結果は、以下のとおりです。
id | name | romaji |
---|---|---|
1 | 鈴木 | suzuki |
2 | 田中 | tanaka |
3 | 佐藤 | sato |
テーブルと同じ値が取得できます。
Publicシノニムを登録するには権限が必要です。
シノニム名を変更する
rename 変更前シノニム名 to 変更後シノニム名; |
シノニム名を変更するサンプルです。
RENAME TestSyno1 TO TestSyno2;
renameでシノニム名をTestSyno1からTestSyno2に変更しています。
Publicシノニムは変更できません。削除してから新規作成します。
シノニムを削除する
drop public synonym シノニム名; |
シノニムを削除するサンプルです。
DROP PUBLIC SYNONYM TestSyno1;
DROP PUBLIC SYNONYMとシノニム名を指定します。
Publicシノニムを削除するには権限が必要です。
シノニムを確認する
シノニムを確認するサンプルです。
SELECT * FROM ALL_SYNONYMS
where SYNONYM_NAME = 'TESTSYNO1';
ALL_SYNONYMSテーブルで作成したシノニムを確認できます。
「public synonymを作成/削除する権限」を付与する
「public synonymを作成/削除する権限」を付与する手順です。
1.現在の付与されている権限は、SESSION_PRIVSテーブルで確認できます。
select * from SESSION_PRIVS;
2.system等の権限のあるユーザでログインします。
3.grant文で権限を与えます。
grant CREATE PUBLIC SYNONYM to hr;
grant DROP PUBLIC SYNONYM to hr;
1行目は作成する権限で2行目は削除する権限です。
それぞれhrユーザに与えています。
関連の記事