当前位置: 首页 > news >正文

【你也能从零基础学会网站开发】SQL Server 一篇吃透 INSERT INTO SELECT vs SELECT INTO 完整案例+避坑指南

🚀 个人主页极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

目录

      • 前言
      • INSERT INTO SELECT(最常用,往已有表插数据)
        • 案例实战
      • SELECT INTO(最快捷,自动建表+插数据)
        • 案例实战
      • 最后 混淆区分 避免踩坑

前言

我们在开发、测试过程中,经常会遇到需要表复制的情况,

比如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们

就要使用 INSERT INTO SELECT和SELECT INTO 表复制语句了~

INSERT INTO SELECT(最常用,往已有表插数据)

这个语法,我其实在之前的教程中已经讲过,今天我们就再次复盘一下

也就是可以将一个表中的数据复制到另一个表!

语法规则

INSERTINTO目标表名(字段1,字段2,...,字段Z)SELECT字段A,字段B,...,字段ZFROM源表名WHERE条件;

目标表名:你想要插入数据的表

(字段1, 字段2, ..., 字段Z):目标表中你希望插入数据的字段,
注意,这些字段的顺序和数量要与select 语句中返回的字段相匹配和对应才行~

SELECT 字段A, 字段B, ..., 字段Z:从源表中选择的字段, 这些字段的数据将被插入到目标表中!

FROM 源表名:也就是指定了数据来自哪个表!

WHERE 条件(可选):用于过滤源表中的行,只有满足条件的数据行才会被复制到目标表中!

注意

这个语法的核心就是目标表必须提前建好,把另一张表多张表查询结果,直接插入到这个已存在的表中,相当于给已有表格填新数据~

使用场景

通常我们在一些比较小的场景下会使用到,比如:数据备份、数据汇总、跨表迁移

案例实战

举个例子为了方便测试,大家可以使用以下测试数据~

-- 1. 学生表(student)(字段->学号、姓名、年龄、性别、班级)CREATETABLEstudent(num_idINT,usernameVARCHAR(20),ageINT,sexVARCHAR(4),classVARCHAR(20))

先拿到SQL Server 2000中执行一下

如图


然后插入以下测试数据

INSERTINTOstudentVALUES(1001,'张三',18,'男','高一(1)班')INSERTINTOstudentVALUES(1002,'李四',17,'女','高一(1)班')INSERTINTOstudentVALUES(1003,'王五',18,'男','高一(2)班')INSERTINTOstudentVALUES(1004,'赵六',17,'女','高一(2)班')INSERTINTOstudentVALUES(1005,'钱七',18,'男','高一(1)班')INSERTINTOstudentVALUES(1006,'孙八',17,'女','高一(3)班')INSERTINTOstudentVALUES(1007,'周九',18,'男','高一(3)班')INSERTINTOstudentVALUES(1008,'吴十',17,'女','高一(3)班')

如图

老师表也一样

-- 2. 老师表teacher(字段->姓名、科目、教龄、所带班级)CREATETABLEteacher(tidINT,tnameVARCHAR(20),subjectVARCHAR(20),experienceINT,sclassVARCHAR(20))INSERTINTOteacherVALUES(2001,'张老师','语文',5,'高一(1)班')INSERTINTOteacherVALUES(2002,'李老师','数学',8,'高一(2)班')INSERTINTOteacherVALUES(2003,'王老师','英语',3,'高一(3)班')INSERTINTOteacherVALUES(2004,'刘老师','物理',10,'高一(1)班')INSERTINTOteacherVALUES(2005,'陈老师','化学',6,'高一(2)班')

如图

需求

学生表的部分数据备份到备份表比如说: 条件只备份高一(1)班的学生!

那首先第一步你要自己手动创建这个学生备份表(student_backup), 而且是必须提前建,结构和学生表一致~

SQL代码如下

CREATETABLEstudent_backup(num_idINT,usernameVARCHAR(20),ageINT,sexVARCHAR(4),classVARCHAR(20))

如图

然后用INSERT INTO SELECT来备份并插入数据条件是只插入高一(1)班)的学生!

SQL 代码如下

INSERTINTOstudent_backup(num_id,username,age,sex,class)SELECTnum_id,username,age,sex,classFROMstudentWHEREclass='高一(1)班';

如图

最后我们看看结果~

如图

例如: 把老师表的资深老师数据汇总到新表~ 也是同理~

SQL 代码如下

-- 首先我们手动创建【资深老师表】(提前建,只保留需要的字段)CREATETABLEhigh_teacher(tidINT,tnameVARCHAR(20),subjectVARCHAR(20),experienceINT,)

如图

然后跨表插入,条件为筛选教龄>5年的老师

如下

