• 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

    结果如下:

  • 相关阅读:
    Directx11教程(21) 修正程序最小化异常bug
    Directx教程(28) 简单的光照模型(7)
    Directx教程(22) 简单的光照模型(1)
    Directx教程(26) 简单的光照模型(5)
    Directx教程(25) 简单的光照模型(4)
    finit 1.5 发布,/sbin/init 的服务器监控器
    MySQL 8小时问题
    DataCleaner 3.0.1 发布,数据质量分析管理
    dedecms调用其它栏目列表
    ReportPlus:在iPad上创建和使用仪表盘及报表
  • 原文地址:https://www.cnblogs.com/guorongtao/p/11607655.html
Copyright © 2020-2023  润新知