MySQL下使用SQL命令进行表结构与数据复制实践

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL下使用SQL命令进行表结构与数据复制实践

【1】表结构复制

第一种方式

create table 表名 like [数据库.]表名;
-- 如果是同一个数据库下的表的复制,不需要添加[数据库.];
-- 不会复制数据;

示例如下:

-- 原表创建语句:
CREATE TABLE `tb_lesson` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(60) DEFAULT NULL,
  `joinTime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;
-- 删除原表:
drop table tb_lesson;
--并从备份数据库复制
create table tb_lesson like db_exam2.tb_lesson;
-- 查看复制的新表语句;
CREATE TABLE `tb_lesson` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(60) DEFAULT NULL,
  `JoinTime` datetime DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 字段属性未变

第二种方式

create table new_table
as
select * from [数据库名.]old_table;
-- 第二种方式在mysql下可能会丢失列属性,如主键,自增等。

示例如下:

-- 第二种方式复制的新表如下:
CREATE TABLE `tb_lesson` (
  `ID` int(11) NOT NULL DEFAULT '0',
  `Name` varchar(60) DEFAULT NULL,
  `JoinTime` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 改变了字段属性等。
-- 同时复制了数据;
-- 如果侧重表结构不建议使用这种方式。

【2】表数据复制

又被称为蠕虫复制,语法格式如下:

insert into Table2(field1,field2,...) select value1,value2,... from Table1;
// 如果不指定列,则如下(一定保证两个表列一致):
insert into new_table select * from [数据库.]old_table

指定列字段实例:

insert  into tb_sys_news (category_name,category_id,user_name,user_id,content,field9,create_time)
select 'XX特色',1,'XXXXX',2,content,website,publish_time  from sheetj1 

需要注意的是,下面方式不适用于MySQL:

SELECT vale1, value2 into Table2 from Table1

该方式常常用于MySQL触发器、存储过程或函数中为变量赋值。

【3】不同数据库之间表复制

两个数据库之间表复制过程如下:

复制db_exam2数据库的表tb_lesson到当前数据库的表tb_lesson(表不出存在时需要创建)。

-- 删除已经存在的表;
drop table if EXISTS tb_lesson;
--复制并创建新表
create table tb_lesson like db_exam2.tb_lesson;
-- 复制数据
insert into tb_lesson select * from db_exam2.tb_lesson;

这里是从另外一个数据库(两个数据库在同一个主机)复制表和数据到当前数据库,省略了当前数据库名字。

也可以不省略数据库名字如下:

从data_analysis复制表和数据到data_analysis_zh。此处不管当前连接对象是哪个数据库,都可以正确执行。

drop table if EXISTS data_analysis_zh.store_card_2;
create table data_analysis_zh.store_card_2 like data_analysis.pos_sale;
INSERT into data_analysis_zh.store_card_2 
select * from data_analysis.pos_sale where data_analysis.pos_sale.number_store_card >0;
select * from data_analysis_zh.store_card_2 ;

效果等同如下(打开data_analysis连接):

drop table if EXISTS data_analysis_zh.store_card_2;
create table data_analysis_zh.store_card_2 like pos_sale;
INSERT into data_analysis_zh.store_card_2 
select * from pos_sale where number_store_card >0;
select * from data_analysis_zh.store_card_2 ;

效果等同如下(打开data_analysis_zh连接):

drop table if EXISTS store_card_2;
create table store_card_2 like data_analysis.pos_sale;
INSERT into store_card_2 
select * from data_analysis.pos_sale where [data_analysis.pos_sale.]number_store_card >0;
select * from store_card_2 ;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化与慢查询优化:原理与实践
通过本文的介绍,希望您能够深入理解MySQL索引优化与慢查询优化的原理和实践方法,并在实际项目中灵活运用这些技术,提升数据库的整体性能。
27 5
|
15天前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
13天前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
47 3
|
16天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
19天前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
|
18天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
19天前
|
SQL Oracle 关系型数据库
SQL(MySQL)
SQL语言是指结构化查询语言,是一门ANSI的标准计算机语言,用来访问和操作数据库。 数据库包括SQL server,MySQL和Oracle。(语法大致相同) 创建数据库指令:CRATE DATABASE websecurity; 查看数据库:show datebase; 切换数据库:USE websecurity; 删除数据库:DROP DATABASE websecurity;
|
26天前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
26 2
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
94 3
|
1月前
|
存储 监控 关系型数据库
MySQL自增ID耗尽解决方案:应对策略与实践技巧
在MySQL数据库中,自增ID(AUTO_INCREMENT)是一种特殊的属性,用于自动为新插入的行生成唯一的标识符。然而,当自增ID达到其最大值时,会发生什么?又该如何解决?本文将探讨MySQL自增ID耗尽的问题,并提供一些实用的解决方案。
42 1
下一篇
DataWorks