2010年5月20日木曜日

集合演算子

UNION ALLを除き、第1列の昇順で出力はソートされる。
ORDER BY句は集合演算子のSQLでも一番最後に記述する。

NOT NULL制約

制約には、列レベルで定義する列制約と表レベルで定義する表制約があるが、NOT NULL制約は列制約でのみ定義することができます。

小数の計算が整数値だった場合

フォーマットを指定いない限り、整数部だけで表示される。
(".00"のような出力にはならない。)


SELECT 0.01 * 100 FROM DUAL;
A.)
1

LONG

【特徴】
可変長の文字データ型
VARCHAR2よりも最大長が長い。(最大2Gバイト)

【制約】
1テーブルで1列しか指定できない。
制約は定義できない。
ORDER BY句またはGROUP BY句に含めることができない。
副問合せを使用して表を作成する場合、LONG列はコピーされない。

※VIEWにLONG型を含めることは可能。

INTERVAL DAY TO SECOND

INTERVAL YEAR TO MONTH

年月の間隔を表す列データの型

2010年5月15日土曜日

TO_NUMBER

引数に日付を入れることはできない。

USING

・usingで指定する列は、表名で修飾するとエラーになる。
・usingで指定する列はselect句で指定する場合も同じで、表名で修飾してはならない。
※これは自然結合でも同じ。結合に使用される列が表名で修飾してはならない。
※もちろん、usingで指定しない列は表名で修飾することができる。

日付の演算

select sysdate + 7 from dual;
現在日時の7日後が表示される。

単一行関数

・ひとつの行に対してひとつの値を返す関数
(※一方、複数の行の値をもとにひとつの値を返すのはグループ関数)

・select,where,およびorder by句で使用できる。

2010年5月5日水曜日

表領域

【表領域とスキーマの関係について】
関連はない。
1つのスキーマに属したオブジェクトを複数の表領域で管理することも可能。

索引

【B*Tree索引について】
null値のデータは含まないため、「is null」による検索では索引を引用しないらしい。
対処法として以下がある。
・nullを特定の値に置き換える。
・ビットマップ索引を使用する。

【表領域について】
表と索引は別の表領域で管理することもできる。
分けることでI/Oの競合を低減させることができる。

ワイルドカード

『%』
0以上の任意の文字の連続
『_』
任意の一文字

※エスケープ方法
e.x
select empno from emp where job like '%sa¥_%' escape '¥';

CASCADE

【DROP時のCASCADE】
・表削除時に参照している別表の外部キー制約を削除することができる。
※子表データの削除ではないことに注意。
E.X.)
drop table テーブル名 cascade constraints

【外部キー生成時のCASCADE】
・on delete cascade
親表の行削除時、子表で外部キーで参照している行も削除される。
・on delete set null
親表名の行削除時、子表で参照している外部キー値がnullにまする。
E.X.)
alter table hoge add constraint fk_col foreign key(col) references parenttbl(col) on delete cascade.

【DELETE時のCASCADE】
ちょっとわからない。調査中

LITERAL

select句でリテラルを記述可能。
単一引用符が含まれる場合、代替引用符(q)を使用して、独自デリミタを指定できる。
※『代替引用符演算子』と呼ぶ。

E.X.)
select q'<'s product>' from dual.

q''の中を引用符デリミタで囲み、その中にリテラルを記述する。
上記の例文の場合、<>が引用符デリミタとなる。
引用符デリミタはほかにもシングルバイト,マルチバイト,(), [],{}がつかえる。

CHECK

テーブルの列に指定する制約

・制約条件にSysdate,uid,user,userenvを使用するこよは出来ない。
・一つの列に複数のcehck制約をつけることができる。

NULL

・Nullの比較は、『>』『<』どちらの場合でも、trueにならない。
E.X.)
select sysdate from dual where 1 < null;
select sysdate from dual where 1 > null;
A.)どちらも検索結果件数は0になる。

UNIQUE

留意事項)
Uniqueつけた列にnot null制約をつけることができる。
※PRIMARY KEYとの違いはわからない。

VIEW

・VIEWの削除権限
所有者またはdrop any view権限

留意事項)
・VIEWはパフォーマンス向上の目的で使用されることはない。

COALESCE

NVLを一般化した関数。
引数の最初のNULLではない値を返す。
引数の数は可変長だが2つ以上から。

E.X.)
select coalesce(null,'hoge',null) from dual;
A.) ''hoge