※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

  • 11.2 VIEW定義情報
ビューの定義情報はUSER_VIEWSデータディクショナリに格納されている。


  • 11.3 単一ビューの特徴(一部のみ)
  1. データのグループ(GROUP BY句)を含まない。
  2. 関数(グループ関数など)を含まない。
  3. ビューを通してINSERT, UPDATE, DELETE操作が実行できる。


  • 11.4 複合ビューの特徴(一部のみ)
  1. データのグループ(GROUP BY句)を含む。
  2. 関数(グループ関数など)を含む。
  3. 条件付で、ビューを通してINSERT, UPDATE, DELETE操作が実行できる。


  • 11.5 CREATE VIEW構文
【CREATE VIEW文の基本構文】
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW ビュー名
[(列名, 列名, ・・・)]
AS 副問合せ
[WITH CHECK OPTION [CONSTRAINT 制約名]]
[WITH READ ONLY [CONSTRAINT 制約名]];

◆OR REPLACE ・・・ 既存のビューを更新する。
◆FORCE | NOFORCE
 FORCE :元表が存在しない場合でもビューを作成する。
 NOFORCE:元表が存在する場合のみビューを作成する。(デフォルト)
◆列名・・・ビューの列名を元表から変える場合に指定する。
◆WITH CHECK OPTION ・・・ 整合性チェックを実行する制約。
◆WITH READ ONLY ・・・ ビュー経由のDML操作を禁止する制約。


  • 11.17 ビューを通した行の削除
1つの表のみを元表とするビューは、ビューを通して行を削除できるが、以下の要素が含まれる場合は削除できない。
  1. グループ関数
  2. GROUP BY句
  3. DISTINCTキーワード
  4. 擬似列ROWNUMキーワード


  • 11.18 ビューを通した行の更新
1つの表のみを元表とするビューは、ビューを通して行を更新できるが、以下の要素が含まれる場合は更新できない。
  1. グループ関数
  2. GROUP BY句
  3. DISTINCTキーワード
  4. 擬似列ROWNUMキーワード
  5. 式によって定義された列
削除の場合と比べ、「式によって定義された列」が加わっていることに注意!


  • 11.19 ビューを通した行の挿入
1つの表のみを元表とするビューは、ビューを通して行を挿入できるが、以下の要素が含まれる場合は挿入できない。
  1. グループ関数
  2. GROUP BY句
  3. DISTINCTキーワード
  4. 擬似列ROWNUMキーワード
  5. 式によって定義された列
  6. ビューによって選択されていないNOT NULL制約つきの列が元表にある。
削除の場合と比べ、「式によって定義された列」
「NOT NULL制約つきの・・・」が加わっていることに注意!


  • 11.25 順序
順序とは、一意な数値を自動的に生成するオブジェクトである。順序の概要は次のとおり。
  1. 一意な数値を自動的に生成する。
  2. 複数ユーザーが共有可能なオブジェクトである。
    →順序はオブジェクトであるため特定のユーザーによって所有されるが、順序に対するSELECTオブジェクト権限を他ユーザーに与えることで共有できる。
  3. 通常、主キー地の作成に使用される。
  4. プログラムのコードを置き換える。(開発期間の短縮に役立つ)
  5. メモリキャッシュ機能により、数値の生成処理のパフォーマンスが向上する。
  6. 1つの順序を複数の表で利用できる。(順序と表はそれぞれ独立しているため)
  7. 連番は保証されない。
トランザクションがロールバックされても、順序値は
ロールバックされないため、欠番が発生する。


  • 11.26 順序オブジェクトの作成方法
【CREATE SEQUENCE文の基本構文】
CREATE SEQUENCE (順序名)
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];

【オプションの説明】( )内はデフォルト値
属性 デフォルト 意味
INCREMENT BY n 1 増分値n
START WITH n 1 初期値n
MAXVALUE n / NOMAXVALUE NOMAXVALUE 最大値n
MINVALUE n / NOMINVALUE NOMINVALUE 最小値n
CYCLE / NOCYCLE NOCYCLE 最大値・最小値に達したときの動作
CYCLE :最大値(最小値)に達すると、最小値(最大値)から繰り返す
NOCYCLE:指定値以上の順序を生成するとエラーになる。
CACHE n / NOCACHE CACHE 20 事前にメモリに順序番号を生成する。パフォーマンスの向上になる。
NOCACHEの場合はキャッシュしない。


  • 11.31 順序値の生成・確認
◆順序名.NEXTVAL擬似列・・・次の一意名順序値を戻す。
◆順序名.CURRVAL擬似列・・・現在の順序値を戻す。現セッションの中で NEXTVALを発行して生成した一番最近の順序値を戻す。現セッション中で一度もNEXTVALを使っていない場合、エラーになる。

