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

Mysql复制表结构、表数据

顺便转一下Mysql复制表结构、表数据的方法:


1、复制表结构及数据到新表
CREATE TABLE 新表 SELECT * FROM 旧表
这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。
不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。


2、只复制表结构到新表
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2
或CREATE TABLE 新表 LIKE 旧表


3、复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表 SELECT * FROM 旧表


4、复制旧表的数据到新表(假设两个表结构不一样)
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表


5、可以将表1结构复制到表2
SELECT * INTO 表2 FROM 表1 WHERE 1=2


6、可以将表1内容全部复制到表2
SELECT * INTO 表2 FROM 表1


7、show create table 旧表;
这样会将旧表的创建命令列出。我们只需要将该命令拷贝出来,更改table的名字,就可以建立一个完全一样的表


8、mysqldump

用mysqldump将表dump出来,改名字后再导回去或者直接在命令行中运行

mysql 中如何在同一张表中复制记录

例子1 复制完全相同的记录(条件是表结构中没有auto_increment,和uniq字段)
mysql> select * from president;
+------------+---------------+--------+---------------------+-------+------------+------------+
| last_name  | first_name    | suffix | city                | state | birth      | death      |
+------------+---------------+--------+---------------------+-------+------------+------------+
| Washington | George        | NULL   | Wakefield           | VA    | 1732-02-22 | 1799-12-14 |
| Adams      | John          | NULL   | Braintree           | MA    | 1735-10-30 | 1826-07-04 |
| Jefferson  | Thomas        | NULL   | Albemarle County    | VA    | 1743-04-13 | 1826-07-04 |
| Madison    | James         | NULL   | Port Conway         | VA    | 1751-03-16 | 1836-06-28 |

mysql> desc president;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| last_name  | varchar(15) | NO   | MUL | NULL    |       |
| first_name | varchar(15) | NO   |     | NULL    |       |
| suffix     | varchar(5)  | YES  |     | NULL    |       |
| city       | varchar(20) | NO   |     | NULL    |       |
| state      | varchar(2)  | NO   |     | NULL    |       |
| birth      | date        | NO   |     | NULL    |       |
| death      | date        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
在这种情况下要在表中复制一条Washington  George 的记录,输入以下命令即可:

mysql> insert into president select * from president where last_name='Washington';

例子2:新增部分字段相同的记录

mysql> select * from manager;
+----+-------------+-------+-------------+----------+------------+---------------------+
| id | enable_flag | types | account     | password | location   | reg_date            |
+----+-------------+-------+-------------+----------+------------+---------------------+
|  1 |           1 |     1 | abcd        | 1234567  |            | 0000-00-00 00:00:00 |
| 13 |           1 |     2 | anonymous   | 654123   | 0100000000 | 2003-06-30 17:29:04 |

其表结构如下:

mysql> desc manager;
+-------------+-------------+------+-----+---------------------+----------------+
| Field       | Type        | Null | Key | Default             | Extra          |
+-------------+-------------+------+-----+---------------------+----------------+
| id          | int(4)      | NO   | PRI | NULL                | auto_increment |
| enable_flag | smallint(2) | NO   |     | 0                   |                |
| types       | smallint(2) | NO   |     | 0                   |                |
| account     | varchar(50) | NO   | UNI |                     |                |
| password    | varchar(50) | NO   |     |                     |                |
| location    | varchar(10) | NO   |     |                     |                |
| reg_date    | datetime    | NO   |     | 0000-00-00 00:00:00 |                |
------------+-------------+------+-----+---------------------+----------------+
若想通过新增一条和manager 表中的anonymous这条记录,其它字段内容相同,但名字不同的记录(account为test)。则得用以下方法:
因为manager表的 id字段是auto_increment,而且account字段是具有唯一性的(UNI).所以我们得具体指定这两个字段的值。

mysql>  insert into manager select '22',enable_flag,types,'test',password, location,reg_date from manager where account='anonymous';

相关文章:

  • mysql中如何设置默认时间为当前时间
  • linux zip 压缩命令 解压命令 unzip
  • 通用CSS Hack
  • 解决w3wp.exe内存占用问题
  • ASP.NET读取ASP设置的Cookie
  • Asp操作Cookies(设置[赋值]、读取、删除[设置过期时间])
  • 判断客户浏览器是否支持cookie
  • ASP.NET 操作Cookie详解 增加,修改,删除
  • ‍w3wp.exe占用内存过高的问题
  • w3wp.exe 频繁重启 Faulting application w3wp.exe
  • UTF-8编码下的Cookies出错 类型不匹配: ‘[object]‘
  • gzip 和 gunzip 的使用
  • linux下vi命令大全
  • extjs 同步和异步请求
  • Extjs combo数据绑定与获取
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 77. Combinations
  • ECMAScript6(0):ES6简明参考手册
  • gops —— Go 程序诊断分析工具
  • HTTP--网络协议分层,http历史(二)
  • javascript数组去重/查找/插入/删除
  • JS专题之继承
  • Laravel5.4 Queues队列学习
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • node入门
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 嵌入式文件系统
  • 小程序测试方案初探
  • 阿里云服务器购买完整流程
  • #{}和${}的区别?
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (2)(2.10) LTM telemetry
  • (Python第六天)文件处理
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (三)docker:Dockerfile构建容器运行jar包
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (数据结构)顺序表的定义
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • .“空心村”成因分析及解决对策122344
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Core 2.1路线图
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 设计模式初探
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • /bin/bash^M: bad interpreter: No such file or directory
  • @cacheable 是否缓存成功_Spring Cache缓存注解