| 1行挿入する |
行を挿入するにはinsert文を使用します。insert into テーブル名 (フィールド名、フィールド名) values (フィールド値、フィールド値)というように書きます。これで行が1行挿入されます。 この時の注意点として、フィールド名の順序とフィールド値の順序が揃っている必要があります。 また、フィールド名には最低でもテーブルのキーが全て指定されていないといけません。 そうでないとキー値にNULLが挿入されることになりエラーとなるからです。 insert時に全ての列を指定する必要はなく、列を省略することができます。その場合、省略した列には null がセットされます。 ただし、テーブル定義作成時に、列にデフォルトで値を指定している場合は、nullはセットされずにデフォルト値がセットされます。 |
| 行挿入時にフィールド名を省略する |
insertする時に全ての列に値を指定する場合は、フィールド名を省略することが出来ます。以下はフィールド名を省略したinsert文です。insert into テーブル名 values (フィールド値、フィールド値)このとき、フィールド値の順番は、テーブル作成時の列順序になります。 また、フィールド値のデータ型も一致している必要があります。文字列型は大文字小文字区別されシングルクォーテーション(')で囲む必要があります。 また日付型も同様にシングルクォーテーション(')で囲む必要があります。 日付型でややこしいのは日付書式もあわせる必要がある点です。書式を合わせるにはto_date関数を使用します。
insert into tbl_employee
(emp_id,birthday) values ('00001',to_date('1980-02-02','yyyy-mm-dd'));
|
| 複数行insertする |
|
insertでは、複数行を一度にinsertすることもできます。 以下のようにselect文を指定します。 insert into テーブル名 select * from 別のテーブル名 where ~~;複数行insertする場合も列順序など合わせる必要があります。 |
| 異なるスキーマのテーブルレコードを挿入する |
|
異なるスキーマのテーブルレコードをinsertするには、 スキーマ名.テーブル名 というようにテーブル名の前にスキーマ名を指定します。 現在のスキーマがscottとします。testというスキーマのテーブルレコードをinsertしたいとします。 以下、例です。 insert into scott.emp select * from test.emp where ~~; |