.NET開発者のためのブログメディア
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方法について紹介します。
・列名を指定しないINSERT
・列名を指定するINSERT
・1行のINSERT文で複数データを登録
・SELECTの結果をINSERT
INSERTするだけでも様々な方法がありますね。
ぜひご自身でSQL文を書いて、理解を深めてください。
Search キーワード検索
Popular 人気の記事
reccomended おすすめ記事
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)