INSERT文

  • 基本構文
INSERT INTO 表名 (列名, 列名, 列名) VALUES (値, 値, 値)
  • 全項目挿入の場合は列名は省略可能
  • 明示的なNULLの挿入の他、文字列型と日付型では、空文字でもNULLが挿入される。

UPDATE文

  • 基本構文
UPDATE 表名 SET 列名 = 値, 列名 = 値, 列名 = 値
  • UPDATE文での更新時、対象行に対してORACLEは行レベルロックを行う。
  • WHERE句をうっかり忘れると全行更新されるので気を付けよう。マジで。

DELETE文, TRUNCATE文, DROP文

  • 基本構文
DELETE [FROM] 表名
  • FROM は省略可能だったのか。知らなかった。
  • WHERE句をうっかり忘れると(略
TRUNCATE TABLE 表名
  • データ定義文であり、行の削除をロールバックできない。
  • 条件指定できず、全ての行を削除する。
  • 表の削除トリガーが実行されない。
  • 参照整合性の親表の場合はエラーとなる。
TRUNCATE TABLE 表名

CRUD文と副問い合わせ

  • INSERT文と副問合せ
INSERT INTO 表名 (副問合せ)
  • VALUESが無いことに注意する。
INSERT INTO (副問合せ) VALUSE (副問合せで出来る表に合わせた値)
  • 副問合せが単表の場合、その表にINSERTされる模様。これはしっくりこない。。
  • UPDATE文/DELETE文と副問合せ
    • UPDATE文はSET句への値、WHERE句で使用可能。
    • DELETE文はWHERE句で使用可能。

SAVEPOINTについて

  • 使い方
SAVEPOINT A;
色々コード書く
ROLLBACK TO A;
  • これでAまで戻る。一度Aまで戻っても、SAVEPOINT AはROLLBACKされない。
  • SAVEPOINT B とかがあった場合は、Aに戻った時に消えてしまう。
  • SAVEPOINT A とか2回使うと、2回目の記述でポイントが上書きされてしまうので注意。

暗黙のコミット

  • 発生ケース
    • DDL文を発行した
    • SQL*PLUSE および iSQL*PLUSEを正常に終了した。

暗黙のロールバック

  • 発生ケース
    • システム障害
    • SQL*PLUSE および iSQL*PLUSEを異常終了した。

データ型

  • 文字列
    • CHAR(s)
      説明の必要なし。
    • VARCHAR(s)
      説明の必要なし。
    • LONG(s)
      ---可変長の文字データ型。
      • 最大2Gバイトまでデータを格納可能。
      • ひとつの表にひとつしか定義できない。
      • WHERE句、GROUP BY句で使用できない。
      • 整合性制約や、索引に使用できない。
      • 副問合せを使用して表を作成する場合に、LONG型の列の値はコピーされない。

データディクショナリ

USER_XXX そのユーザーに関する情報を格納する
ALL_XXX そのユーザーがアクセス可能なすべての情報を格納する
DBA_XXX データベース全体の情報を格納する
V$_XXX 動的パフォーマンスビューと呼ばれ、データベースのパフォーマンスおよびロックについての情報を格納する
  • データディクショナリ全ての実表とビューはSYSユーザーが所有しています。
    SYSスキーマに含まれるオブジェクトは変更してはいけません。

USER_OBJECTS

  • USER_OBJECTS
  • USER_TABLES
  • USER_TAB_COLUMNS
  • USER_CONSTRAINTS
  • USER_CONS_COLOMNS
  • USER_VIEWS
  • USER_SEQUENCES
  • USER_SYNONYMS
  • USER_CATALOG
  • ALL_XXX で、XXXが上記と同名のものが存在する。
  • 名前はCATALOG以外全て複数形だということは覚えておいた方がいいかも。
最終更新:2011年08月20日 20:44