表コピー文(SELECT INTOとINSERT INTO SELECT)
InsertはT-sqlでよく使われる文で、Insert INTO table(field 1,field 2,...)values(value1,value2,...)このような形式はアプリケーション開発に不可欠である.しかし、私たちは開発、テストの過程で、テーブルのコピーが必要な場合によく遭遇します.例えば、table 1のデータの一部のフィールドをtable 2にコピーしたり、table 1全体をtable 2にコピーしたりします.この場合、SELECT INTOとINSERT INTO SELECTテーブルを使用して文をコピーします.
1.INSERT INTO SELECT文
文の形式は:Insert into Table 2(field 1,field 2,...)select value1,value2,... from Table1
ターゲットテーブルTable 2が存在する必要があります.ターゲットテーブルTable 2は既に存在するため、ソーステーブルTable 1のフィールドを挿入するほか、定数を挿入することもできます.例は次のとおりです.
2.SELECT INTO FROM文
文形式は:SELECT vale 1,value 2 into Table 2 from Table 1
挿入時にテーブルTable 2が自動的に作成され、Table 1で指定したフィールドデータがTable 2にコピーされるため、ターゲットテーブルTable 2が存在しないことが要求されます.例は次のとおりです.
1.INSERT INTO SELECT文
文の形式は:Insert into Table 2(field 1,field 2,...)select value1,value2,... from Table1
ターゲットテーブルTable 2が存在する必要があります.ターゲットテーブルTable 2は既に存在するため、ソーステーブルTable 1のフィールドを挿入するほか、定数を挿入することもできます.例は次のとおりです.
--1.
create TABLE Table1
(
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
create TABLE Table2
(
a varchar(10),
c varchar(10),
d int,
CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
GO
--2.
Insert into Table1 values(' ','asds','90')
Insert into Table1 values(' ','asds','100')
Insert into Table1 values(' ','asds','80')
Insert into Table1 values(' ','asds',null)
GO
select * from Table2
--3.INSERT INTO SELECT
Insert into Table2(a, c, d) select a,c,5 from Table1
GO
--4.
select * from Table2
GO
--5.
drop TABLE Table1
drop TABLE Table2
2.SELECT INTO FROM文
文形式は:SELECT vale 1,value 2 into Table 2 from Table 1
挿入時にテーブルTable 2が自動的に作成され、Table 1で指定したフィールドデータがTable 2にコピーされるため、ターゲットテーブルTable 2が存在しないことが要求されます.例は次のとおりです.
--1.
create TABLE Table1
(
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
GO
--2.
Insert into Table1 values(' ','asds','90')
Insert into Table1 values(' ','asds','100')
Insert into Table1 values(' ','asds','80')
Insert into Table1 values(' ','asds',null)
GO
--3.SELECT INTO FROM Table2
select a,c INTO Table2 from Table1
GO
--4.
select * from Table2
GO
--5.
drop TABLE Table1
drop TABLE Table2