●ビュー
①構文
CREATE OR REPLACE VIEW VIEW名 (ビュー列名1、・・)
AS SELECT XXX [WITH CHECK OPTION] ※
[WITH READ ONLY]
※select句のwhere条件にあわないものはINSERT、UPDATEできない
以下の場合、salaryが2000以外の場合は、INSERT/UPDATE出来ない
CREATE OR REPLACE VIEW emp_v
SELECT * FROM emp
where salary = 2000
WITH CHECK OPTION;
②制限
・INSERT : ビュー定義に含まれない表の列にNOT NULL制限が無い場合
・UPDATE : SELECT句で式や関数を利用していない場合
・DELETE : ビューを作成するSELECT文にGROUP関数やGROUP BY、DISTINCTを利用していない場合
③削除
・DROP VIEW VIEW名で削除する
・VIEWを削除しても、元の表は削除されない
表を削除してもビューは削除されないが、アクセスできない
・DROP ANY VIEW権限を持つユーザのみ削除できる
●sequence
①構文
CREATE SEQUENCE SEQUENCE名
[INCREMENT BY 増分値] デフォルト:1
[START WITH 値] デフォルト:1
[MAXVALUE値 | NOMAXVALUE] デフォルト:INCREMENT BYが正の場合は、NOMAXVAL。負の場合は-1
[MINVALUE 値 | NOMINVALUE] デフォルト:INCREMENT BYが正の場合は、1。負の場合はNOMINVAL
[CYCLE/NOCYCLE]
[CACHE n| NOCACHE]
②順序の使用
・現在の順序を取得
select 順序名.currval from dual;
・次の順序を取得
select 順序名.nextval from dual;
※初めて利用する場合に、currvalを行うとエラーとなる
nextvalを行い、currvalを行う
③特徴
・共有オブジェクト
複数のユーザで利用可能
・主キーの値に生成
・一意なコードとなるため、アプリを作る必要がない
④削除
・構文
DROP SEQUENCE 順序名;
・DROP ANY SEQUENCE権限を持つ場合
※いつでも削除可能
●Index(索引)
①構文
CREATE INDEX INDEX名 ON 表名(列名1、・・);
②特徴
・PRIMARY KEY、UNIQUE制約を定義すると、一意索引が自動で作成される
③索引作成ガイドライン
・WHERE条件で利用される列
・行数の多い表から一部の行を取り出す場合
※索引を作成しないほうが良い場合
・WHERE条件に列が含まれない場合
・行数の少ない表から複数の行を取り出す場合
・表が頻繁に更新される
●シノニム
①構文
CREATE [PUBLIC] SYNONYM シノニム名 FOR スキーマ名.オブジェクト名
例)CREATE SYNONYM dept FOR hr.department;
②特徴
シノニムは、オブジェクトに対する別名
長いオブジェクト名を短縮して、容易なアクセスとする