SQL復制數據表及表結構


 

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

結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM