【SQL Server】INSERT文 の使い方を1つづつわかりやすく説明します。
テーブルにレコードを追加する「INSERT」文の使い方を1つづつわかりやすく説明します。
INSERT文の基本構文は下記の通りです。
INSERT INTO テーブル名 ( 列1, 列2 ) VALUES ( 列1の値, 列2の値 );
内容
少し見慣れない書き方かもあるかもしれませんが、常に INTO 句 の後ろに出てきたテーブル名が INSERT 先 になることは覚えておいてください。
事前準備
INSERT先のテーブルを事前に作成しておきます。
CREATE TABLE [dbo].[T1]( [Id] INT , [Name] NVARCHAR(20) , )
テーブル名が「T1」
ID と Name を列として持つテーブルです。
INSERT文 (列名を書く)
基本は列名を書くようにしてください。
INSERT INTO T1(Id,Name) VALUES (1,'りんご');
2レコード分 登録したい場合は、下記のように2行に分けて書くことも出来ますが、
INSERT INTO T1(Id,Name) VALUES (1,'りんご'); INSERT INTO T1(Id,Name) VALUES (2,'みかん');
まとめて書くことも出来ます。
INSERT INTO T1(Id,Name) VALUES (1,'りんご'), (2,'みかん');
クエリの実行回数が1回しかないため当然処理はこっちらの方が早いです。
INSERT文 (列名を省略する)
列名は省略することが可能です。
省略した場合、テーブルに定義された列の先頭から順番通りに値が登録されます。
正し、IDENTITY を設定した列や TIMESTAMP 型などあえて値を設定したくない列をテーブルの定義に指定た場合はエラーになるため使用できません。
INSERT INTO T1 VALUES (3,N'いちご');
INSERT文 (別のテーブルの値をコピーする)
テーブルAの値をテーブルBにINSERTすることが出来ます。
INSERT INTO テーブルB と記述し、セットする値にテーブルBの値を指定してあげるイメージです。
ただし、SELECT 文で取得出来る列数と列の型が同じである必要があります。
INSERT INTO T1 SELECT * FROM T2 WHERE Id = 2;
INSERT文 (固定値を設定する)
テーブルからコピーする方法の応用になります。
SELECT文で取得で取得した値と固定値を混ぜてSELECT文を記述してあげます。
INSERT INTO T1 SELECT 4,N'じゃがいも';
テーブル作成と同時にレコード登録
INSERTするテーブルを事前に CREATE しておかなくてもINSERT するタイミングでテーブルをCREATE することが出来ます。
テーブルAのデータを一時的に保存しておきたい場合などに使用したりします。
SELECT * INTO テーブルB FROM テーブルA
テーブルAの複製であるテーブルBが作られたのちテーブルAのレコードがテーブルBにINSERTされます。
ただし、この方法では、主キーなどの設定は複製されません。
特定の列のみで問題ない場合は、下記のように記述します。
SELECT [列1] INTO テーブルB FROM テーブルA
コメント