select into from和insert into select的区别举例详解

 更新时间:2025年03月26日 10:50:40   作者:码农小C  
这篇文章主要介绍了SQL中的SELECT INTO和INSERT INTO SELECT两种语句的区别和用法,SELECT INTO用于创建新表并复制数据到新表中,而INSERT INTO SELECT用于将数据从一个表插入到已存在的另一个表中,需要的朋友可以参考下

一、区别解释

1、select into from :将查询出来的数据整理到一张新表中保存,表结构与查询结构一致。

select *(查询出来的结果) into newtable(新的表名)from where (后续条件)

即,查询出来结果—>复制一张同结构的空表—>将数据拷贝进去。

2、insert into select :为已经存在的表批量添加新数据。

insert into  (准备好的表) select *(或者取用自己想要的结构)from 表名 where 各种条件

即,指定一张想要插入数据的表格—>对数据进行加工筛选—>填入一张准备好的表格。

二、举例详解

select into from 和 insert into select 都是用来复制表

两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建;insert into select from 要求目标表存在。

  • 复制表结构及其数据:
create table table_name_new as select * from table_name_old
  • 只复制表结构:
create table table_name_new as select * from table_name_old where 1=2;

或者:

create table table_name_new like table_name_old
  • 只复制表数据:

如果两个表结构一样:

insert into table_name_new select * from table_name_old

如果两个表结构不一样:

insert into table_name_new(column1,column2...) select column1,column2... from table_name_old

注意事项:

SELECT INTO 只能用于创建新表,而 INSERT INTO SELECT 可以用于向已存在的表中插入数据。

SELECT INTO 会自动创建新表,如果新表已存在,会报错。而 INSERT INTO SELECT 不会创建表,只会向现有表中添加数据。

在使用 INSERT INTO SELECT 时,可以选择性地插入数据,通过 WHERE 子句过滤数据,或者使用 ORDER BY 对数据进行排序。

在使用 SELECT INTO 时,如果选择的列与新表中的列不完全匹配,SQL Server 会自动创建列,但可能会丢失数据类型和约束。

总结 

到此这篇关于select into from和insert into select的区别的文章就介绍到这了,更多相关select into from和insert into select区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL explain根据查询计划去优化SQL语句

    MySQL explain根据查询计划去优化SQL语句

    MySQL是一种常见的关系型数据库管理系统,常被用于各种应用程序中存储数据,当涉及到大量的数据时,就需要MySQL的explain功能来帮助优化,本文将详细介绍MySQL的explain功能,感兴趣的朋友可以参考阅读
    2023-04-04
  • Mysql中的单表最大记录是多少

    Mysql中的单表最大记录是多少

    这篇文章主要介绍了Mysql中的单表最大记录是多少问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Mysql中通用表达式WITH AS语句的使用实例代码

    Mysql中通用表达式WITH AS语句的使用实例代码

    with as也叫子查询,用来定义一个sql片段,且该片段会被整个sql语句反复使用很多次,这个sql片段就相当于是一个公用临时表,下面这篇文章主要给大家介绍了关于Mysql中通用表达式WITH AS语句使用的相关资料,需要的朋友可以参考下
    2022-08-08
  • Linux下安装mysql-5.6.4 的图文教程

    Linux下安装mysql-5.6.4 的图文教程

    在开始安装前,先说明一下mysql-5.6.4与较低的版本在安装上的区别,从mysql-5.5起,mysql源码安装开始使用cmake了,因此当我们配置安装目录./configure --perfix=/.....的时候和以前的会有些区别,这点我们稍后会提到
    2013-06-06
  • MySQL 查询某个字段不重复的所有记录

    MySQL 查询某个字段不重复的所有记录

    现在想从这5条记录中查询所有title不重复的记录
    2009-05-05
  • 一条 SQL 语句执行过程

    一条 SQL 语句执行过程

    这篇文章主要介绍了一条 SQL 语句执行过程的相关资料,没人详细具有一的的参考价值,需要的小伙伴可以参考一下,希望对你的学习和工作有所帮助
    2022-03-03
  • MySql如何将查询的出来的字段进行转换

    MySql如何将查询的出来的字段进行转换

    这篇文章主要介绍了MySql如何将查询的出来的字段进行转换,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • CentOS7.4手动安装MySQL5.7的方法

    CentOS7.4手动安装MySQL5.7的方法

    这篇文章主要介绍了CentOS7.4手动安装MySQL5.7的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 使用SQL查询所有数据库名和表名问题

    使用SQL查询所有数据库名和表名问题

    这篇文章主要介绍了使用SQL查询所有数据库名和表名问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • mysql设置更改root密码、mysql服务器的连接、mysql常用命令的图解

    mysql设置更改root密码、mysql服务器的连接、mysql常用命令的图解

    这篇文章主要介绍了mysql设置更改root密码、mysql服务器的连接、mysql常用命令,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06

最新评论