今回は,DML文について解説します。DMLとはData Manipulation Languageの略で,表(テーブル)内の行(レコード)の追加(INSERT)や削除(DELETE),列値の更新(UPDATE)などを行う際に使用するSQL文のことを指します。

行を挿入するINSERTの注意点

 まずは,INSERTから見ていきましょう。INSERTの基本構文は,次の通りです。

INSERT INTO 表名 [ (列名 , ・・・ ) ]
VALUES (値 , ・・・ )

 このときの注意点は次の通りです。

(1)表内のすべての列に値を入れる場合は,列名の指定を省略することができる。
(2)列名の指定を省略する場合は,表作成時の列の並び順に,値を指定する。
(3)VALUES句は,指定した列名の数(列名の指定を省略した場合は表内の列の数)に一致した値を指定する。
(4)VALUES句は,指定した列名(列名の指定を省略した場合は表の列)の並び順に対応した値を指定する。
(5)VALUES句で指定した値は,列名(列名の指定を省略した場合は表の列)のデータ型と同じまたは互換性がなければいけない。
(6)VALUES句で指定する値には,リテラル,式,関数が使用できる。
(7)VALUES句には,NULL,DEFAULTも指定できる。
(8)INSERT文で指定しなかった列には,DEFAULT値(設定されている場合)またはNULLが挿入される。

 では,図1の列構成のDEPT2表およびEMP2表を使用して,INSERT文の注意点を確認していきましょう。

図1●DEPT2表とEMP2表(DESCはどんな名前の列が存在するのかを確認するSQL*Plusコマンド)
図1●DEPT2表とEMP2表(DESCはどんな名前の列が存在するのかを確認するSQL*Plusコマンド)

 まず,列名を指定して値を挿入しましょう。指定する列の並び順は,表内の列の並び順と同じにする必要はありません(図2)。

図2●列名を指定した挿入
図2●列名を指定した挿入

 すべての列ではなく一部の列だけを指定した挿入も見てみましょう。言い換えれば,特定の列を省略した挿入です(図3)。

図3●一部の列だけを指定した(特定の列を省略した)挿入
図3●一部の列だけを指定した(特定の列を省略した)挿入

 LOC列を省略したため,LOC列にはNULLが挿入されましたね。