• SQL学习——SELECT INTO和INSERT INTO SELECT


     

    原文链接

    SELECT INTO 作用

    SELECT INTO 语句从一个表中复制数据,然后将数据插入到另一个新表中。

    SELECT INTO 语法

    我们可以把所有的列都复制到新表中:

    SELECT *
    INTO newtable [IN externaldb]
    FROM table1;

    或者只复制希望的列插入到新表中:

    SELECT column_name(s)
    INTO newtable [IN externaldb]
    FROM table1;

    提示:将使用SELECT语句中定义的列名和类型创建新表。您可以使用AS子句来应用一个新名称。

     

    示例数据库

    我们使用"Customers"表来作示例

     

    SELECT INTO 实例

    创建 Customers 的备份复件:

    SELECT *
    INTO CustomersBackup2018
    FROM Customers;

    可以得到一个和Customers表结构及数据一模一样的表CustomersBackup2018

     

    下面我们来复制表到另一个数据库AdventureWorks中,结果与Customers表中的一样。

    SELECT *
    INTO AdventureWorks.dbo.CustomersBackup2018
    FROM Customers;

    如下就是AdventureWorks数据库中刚复制过来的表CustomersBackup2018 

     

    只复制一些列插入到新表中:

    SELECT 姓名, 地址
    INTO CustomersBackup2018_1
    FROM Customers;

    CustomersBackup2018_1表中的结果:

     

    只复制广东省的客户插入到新表中:

    SELECT *
    INTO CustomersBackup2018_2
    FROM Customers
    WHERE 省份='广东省';

    CustomersBackup2018_2中的数据如下:

     

    复制多个表中的数据插入到新表中:

    SELECT c.姓名, o.订单ID
    INTO CustomersOrderBackup2018
    FROM Customers c
    LEFT JOIN Orders o
    ON c.客户ID=o.客户ID;

    CustomersOrderBackup2018表中的数据如下:

     

    提示:SELECT INTO 语句可以用于在另一种模式下创建一个新的空表,即只有表结构,没有数据。只需添加WHERE子句,使查询返回时没有数据:

    SELECT *
    INTO newtable
    FROM table1
    WHERE 1=0;

    INSERT INTO SELECT 作用

    INSERT INTO SELECT 语句从表中复制数据,并将数据插入现有的表中。目标表中的任何现有行都不会受到影响。

     

    INSERT INTO SELECT 语法

    我们可以将所有列从一个表中复制到另一个已经存在的表中:

    INSERT INTO table2
    SELECT * FROM table1;

    或者我们可以把想要的列复制到另一个现有的表中:

    INSERT INTO table2
    (column_name(s))
    SELECT column_name(s)
    FROM table1;

    示例数据库

    以下是"Customers"表中的数据:

    选自 "Suppliers" 表的数据:

     

    INSERT INTO SELECT 实例

    把 "Suppliers" 一栏复制到 "Customers" 一栏:

    实例

    INSERT INTO Customers (姓名, 省份)
    SELECT 供应商名称, 省份 FROM Suppliers;

    结果如下:

     

    只将上海供应商的副本插入 "Customers" :

    实例

    INSERT INTO Customers (姓名, 省份)
    SELECT 供应商名称, 省份 FROM Suppliers
    WHERE 省份='上海市';

    结果如下:

     

    批注

    SELECT INTO 用来复制表和表结构是非常方便的,特别是在进行表之间计算时,可以将部分数据先插入到一个临时表中,计算完成再删除该临时表。INSERT INTO SELECT则是插入语句的另外的一种写法,可以直接将查询的结果插入到需要的表中,从而省去逐条手工插入数据的过程。

  • 相关阅读:
    ( 三十一 )、 SpringBoot项目启动自动执行sql脚本
    转:OAuth 2.0 介绍
    采坑:python base64
    Redis学习——数据结构介绍(四)
    美化你的博客园,flash插件的使用
    Redis学习——详解Redis配置文件(三)
    Redis学习——Windows环境下Redis的安装(二)
    Redis学习——Linux环境下Redis的安装(一)
    NPM 安装速度慢,镜像修改
    日志配置(springboot、mybatis、Lombok)
  • 原文地址:https://www.cnblogs.com/-wenli/p/11578649.html
Copyright © 2020-2023  润新知