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

2010-04-10

 

文章分类:数据库
转载自 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
posted @ 2010-12-31 20:29  王海龙(Heaven)  阅读(323)  评论(0编辑  收藏  举报