
SQLServerのINSERT intoの使い方とは?列名を指定する・指定しないINSERT
- SE
- SQLServerのINSERT intoはどのような使い方ができるのですか。
- PM
- 列名を指定しないでINSERTしたり、列名を指定してINSERTしたりできます。
目次
SQLServerのINSERT intoの使い方とは?
今回は、SQLServerのINSERT intoの使い方について説明します。テーブルにレコードを登録するには、INSERT文を使用します。
以下のINSERT方法について紹介します。
・列名を指定しないINSERT
・列名を指定するINSERT
・1行のINSERT文で複数データを登録
・SELECTの結果をINSERT
SQLServerのINSERT intoの使い方に興味のある方はぜひご覧ください。
列名を指定しないINSERT
SQLServerでテーブルにレコードを登録するには、INSERT文を使用します。
列名を指定しないINSERT文について紹介します。
ここでは、以下のような定義の””table_1″”テーブルを使用します。
1 2 3 4 5 6 7 |
項目名 属性 長さ NULL許可 ------------- --------- ------ -------- id bigint 8 YES last_name nchar 20 YES first_name nchar 20 YES phone ntext 16 YES birth_date date 3 YES |
列名を指定しないINSERT文は以下のように記述します。
1 |
INSERT into テーブル名 VALUES( '1カラム目の値', '2カラム目の値', … ) |
VALUESの後の値はテーブルのカラムの順に指定してください。
それでは実際のSQL文を見てみましょう。
1 2 3 4 5 6 7 8 |
-- 列名を指定しないINSERT INSERT into table_1 VALUES( 1, 'taro', 'tanaka', '090-1111-1111', '1980-01-01'); -- 値を設定しないカラムにはNULLを指定する INSERT into table_1 VALUES( 2, 'hanako', 'yamada', '090-2222-2222', NULL); INSERT into table_1 VALUES( 3, 'ichiro', 'suzuki', NULL, '1990-02-02'); -- 結果を表示する SELECT * FROM table_1; go |
実行結果は以下のようになります。
1 2 3 4 5 |
id last_name first_name phone birth_date -------------------- ---------- ---------- -------------- ---------------- 1 taro tanaka 090-1111-1111 1980-01-01 2 hanako yamada 090-2222-2222 NULL 3 ichiro suzuki NULL 1990-02-02 |
このように、SQLServerでは列名を指定せずにレコードを登録できます。
列名を指定するINSERT
SQLServerで、列名を指定するINSERT文について紹介します。
列名を指定するINSERT文は以下のように記述します。
1 |
INSERT into テーブル名( カラム名1, カラム名2, … ) VALUES( 'カラム名1の値', 'カラム名1の値', … ) |
すべてのカラム名を指定する必要はありません。
カラム名に一致する値を指定してください。
それでは実際のSQL文を見てみましょう。
1 2 3 4 5 6 7 8 9 |
-- 列名を指定しないINSERT INSERT into table_1(id, last_name, first_name, phone, birth_date) VALUES ( 1, 'taro', 'tanaka', '090-1111-1111', '1980-01-01'); -- すべてのカラムを指定しなくてもよい INSERT into table_1(id, last_name, first_name ) VALUES ( 2, 'hanako', 'yamada' ); -- カラムの順序は変更してもよい INSERT into table_1(birth_date, phone, first_name, last_name, id ) VALUES( '1990-02-02', NULL, 'suzuki', 'ichiro', 3); -- 結果を表示する SELECT * FROM table_1; go |
実行結果は以下のようになります。
1 2 3 4 5 |
id last_name first_name phone birth_date -------------------- ---------- ---------- ------------- ---------------- 1 taro tanaka 090-1111-1111 1980-01-01 2 hanako yamada NULL NULL 3 ichiro suzuki NULL 1990-02-02 |
このように、SQLServerでは列名を指定してレコードを登録できます。
1行のINSERTで複数データの登録
SQLServerでは、複数レコードを1つのINSERT文で登録できます。
通常は、以下のようにレコード数分、INSERT文を発行する必要があります。
1 2 3 4 5 6 |
INSERT into table_1 VALUES( 1, 'taro', 'tanaka', '090-1111-1111', '1980-01-01'); INSERT into table_1 VALUES( 2, 'hanako', 'yamada', '090-2222-2222', '1980-02-02'); INSERT into table_1 VALUES( 3, 'ichiro', 'suzuki', '090-3333-3333', '1990-03-03'); INSERT into table_1 VALUES( 4, 'takako', 'takahashi', '090-4444-4444', '1990-04-04'); INSERT into table_1 VALUES( 5, 'jiro', 'sato', '090-5555-5555', '1990-05-05'); go |
複数レコードを1つのINSERT文で登録するには、以下のように記述します。
1 2 3 4 5 6 7 8 |
INSERT into table_1 VALUES ( 1, 'taro', 'tanaka', '090-1111-1111', '1980-01-01') ,( 2, 'hanako', 'yamada', '090-2222-2222', '1980-02-02') ,( 3, 'ichiro', 'suzuki', '090-3333-3333', '1990-03-03') ,( 4, 'takako', 'takahashi', '090-4444-4444', '1990-04-04') ,( 5, 'jiro', 'sato', '090-5555-5555', '1990-05-05'); select * from table_1; go |
実行結果は以下のようになります。
1 2 3 4 5 6 7 |
id last_name first_name phone birth_date -------------------- ---------- ---------- -------------- ---------------- 1 taro tanaka 090-1111-1111 1980-01-01 2 hanako yamada 090-2222-2222 1980-02-02 3 ichiro suzuki 090-3333-3333 1990-03-03 4 takako takahashi 090-4444-4444 1990-04-04 5 jiro sato 090-5555-5555 1990-05-05 |
このように、SQLServerでは複数レコードを1つのINSERT文で登録できます。
SELECTの結果をINSERT
SQLServerでは、SELECTの結果をINSERTできます。
ここでは、table_1が以下の状態だとします。
1 2 3 4 5 6 7 |
id last_name first_name phone birth_date -------------------- ---------- ---------- -------------- ---------------- 1 taro tanaka 090-1111-1111 1980-01-01 2 hanako yamada 090-2222-2222 1980-02-02 3 ichiro suzuki 090-3333-3333 1990-03-03 4 takako takahashi 090-4444-4444 1990-04-04 5 jiro sato 090-5555-5555 1990-05-05 |
table_2は以下の状態だとします。
1 2 |
id last_name first_name phone birth_date -------------------- ---------- ---------- -------------- ---------------- |
table_1のレコードをSELECTしてtable_2にINSERTしてみます。
1 2 3 |
INSERT into table_2 select * from table_1; select * from table_2; go |
実行結果は以下のようになります。
1 2 3 4 5 6 7 |
id last_name first_name phone birth_date -------------------- ---------- ---------- -------------- ---------------- 1 taro tanaka 090-1111-1111 1980-01-01 2 hanako yamada 090-2222-2222 1980-02-02 3 ichiro suzuki 090-3333-3333 1990-03-03 4 takako takahashi 090-4444-4444 1990-04-04 5 jiro sato 090-5555-5555 1990-05-05 |
このように、SQLServerではSELECTの結果をINSERTできます。
- SE
- INSERTにもいろいろな方法があるのですね。
- PM
- はい。ご紹介したソースコードを参考にご自身でもぜひコードを書いて理解を深めてください。
まとめ
いかがでしたでしょうか。SQLServerにおける、以下のINSERT方法について説明しました。
INSERTするだけでも様々な方法がありますね。
ぜひご自身でSQL文を書いて、理解を深めてください。