Sql server]复制表结构到一个指定表

转载自 http://anna-zr.javaeye.com/blog/466495 

关键字: 数据库 
如何复制其它表的结构到一指定的表中去,比如以下的例子: 

  有如下三个表: 

  表A:字段1, 字段2, 字段3 

  表B:字段1, 字段2, 字段3 

  表C:字段1, 字段2, 字段3 

  现在想复制A表的字段1,B表的字段2,C表的字段3到表4中去。不需要表中的数据。 

  用SQL语句应如何实现呢? 

这里需要考虑一个问题,所到的指定表是不是空表?所以,我们有以下两种情况分别说说:       /*table4不存在时*/ 

select a.col1, b.col2, c.col3 
into table4 
from tableA a, tableB b, tableC c 
where 1 = 0  //有的写 where 1 = 2  ??? 如果不加这行,就会全部复制数据. 

但是,一旦表4已经存在的话,会报错。如果是想在表4中增加这几个字段,但这些字段的数据不需要添加到表4中来 select 
    * 
into 表5 
from 
    表4 m 
left join 
    (select a.字段1,b.字段2,c.字段3 from 表A a,表B b,表C c where 1<>1) n 
on 
    1=1 

drop table 表4 

exec sp_rename '表5','表4' 



sql复制表结构和数据 

功能:将查询的结果放到一个新表中去,查询结果可以来源于一个表或多个表 

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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值