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

  • 9.1 INSERT文使用時のポイント
INSERT文で挿入する列名を省略した場合、全ての列に値を指定する必要がある。

  • 9.2 DEFAULT値指定時のDML
列にDEFAULT値が指定してある場合、DMLにてDEFAULTを使用することができる。
(例)INSERT INTO VALUES (2000,DEFAULT,500)

  • 9.3 小数点付NUMBER型
NUMBER(5,2)の場合(整数桁を3桁まで、少数桁を2桁まで格納)
◆123.45 → 問題なく格納
◆1234.56 → エラー(整数桁が1桁多い)
◆123.456 → 123.46で格納(小数第三位が丸められる)

  • 9.4 TO_DATE関数の引数省略時のデフォルト値
月日を省略した場合
 月:当月
 日:1日
時間を省略した場合
 午前0時0分0秒

  • 9.5 EMP表をCOPY_EMP表にコピーする場合
○ INSERT INTO COPY_EMP SELECT * FROM EMP
× INSERT INTO COPY_EMP AS SELECT * FROM EMP

  • 9.9 DELETE文の基本構文
DELETE [FROM] 表名
★"FROM"は省略できる

  • 9.10 with check option
■INSERT、UPDATE、DELETE文の中で表の変わりに副問合せを使用した場合に、副問合せのWHERE句に違反する行を生成させない
(例)
◆INSERT INSERT INTO view1(
SELECT empno, ename, deptno FROM emp
WHERE deptno = 10
WITH CHECK OPTION)
VALUES (1010, 'JONY',20);
→エラー
◆UPDATE UPDATE(
SELECT empno, ename, deptno FROM emp
WHERE deptno = 10
WITH CHECK OPTION)
SET deptno = 20
FROM view1;
→エラー
◆DELETE DELETE句の場合はWHERE句に存在しない行は元々存在しないので、エラーになりません。

  • 9.11 TRUNCATE TABLE
  1. 表から全ての行を削除する
  2. DDL文なのでロールバックできない
 →DELETE文より処理が速い(ロールバック情報を生成しないため)
  1. 表が利用していた領域が開放され、他のオブジェクトで再利用可能になる
 →DELETE文の場合、領域はその表に対する以降のINSERT文で再使用される
  1. 削除トリガーを起動しない
  2. 外部キー制約(参照整合性制約)の親表を切り捨てることはできない

  • 9.12 トランザクションの終了条件
【トランザクションが終了する場合】
  1. DDL文およびDCL文の実行
  2. DBを更新しているアプリケーション(SQL*Plus、iSQL*Plusなど)の終了
  3. システムクラッシュ

【トランザクションが終了しない場合】
  1. SAVEPOINT文の実行
  2. ROLLBACK TO (SAVEPOINT);の実行

  • 9.14 自動ロールバックされるイベント
  1. DBを更新しているアプリケーション(SQL*Plus、iSQL*Plusなど)の終了
  2. システムクラッシュ
★DDL文、DCL文はCOMMITされる

  • 9.17 読み取り一貫性
  1. 通常のSELECT文を実行してもロック待ちにはならない
 →SELECT ~ FOR UPDATE で明示的にロックを確保することもできる
  1. 更新中のデータに対しSELECT文を実行すると、UNDOセグメント(ロールバックセグメント)のデータが使われる
  2. 1つのSELECT文の中で複数回同じデータを検索しても、SELECT文の開始時にコミットされたデータが保証される