ソーステーブル名からターゲット表に*選択 対象テーブル名(FLD1、FLD2)選択FLD1、挿入から5 のソーステーブル名
上記の二つは、「宛先表」にデータ「ソース表の」ですが、2つの違いがあります。
それは挿入時に自動的に作成されますので、最初の文は(からに選択)、ターゲット表が存在しないことが必要です。
5:先テーブルが既に存在するので、第二の文(からの選択に挿入)ターゲット表の要件は、存在し、我々は定数はまた、実施例のように挿入されてもよい、フィールドに加えて、ソーステーブルに挿入しました。
例
以下のデータがあります。
今、あなたはデータIDがテーブルに2コピーしたい、次の文を使用することができます。
ID = 2テストSELECT * FROMテストに挿入します。
結果が示されています。
その名の値が「F」に変更している間に、今、ID 2つのデータは、テーブルにコピーされるためには、次のステートメントを使用することができます。
テスト(ID、名前)に挿入するIDを選択し、ID = 2試験から 'F'
結果が示されています。
この点で、我々は次のように現在の統計があり、展開することができます。
1:新しいテーブルのデータ構造にテーブルをコピーして、
接続先データベース名.dbo INTO SELECT *。テーブル名FROM元のテーブル名の目的を
私たちは、新しいテーブルTEST1にコピーテーブル構造とデータをテストします。
テストFROM test1のINTO SELECT *
結果は以下の通りであります:
2.バックテーブルの列の一部アップ(*書き込み、列のリストを書いていません)
.dboにカラム名1、2カラム名、カラム名、宛先データベース3の名前を選択します。オリジナルのテーブル名、テーブル名から
私たちは、テーブルの列idは、名前がTEST2にデータを複製TEST1:
SELECT ID、test1のFROM test2はINTO名
結果は以下の通りであります:
3.テーブルのバックアップ行の一部(プラス条件)
接続先データベース名.dbo INTO SELECT *。テーブル状態から元のテーブル名の目的を
我々TEST3にTEST2からコピーされたID 1つのデータ:
SELECT * INTO test3 FROM test2 WHERE id = 1
结果如下:
4.备份表的一部分列(不写*而写出列的列表)和一部分行(加WHERE条件)
SELECT 列名1,列名2,列名3 INTO 目的数据库名.dbo.目的表名 FROM 原表名 WHERE 条件
我们把在 id 大于0 时,数据表 test1 的列 id,age 的数据复制到 test4:
SELECT id,age INTO test4 FROM test1 WHERE id > 0
结果如下:
5.只复制表的结构
这种情况,我们只要设置查询条件不成立即可。我们把表 test1 的表结构复制到新表 test5:
SELECT * INTO test5 FROM test1 WHERE 1=2
结果如下:
6.复制的结构数据来源于多个表
其实我们要多个表的查询结构作为一个数据源就行了,我们先看看表 test2 和 test4 目前的结果和数据:
然后我再把 id 相同下的 id,name,age 数据复制到新表 test6:
SELECT id,name,age INTO test6 FROM (SELECT test2.id,name,age FROM test2 INNER JOIN test4 ON test2.id = test4.id) as a
结果如下:
select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) select fld1, 5 from 源表名
以上两句都是将'源表'的数据插入到'目标表',但两句又有区别的:
第一句(select into from)要求目标表不存在,因为在插入时会自动创建。
第二句(insert into select from)要求目标表存在,由于目标表已经存在,所以我们除了插入源表的字段外,还可以插入常量,如例中的:5。
示例
目前有数据如下:
现在要将id为2的数据复制一条到表中,可用如下语句:
insert into test select * from test where id=2;
结果如图:
现在要将id为2的数据都复制到表中,同时把其 name 的值改为 'f',可用如下语句:
insert into test(id,name) select id,'f' from test where id=2
结果如图:
对此,我们就可以扩充下,目前有数据如下:
1:复制表结构及数据到新表
SELECT * INTO 目的数据库名.dbo.目的表名 FROM 原表名
我们把表 test 的结构和数据复制到新表 test1:
SELECT * INTO test1 FROM test
结果如下:
2.备份表的一部分列(不写*而写出列的列表)
SELECT 列名1,列名2,列名3 into 目的数据库名.dbo.目的表名 from 原表名
我们把表 test1 列 id,name 的数据复制到 test2:
SELECT id,name INTO test2 FROM test1
结果如下:
3.备份表的一部分行(加 WHERE 条件)
SELECT * INTO 目的数据库名.dbo.目的表名 FROM 原表名 WHERE 条件
我们把 id 为1的数据从test2复制到 test3:
SELECT * INTO test3 FROM test2 WHERE id = 1
结果如下:
4.备份表的一部分列(不写*而写出列的列表)和一部分行(加WHERE条件)
SELECT 列名1,列名2,列名3 INTO 目的数据库名.dbo.目的表名 FROM 原表名 WHERE 条件
我们把在 id 大于0 时,数据表 test1 的列 id,age 的数据复制到 test4:
SELECT id,age INTO test4 FROM test1 WHERE id > 0
结果如下:
5.只复制表的结构
这种情况,我们只要设置查询条件不成立即可。我们把表 test1 的表结构复制到新表 test5:
SELECT * INTO test5 FROM test1 WHERE 1=2
结果如下:
6.复制的结构数据来源于多个表
其实我们要多个表的查询结构作为一个数据源就行了,我们先看看表 test2 和 test4 目前的结果和数据:
然后我再把 id 相同下的 id,name,age 数据复制到新表 test6:
SELECT id,name,age INTO test6 FROM (SELECT test2.id,name,age FROM test2 INNER JOIN test4 ON test2.id = test4.id) as a
结果如下: