INSERT と SELECT を使用した行の追加
テーブルに行を追加するには、INSERT ステートメントおよび SELECT ステートメントを次のように使用します。
- INSERT ステートメントを使用して、直接またはサブクエリ経由で値を指定します。
- SELECT ステートメントを INTO 句と共に使用します。
INSERT を使用する
INSERT ステートメントは、テーブルに 1 行以上の新しい行を追加します。単純な処理では、INSERT は次の形式で指定します。
INSERT [INTO] table_or_view [(column_list)] data_values
INSERT ステートメントを実行すると、指定したテーブルまたはビューに data_values が 1 行以上の行として挿入されます。column_list はコンマで区切った列名のリストであり、データを入力する列を指定するときに使用します。column_list を指定しなかった場合は、テーブルまたはビュー内のすべての列にデータが入力されます。
column_list にテーブルまたはビュー内の一部の列のみを指定した場合、リストに指定されていない列には NULL 値 (または列に既定値が指定されている場合は既定値) が挿入されます。列のリストに指定されていない列はすべて、NULL 値を許容しているか、既定値が割り当てられている必要があります。
次の条件に該当する列に対しては、値が SQL Server 2005 データベース エンジンで生成されるので、INSERT ステートメントでは値を指定しません。
列の値を生成する IDENTITY プロパティを伴う列
NEWID 関数を使用して一意な GUID 値を生成する既定値を持つ列
計算列
計算列とは、式で定義される仮想的な列であり、CREATE TABLE
ステートメント内の 1 つ以上の他の列から計算されます。この例を次に示します。CREATE TABLE TestTable (ColA INT PRIMARY KEY, ColB INT NOT NULL, ColC AS (ColA + ColB) * 2)
次の例では、値が自動生成される列や既定値が設定されている列を持つテーブルに行を挿入する方法を示します。各 INSERT
ステートメントは、すべての列ではなく一部の列の値を含む行を挿入しています。最後の INSERT
ステートメントでは、どの列も指定せず、既定値のみを挿入しています。
USE AdventureWorks;
GO
IF OBJECT_ID ('dbo.T1', 'U') IS NOT NULL
DROP TABLE dbo.T1;
GO
CREATE TABLE dbo.T1
(
column_1 int IDENTITY,
column_2 varchar(30)
CONSTRAINT default_name DEFAULT ('my column default'),
column_3 timestamp,
column_4 varchar(40) NULL
);
GO
INSERT INTO dbo.T1 (column_4)
VALUES ('Explicit value');
INSERT INTO dbo.T1 (column_2, column_4)
VALUES ('Explicit value', 'Explicit value');
INSERT INTO dbo.T1 (column_2)
VALUES ('Explicit value');
INSERT INTO T1 DEFAULT VALUES;
GO
SELECT column_1, column_2, column_3, column_4
FROM dbo.T1;
GO
VALUE 句および SELECT サブクエリと共に INSERT を使用する
入力されるデータ値は、列リストに一致している必要があります。データ値の個数は、列数と同じである必要があります。また、各データ値と対応する列はデータ型、有効桁数、および小数点以下桁数が一致している必要があります。データ値は、次の方法で指定できます。
VALUES
句を使用して、1 行のデータ値を指定します。次に例を示します。INSERT INTO MyTable (PriKey, Description) VALUES (123, 'A description of part 123.')
詳細については、「INSERT と VALUES の使用による行の挿入」を参照してください。
SELECT
サブクエリを使用して、1 行以上のデータ値を指定します。次に例を示します。INSERT INTO MyTable (PriKey, Description) SELECT ForeignKey, Description FROM SomeView
詳細については、「INSERT と SELECT サブクエリを使用した行の挿入」を参照してください。
INTO と共に SELECT を使用する
別のテーブルの値から新しいテーブルを作成するには、SELECT INTO
を使用します。次に例を示します。
SELECT LastName, FirstName, Phone
INTO dbo.PhoneList492
FROM Person.Contact
WHERE Phone LIKE '492%'
詳細については、「SELECT INTO を使用した行の挿入」を参照してください。
参照
その他の技術情報
SELECT (Transact-SQL)
INSERT (Transact-SQL)
テーブルへのデータの挿入