sql复制表结构和数据

来源:百度文库 编辑:神马文学网 时间:2024/05/15 23:56:40
功能:将查询的结果放到一个新表中去,查询结果可以来源于一个表或多个表
SQL SERVER中使用SELECT … INTO语句
按照使用场合可以分为以下几类:
1. 实现全表备份:如:SELECT * INOT t1 FROM titles
2. 备份表的一部分列(不写*而写出列的列表)或一部分行(加WHERE条件)
如: SELECT title_id,title,price INTO t2 FROM titles—部分列
SELECT * INTO t2 FROM titles WHREE price>10 –部分行
SELECT title_id,title,price INTO t2 FROM titles WHREE price>10 –部分行和部分列
3. 只复制表的结构:如:SELECT * INOT t1 FROM titles WHERE 1=2
4. 查询结果来源于多个表:如:
SELECT title_id,title,pub_name INTO t3
FROM titles t INNER JOIN publishers p
ON t.pub_id=p.pub_id
数据复制
第一次是导出的时候
当时为了导出一些数据然后在其他的系统中导入,表的结构是一样的,所以我就新建了一个数据库,然后:
select * into [DB_A].table_A from [DB_B].table_B
这句话的意思就是从DB_B这个数据库中的table_B导出数据,到数据库DB_A中的table_A,这句话的好处就是它会在DB_A中创建一个 table_A名称的表而且会按照table_B的表结构创建字段,然后再把table_B中的全部数据插入到table_A中,这样就省去了我创建 table_A和他的字段的过程.
第二次是导入的时候
需要把还原的数据库中的数据导入到我们的项目库中,这次由于项目库中的表都是存在的所以只能用:
insert into [DB_B].table_B select * from [DB_A].table_A
这样只会把数据导入到项目库中
第三次是把一个表拆成多个表,但是里面的数据也要插入到相应的表中
这次比较麻烦了,当时由于表的结构都不一样了,开始是用的一个本方法,就是把源表直接用第一种方法复制成一个表,然后再把里面的字段修改或删除,勉强完成了.
但是过后尝试发现insert into 可以加字段就变成了:
insert into table_A(id) select id from table_B
这样就直接把table_B中的id列复制到了table_A的id这列中,非常方便.