每日一记-数据库表的复制:select into、create as、insert into

MySQL新手第一张:从CREATE TABLE到INSERT实战指南 在关系型数据库中,数据是结构化存储的核心载体,其设计直接决定查询效率、数据一致性和系统可维护性。CREATE TABLE语句定义了字段类型、约束规则与物理存储特性,而INSERT INTO则实现数据写入,二者构成数据库操作的最小闭环。掌握主键(primary key)的唯一性与索引价值、utf8mb4字符集对中文及emoji的完整支持、NOT NULL与DEFAULT的空值治理策略,是避免乱码、截断、报错的关键技术基础。这些能力广泛应用于学生课程成绩信息实体设计、电商订单建模、用户行为日志归档等典型场景 阅读详情

背景

假设有一个数据库,如果想要备份数据库内的表或者定期对一张表进行归档记录,比如按照月份或者星期归档为原表名_月数/周数,然后以此为规则方便在程序内的调用进行历史记录的增删查改。最笨也是我曾经用过的一种方法是每个周期去将表导出成sql,修改sql内的表名,然后运行sql文件插入,再将原表清空;现在发现sql本身就带有这样的语法,按照个人理解的便利性,三种方法排序为:
⑴SELECT INTO、⑵CREATE AS、⑶INSERT INTO

SELECT INTO、CREATE AS、INSERT INTO

之所以认为这三个便利性依次减少是因为前俩种方法只要写好执行的脚本,那么数据库会自动完成建表并插入数据的操作,而第三种方法需要手动建好表及表内的字段。

SELECT INTO

如果需要备份一个整表的数据,直接用下列语句即可完成操作,数据库会自动创建一个tablename_backup的表,然后将tablename表内的数据插入其中:

SELECT *
INTO tablename_backup
FROM tablename

在备份时候,可能表内有一些字段的数据在以后使用并不被需要,那么在备份时候可以通过指定列名来备份指定的数据字段:

SELECT column1,column2,...columnN
INTO tablename_backup
FROM tablename

而select into我举得最强大的一点功能在于其可以跨数据库进行操作,只需要加入一个IN字句就可以实现:

SELECT *
INTO tablename_backup IN 'otherdb.mdb'
FROM otherdb_tablename

CREATE AS

create as的使用很简单,通过搭配select字句进行使用。

CREATE TABLE test_backup8 AS (
SELECT * FROM test)

执行之后,会自动新建表test_backup8,然后将select字句查询到的test表内的数据插入进去。create as语句括号中的select字句不会受create as的影响,可以使用的所有的条件控制字句,所以这种备份表方式比较灵活强大,

但是有一点问题的地方在于:在网上看到有博主说使用CREATE AS字句创建的表中复制字段会丢失原表中的默认值,比如原表内有一个varchar字段默认值a,复制到新表之后会丢失。但是我使用mysql5.1.48,在实验过程中发现默认值还在,此处存有疑惑。

INSERT INTO

使用INSERT INTO备份表不同于插入数据的INSERT,需要先建立好新表,并且新表内必须要有备份的表的指定字段或者全部字段。

Insert INTO test(col1, col2, col3...colN) 
SELECT col1, col2,  col3...colN FROM test

需要注意字段值的问题,如果有主键存在且不为空或者其他不为空的字段存在,则在(col1, col2, col3…colN) 内必须有主键和不能为空的字段,否则会出错。

注意事项

  1. mysql不支持SELECT INTO语句,会报未声明的变量错误,如下:

    可以使用CREATE AS和INSERT INTO。
  2. 在5.6及以上的mysql中使用CREATE AS的时候可能会报如下的错误:

    ERROR 1786 (HY000): CREATE TABLE ... SELECTis forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1
    这是因为在5.6及以上的版本内,开启了enforce_gtid_consistency=true功能导致的,MySQL官方解释说当启用enforce_gtid_consistency功能的时候,MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行,像create table … select 和 create temporarytable语句,以及同时更新事务表和非事务表的SQL语句或事务都不允许执行。《本段转载于网络》

Snowflake INSERT INTO 全面指南:原理、性能与最佳实践 INSERT INTO 是 Snowflake 数据写入的基础操作,但其行为远非传统数据库中的简单 DML——它深度耦合计算层、存储层、元数据层与微分区机制。理解其底层原理(如微分区自动生成、MVCC 事务模型、云存储直写)是规避性能陷阱与成本失控的关键。技术价值体现在高效数据流转、Time Travel 支持及与 COPY INTO/MERGE 的协同分工;典型应用场景包括 ETL 清洗加载、增量同步、实时报更新等。本文聚焦 INSERT INTO 在 Snowflake 架构下的真实行为、高频报错根因 阅读详情

