2010年4月27日火曜日

複合キー

複合キー
・複合キーの一部の列に対してNULLを入れることはできない。
・一部のキー列に対して、新規に索引をつけることはできる。

SYNONYM

『プライベート・シノニム』と『パブリック・シノニム』が存在する。

●プライベート・シノニム
・スキーマ内でのみ有効なシノニム。
・ユーザが作成し、そのユーザ自身が使う。

●パブリック・シノニム
・oracleデータベース全体で有効なシノニム。
・DBAユーザもしくはcreate public synonym権限を持つユーザが作成できる。
・シノニムのもととなるオブジェクトの利用権限を持つユーザが利用できる。
※スキーマ指定は不要。オブジェクトの所有者を隠すことができる。

※create public synonym権限はシステム権限
オブジェクト所有者は所有するオブジェクトのすべての権限を持ってる
取り消しはできない。

●ビューとの違い
所有者以外のビューへのアクセスはビューに対するオブジェト権限が必要。
シノニムの場合、基礎表へのアクセス権限が必要。

2010年4月26日月曜日

NULLIF

引数は2つ
第1引数=第2引数が同じ場合:nullを返す。
第1引数<>第2引数の場合:第一引数値を返す。
第1引数がnullの場合、エラーとなる。

select nullif(1,1) ansa, nullif(1,2) ansb from dual;

ansa : null
ansb : 1

DECODE

・ORACLE独自のCASE WHEN
※もちろんSQL標準のCASE WHENも存在する。
select decode(3,1,'a1',2,'a2','default') from dual;
上記の場合、答えはdefault

ちなみにdefaultが定義されていない場合、答えはnullとなる。

各種データ型の特徴

・date, long,clob型
桁数を指定できない。

2010年4月12日月曜日

MAX、MIN

・グループ関数の一つ。詳細は略。

Select age, max(*) from student;
一見うまくいきそうだが、エラーになる。
『グループ関数と他の列は指定できない。』という掟がある。
※上記の場合、group byでageを指定すればうまくいく。が期待結果は異なるな。

グループ関数同士であれば、正常に処理され、SQL結果が出力される。
Select min(*), max(*) from student;

NULLS FIRST, NULLS LAST

・ソートがかかるとき、NULL値は『最大値』として扱われる。
・『NULLS FIRST』『NULLS LAST』で明示的にソート時のNULL値の出力結果を変えることができる。

order by emp_no asc nulls first