NEXTVAL/CURRVALの指定可能箇所】
1.SELECT文のSELECT句(SELECT文の副問合せSELECT句では不可)
2.INSERT文の中の副問合せのSELECT句
3.INSERT文のVALUES句
4.UPDATE文のSET句

NEXTVAL/CURRVALは次の箇所では指定できない
1.ビューのSELECT句
2.GROUP BY句、DISTINCT句、HAVING句またはORDER BYを含むSELECT文
3.SELECT文、DELETE文またはUPDATE文の中の副問合せ
4.CREATE TABLE文またはALTER TABLE分の中のDEFAULT式


  • 11.37 順序オブジェクトの変更方法
【ALTER SEQUENCE文の基本構文】
ALTER SEQUENCE (順序名)
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];

【ALTER SEQUENCE文のポイント】
  1. 初期値を変更できない。変えたい場合、順序を削除し再作成する必要がある。
  2. 順序を変更できるのは、順序の所有者、ALTER ANY SEQUENCEシステム権限またはALTERオブジェクト権限を持つユーザー。
  3. 以降の番号のみが影響を受ける。
  4. 妥当性検査が実行される。
    (例)番号を昇順に生成する場合、現在の番号よりも小さいMAXVALUEはエラーになる。


  • 11.40 順序オブジェクトの削除方法
【DELETE SEQUENCE文の基本構文】
DROP SEQUENCE 順序名;


  • 11.42 索引
索引とは、表データへのアクセスを高速化するためのオブジェクトである。
  1. 列(または列の組み合わせ)に対して索引を作成する。
  2. 索引データには、キーの値とそのキーの値を持つ行へのポインタ(ROWID)が格納されている。このポインタを使い、ダイレクトに行にアクセスする。
  3. 索引が作成されていなければ全表走査が行われる。
  4. 索引を使うことで、全表走査よりディスクI/Oの回数を減らし、アクセスを高速化する。
  5. 対応する表から独立している。
  6. スキーマオブジェクトである。
  7. Oracleサーバーによって自動的に使用・保守される。(表のキーの値が更新されると、索引も自動的に更新される)
  8. 表を削除すると、その表に作成された索引も削除される。


  • 11.44 索引の作成方法
  1. 主キー制約または一意制約を定義すると、その列(または列の組み合わせ)に対して一意索引が自動的に作成される。
  2. CREATE INDEX文を使い、列(または列の組み合わせ)に対して非一意索引を作成する。


  • 11.46 CREATE INDEX文
【CREATE INDEXの基本構文】
CREATE INDEX 索引名
ON 表名(列名[,列名]・・・)


  • 11.47 一意索引の制約
◆一意索引を定義した列に対して、NULL値を除き同じ値は禁止される。


  • 11.48 索引の作成に適さない条件
  1. データ量の少ない表である。
  2. 問合せの条件としてその列が使用されることがあまりない。
  3. 全行の2~4%以上の行を検索する問合せを頻繁に実行する。
  4. 表が頻繁に更新される。
  5. 列に含まれる値の範囲が狭い。


  • 11.49 索引の作成に適した条件
  1. 列が多数のNULL値を含み、かつNULLでない値を検索する。
  2. WHERE句または結合条件で1つ以上の列が一緒に頻繁に使用される。
  3. データ量の多い表である。
  4. 全行の2~4%未満の行を検索する問合せを頻繁に実行する。
  5. 表内の列が、広い範囲の値を含む。


  • 11.50 DROP INDEX文
【DROP INDEX文の基本構文】
DROP INDEX 索引名;


  • 11.52 シノニム
【プライベートシノニム】
◆シノニムを作成したユーザーだけが使用できる。
◆スキーマオブジェクトであるため、同一スキーマ内で他のオブジェクト名と重複不可。

【パブリックシノニム】
◆全ユーザーが使用できるシノニム。
◆システムの中の全てのパブリックシノニムの中で一意でなければならない。


  • 11.54 CREATE SYNONYM文
【CREATE SYNONYM文の基本構文】
◆プライベートシノニム・・・CREATE SYNONYM シノニム名 FOR オブジェクト名;
◆パブリックシノニム・・・CREATE PUBLIC SYNONYM シノニム名 FOR オブジェクト名;


  • 11.55 シノニム作成時の注意点
シノニムとアクセス権限は全く別に扱われる。
プライベート/パブリックシノニムを作成しても、最初はアクセス権限が
ないためアクセスできない。別途設定する必要がある。


  • 11.62 DROP SYNONYM文
【DROP SYNONYM文の基本構文】
◆プライベートシノニム・・・DROP SYNONYM シノニム名;
◆パブリックシノニム・・・DROP PUBLIC SYNONYM シノニム名;