INSERTINTOhigh_teacherSELECTtid,tname,subject,experienceFROMteacherWHEREexperience>5-- 查看插入结果SELECT*FROMhigh_teacher

如图

现在搞懂了INSERT INTO SELECT的使用方法了吗?~

SELECT INTO(最快捷,自动建表+插数据)

核心规则

这种方式的插入数据就不用提前建表,执行语句时,系统会自动根据查询结果的字段,创建一张新表,同时把查询到的数据写入新表!

使用场景:快速生成临时表、数据快照

比如:临时筛选优秀学生、不用手动建表,省时高效~

案例实战

举个例子

自动创建优秀学生表, 条件筛选年龄=18的学生!

SQL如下

SELECTnum_id,username,age,sex,classINTOhigh_studentFROMstudentWHEREage=18

如图


查看结果

最后 混淆区分 避免踩坑

很多人出错,就是没分清这2个语法的核心区别,整理成表格,一目了然,收藏起来,下次用的时候直接对照!

语法是否需要提前建表核心作用适用场景
INSERT INTO SELECT是(必须提前建)向已有表插入数据数据备份、跨表迁移
SELECT INTO否(自动建表)新建表+插入数据临时表、数据快照

SELECT INTO适合快速整表复制!
SELECT INTO时,自动创建的表,字段名和数据类型会和查询结果一致,无需手动设置
SQL Server 2000中,SELECT INTO不能在视图上使用,只能用于表查询

INSERT INTO SELECT适合精准复制部分数据!
而且用INSERT INTO SELECT时,目标表的字段数量、数据类型,必须和查询结果的字段完全匹配,否则会报错

另外不管用哪种语法,插入的数据不能违反目标表的约束~

"👍点赞""✍️评论""收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多好玩 好用 好看的干货教程可以点击下方关注❤️微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

http://www.jsqmd.com/news/624598/

相关文章:

  • ▲基于QLearning强化学习的LTE和WLAN网络接入控制算法matlab仿真
  • 2026年广州房产抵押贷款政策放宽!这些人准入门槛降低了 - 速递信息
  • 基于流式细胞术与K-mer分析的基因组大小测定方法对比
  • QQ空间历史说说一键备份:GetQzonehistory完整指南
  • MiniCPM-V-2_6拍卖辅助:拍品图理解+估价参考与历史成交分析
  • 【仅限首批200家认证企业获取】:SITS2026 AI-Native成熟度评估框架V1.0(含17维诊断矩阵+自动打分API)
  • Chandra+CNN视觉模型:智能内容审核系统实战
  • SciencePlots实战:一键生成符合顶级期刊标准的科研图表
  • HFSS激励方式详解:从基础设置到高级应用
  • 有哪些眼霜淡化黑眼圈效果比较好?2026年度十大热门眼霜排行榜与成分实测 - 速递信息
  • 数字员工化技术中的虚拟助理知识库与任务执行
  • 电容参数傻傻分不清?用万用表实测教你识别电解/陶瓷/独石电容(含防爆注意事项)
  • curl 命令完整使用手册
  • 为LFM2.5-1.2B-Thinking-GGUF配置JDK 1.8开发环境:Java调用示例
  • 手把手教你用Transformer玩转脑电信号:从CBraMod论文到实战EEG解码
  • 大模型微调必须在Q2前掌握的4项新范式:来自奇点大会Top 5厂商联合签署的《微调治理白皮书》
  • 别跟风做 279 模式!我见过 4 家实体做崩,核心错在这 1 点
  • RAG不是加个检索就行!2026奇点大会技术委员会主席亲授:4类典型业务场景下的RAG架构分层设计法则(含金融/医疗/政务真实案例)
  • 超越Excel!用DeepSeek+ggplot2制作动态科研图表:从基因表达到气候数据的实战案例
  • DP 套 DP 学习笔记
  • 科技向善:我们可以用技术为社会做些什么?
  • DeepSeek-R1:如何通过强化学习革新大语言模型的推理能力?
  • VibeVoice-TTS部署常见问题汇总:启动失败、模型加载、端口绑定
  • ORA-00054资源忙故障修复,远程处理Oracle报错解决方案,数据库锁超时NOWAIT指定问题排查
  • 深度认知:Anthropic 生态下的 AI 协作新范式 —— Claude 与 Claude Code 详解
  • 3种方法解锁Cursor Pro全部功能:免费提升开发效率的终极指南
  • 用DeepSeek做的Delphi闹钟
  • 5个简单步骤打造专业级OpenCore引导菜单:从零开始的美化指南
  • 操作系统面试必问:FCFS、SJF、HRRN调度算法到底怎么算?一个例子讲透
  • 如何快速将电视盒子变身高性能Linux服务器:Amlogic S9xxx Armbian终极指南