【SQL Server】INSERT文 の使い方を1つづつわかりやすく説明します。

SQL Server
この記事は約3分で読めます。

【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

 

コメント

タイトルとURLをコピーしました