相关推荐

别再只会用INSERT了!Hive数据导入的三种实战姿势(Load/Insert/Export)

本文深入解析Hive数据导入的三种核心方法:Load、Insert和Export,帮助开发者根据数据场景选择最优方案。Load适合快速导入大文件,Insert提供灵活的数据转换,Export则用于高效导出结果。通过性能对比和实战案例,展示如何构建高效的大数据处理流程,提升Hive操作效率。

weixin_33670786的博客 361

Oracle中复制的方法(create as selectinsert into selectselect into

(作者:陈玓玏) 在使用SQL的过程中,常常需要复制,或者通过建立临时来存储select语句生成的结果,这个在建模过程中造变量的时候用得尤其多。 1、用create as select drop table tablename; create table tablename as select * from tab1; Oracle中删除格不能先用if exists做判断,...

小白白的博客 2万+

SQL建管理全指南:从CREATE TABLE到DROP TABLE实战

数据库是关系型数据库的核心载体,其设计质量直接决定系统稳定性、查询性能与长期可维护性。理解的生命周期——创建(CREATE TABLE)、变更(ALTER TABLE)、删除(DROP TABLE)——本质是掌握数据结构化、业务语义映射与物理存储优化的统一过程。关键技术价值在于通过约束(NOT NULL、CHECK、DEFAULT)、类型选择(如DECIMAL精确存金额、NVARCHAR支持Unicode)和索引策略,将业务规则前置到数据库层,降低应用层校验负担并防止数据腐烂。典型应用场景覆盖电商订单建

weixin_34259232的博客 398

mysql直接create as select

结构比较:auto_increment变成了default '0',所以用create as select 这种简单粗暴方式建的时候。一定要比较前后结构。

qq_41081716的博客 1016

mysql insert into as_mysql insert into select使用方法详解

mysql insert into select使用方法详解2017-11-22 15:47我们先来看看mysql insert into select的语法规则。INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE][INTO] tbl_name[(col_name [, col_name] ...)]SELECT ...[ON DUPLICATE KEY ...

weixin_39602976的博客 6116

CREATE TABLE AS SELECT 语句用法详解

这里写自定义目录标题新不存在,创建新已经存在 新不存在,创建新 1.创建新并且携带数据 create table new_table as select * from exist_table 2.创建新不携带数据 create table new_table as select * from exist_table where 1=2 注意:复制只会复制的结构和数据,原始中的索引,主键等都不会复制。 新已经存在 1.全量复制

xuehongyou的博客 3万+

CREATE TABLE AS SELECT

create. asselect,有以下三种方式; 1. create table table1 as select * from table2 where 1=2; 创建一个结构与table2一模一样的,只复制结构不复制数据; 2.create table table1 as select * from table2 ; 创建一个结构与table2一模一样的,复制结构同时也复制数据; 3.create table table1(新列名1,新列名2) as select 原列名1,原列名2 fro

weixin_44889014的博客 9632

MySQL数据库的创建、修改及数据操作指南

本文梳理了MySQL中数据库的核心操作流程,涵盖创建、修改及数据操作三大模块,帮助开发者快速掌握从环境搭建到业务落地的关键步骤。

架构沉思录的博客 1182

php select返回条数据,php – SQL INSERT INTO SELECT并返回SELECT数据以创建行视图计数...

首先,我不会在Main中添加计数器列.我将创建一个单独的Audit,该将保留Main中项的ID以及请求该ID时的至少时间戳.实质上,Audit将存储请求的历史记录.在这种方法中,您可以轻松生成更有趣的报告.您始终可以计算每个项目的总计,还可以按每个项目或所有项目按天,周,月等计算摘要.根据数据量,您可以定期删除超过某个阈值(一个月,一年等)的审核条目.此外,您可以根据需要在Audit中...

weixin_30080745的博客 413

SQL Server数据库快照原理与实战:稀疏文件和写时复制详解

数据库快照是SQL Server提供的轻量级时间点静态视图技术,其核心依赖操作系统级的稀疏文件(Sparse File)与存储引擎层的写时复制(Copy-on-Write, CoW)机制。它不拷贝全量数据,仅在源库数据页首次修改时按需保存旧版本,从而实现毫秒级创建、零锁、低开销的事务一致性视图。该技术本质是一种空间换时间的读优化方案,适用于报基线比对、升级回滚、只读分析等场景,但不具备RPO保障能力,也不能替代备份或高可用方案。理解稀疏文件的NTFS底层特性和CoW的触发逻辑,是规避IO放大、权限失败与

diaojin6880的博客 493

MySQL数据库覆盖导入:4种核心方案与安全操作指南

数据迁移与同步是数据库运维中的基础操作,其核心原理在于将源数据完整、准确地转移到目标系统。在MySQL生态中,覆盖导入作为一种关键的数据更新技术,通过替换而非追加的方式实现数据全量刷新,对保障数据一致性具有重要价值。该技术广泛应用于数据仓库同步、测试环境刷新、结构变更等场景。本文聚焦mysqldump、LOAD DATA INFILE、CREATE TABLE与RENAME组合以及ETL工具四种主流方案,深入解析其实现机制与适用边界。针对覆盖导入这一高风险操作,文中特别强调了备份验证与原子性操作等安全实践

weixin_34294649的博客 454

SQL Server INSERT性能深度解析:从语法到底层资源消耗

INSERT是关系型数据库中最基础的DML操作,但在SQL Server中,它远不止语法层面的数据写入——其执行过程深度耦合事务日志、锁机制、统计信息更新、索引维护与tempdb资源调度。理解INSERT的执行原理,有助于识别隐式转换、触发器开销、页分裂、U锁争用等高频性能陷阱;掌握执行计划中的Compute Scalar、Table Spool、Index Insert等关键算子,可精准定位‘简单插入’背后的高延迟根源。本文聚焦SQLServer Insert实际运行时的行为特征与工程调优路径,覆盖高并发

dejz8829的专栏 442

Snowflake数据摄入实战指南:COPY INTO、Snowpipe与Streaming选型与优化

数据摄入(Ingestion)是Snowflake稳定运行的基石,其本质是将外部数据可靠、高效、低成本地加载至列式存储层。理解Stage作为必经中转区的设计原理,是掌握COPY INTO批量加载、Snowpipe事件驱动近实时摄入及Snowpipe Streaming亚秒级流式写入的前提。三者并非升级关系,而是围绕‘延迟-一致性-成本’三角的正交权衡:COPY INTO保障强一致性与事务语义,Snowpipe平衡吞吐与运维复杂度,Streaming则以SDK集成代价换取毫秒级响应。实际落地需深度协同文件格式

weixin_34327223的博客 356

mysql数据库应用①

本内容仅是自己看视频学习记笔记,视频来源于【黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括】https://www.bilibili.com/video/BV1Kr4y1i7ru?p=8&vd_source=2d4a5dc5bb70ee9a749abd01192995f0,如有侵权,请联系我删除!

2501_93855189的博客 231

MySQL数据库 第5章:单操作

MySQL数据库 第5章:单操作5.1 数据操作5.1.1 复制结构和数据5.1.2 解决主键冲突5.1.3 清空数据5.1.4 去除重复记录5.2 排序与限量5.2.1 排序5.2.2 限量5.3 分组与聚合函数5.3.1 分组5.3.2 聚合函数5.4 运算符5.4.1 算术运算符5.4.2 比较运算符5.4.3 逻辑运算符5.4.4 赋值运算符5.4.5 位运算符5.4.6 运算符优先级5.5 案例实践:商品评论的操作5.6 总结5.7 课后练习 5.1 数据操作 5.1.1 复制结构和数据

若北辰 3395

Azure SQL Database云数据库选型与生产级落地实践

数据库是现代应用的数据底座,其核心价值在于将运维复杂度转化为业务敏捷性。Azure SQL Database作为PaaS模式的代,通过自动备份、跨故障域高可用、无感弹性伸缩等机制,实现开箱即稳的工程体验。它并非单纯替代本地SQL Server,而是重新定义了数据库的责任边界——让团队聚焦数据建模、查询优化与安全治理,而非补丁更新、IO调优或备份巡检。在SaaS多租户、电商大促、IoT海量写入等典型场景中,结合弹性池、服务层级(General Purpose/Business Critical/Hyper

weixin_33912453的博客 434

每日一错】PDB之间数据迁移

少量数据大数据量 / 结构迁移→ EXPDP/IMPDP(推荐)。需要自动化。

欢迎来到我的学习笔记薄 932

mysql 每日第一条

我整理的一些关于【MySQL,SQL】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://edu.51cto.com/surl=QDW3g3如何实现 MySQL 中的“每日第一条”数据 引言 作为一名新入行的开发者,学习如何从数据库中提取特定的数据是非常重要的技能。在本篇文章中,我将教你如何在 MySQ...

weixin_40322685的博客 224
上一篇: 每日一记-mysql中的int(11)-int(4)和int类型
下一篇: 每日一记-dubbo基础
云端漫漫步
博客等级 码龄17年 3粉丝 11原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值