什么时候我们会用到复制表?例如:我现在对一张表进行操作,但是怕误删数据,所以在同一个数据库中建一个表结构一样,表数据也一样的表,以作备份。如果用mysqldump比较麻烦,备份.MYD,.MYI这样的文件呢,操作起来也还是麻烦。

一,复制表结构

方法1:

  1. mysql> create table a like users;         //复制表结构
  2. Query OK, 0 rows affected (0.50 sec)
  3. mysql> show tables;
  4. +----------------+
  5. | Tables_in_test |
  6. +----------------+
  7. | a              |
  8. | users          |
  9. +----------------+
  10. 2 rows in set (0.00 sec)
mysql> create table a like users;         //复制表结构
Query OK, 0 rows affected (0.50 sec) mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| a |

| users |

+----------------+

2 rows in set (0.00 sec)

方法2:

  1. mysql> create table b select * from users limit 0;   //复制表结构
  2. Query OK, 0 rows affected (0.00 sec)
  3. Records: 0  Duplicates: 0  Warnings: 0
  4. mysql> show tables;
  5. +----------------+
  6. | Tables_in_test |
  7. +----------------+
  8. | a              |
  9. | b              |
  10. | users          |
  11. +----------------+
  12. 3 rows in set (0.00 sec)
mysql> create table b select * from users limit 0;   //复制表结构
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| a |

| b |

| users |

+----------------+

3 rows in set (0.00 sec)

方法3:

  1. mysql> show create table users\G;          //显示创表的sql
  2. *************************** 1. row ***************************
  3. Table: users
  4. Create Table: CREATE TABLE `users` (       //改表名
  5. `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  6. `user_name` varchar(60) NOT NULL DEFAULT '',
  7. `user_pass` varchar(64) NOT NULL DEFAULT '',
  8. PRIMARY KEY (`ID`)
  9. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8  //改auto_increment
  10. 1 row in set (0.00 sec)
mysql> show create table users\G;          //显示创表的sql
*************************** 1. row ***************************
Table: users
Create Table: CREATE TABLE `users` ( //改表名
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(60) NOT NULL DEFAULT '',
`user_pass` varchar(64) NOT NULL DEFAULT '',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 //改auto_increment
1 row in set (0.00 sec)

把sql语句copy出来,改一下表名和atuo_increment,然后在执行一下。

二,复制表数据,以及表结构

方法1:

  1. mysql> create table c select * from users;      //复制表的sql
  2. Query OK, 4 rows affected (0.00 sec)
  3. Records: 4  Duplicates: 0  Warnings: 0
mysql> create table c select * from users;      //复制表的sql
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0

方法2:

  1. mysql> create table d select user_name,user_pass from users where id=1;
  2. Query OK, 1 row affected (0.00 sec)
  3. Records: 1  Duplicates: 0  Warnings: 0
mysql> create table d select user_name,user_pass from users where id=1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0

上面的2种方法,方便,快捷,灵活性强。

方法3:

先创建一个空表, INSERT INTO 新表 SELECT * FROM 旧表 ,或者

INSERT INTO 新表(字段1,字段2,…….) SELECT 字段1,字段2,…… FROM 旧表

这种方法不是很方便,也是我以前经常用的。

原文地址
地址:http://blog.51yip.com/mysql/1311.html

mysql 复制表数据,表结构的3种方法的更多相关文章

  1. mysql copy复制拷贝表数据及结构的几种方式(转)

    mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助.假如我们有以下这样一个表:id username password--- ...

  2. mysql处理大数据合并的另一种方法

    在做项目的时候我碰到了一个这样的场景,有两张表,数据都在300W左右,现在要求在生产环境中合并这两张表为一张表,本来想用sql语句insert into select来实现,后来发现这样操作速度很慢, ...

  3. MySQL在创建数据表的时候创建索引

    转载:http://www.baike369.com/content/?id=5478 MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可以直接创建索引.基本的语法格式如下: CRE ...

  4. mysql status关键字 数据表设计中慎重使用

    mysql status关键字  数据表设计中慎重使用

  5. mysql left join 右表数据不唯一的情况解决方法

    mysql left join 右表数据不唯一的情况解决方法 <pre>member 表id username1 fdipzone2 terry member_login_log 表id ...

  6. asp.net.mvc 中form表单提交控制器的2种方法和控制器接收页面提交数据的4种方法

    MVC中表单form是怎样提交? 控制器Controller是怎样接收的? 1..cshtml 页面form提交 (1)普通方式的的提交

  7. DataTable数据批量写入数据库三种方法比较

    DataTable数据批量写入数据库三种方法比较 标签: it 分类: C#1)   insert循环插入:2)   sqldataadapter.update(dataset,tablename); ...

  8. Delphi 导出数据至Excel的7种方法【转】

    一; delphi 快速导出excel   uses ComObj,clipbrd;   function ToExcel(sfilename:string; ADOQuery:TADOQuery): ...

  9. Delphi 导出数据至Excel的7种方法

    一; delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):bool ...

  10. HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法

    HOSt ip is not allowed to connect to this MySql server 报错:1130-host ... is not allowed to connect to ...

随机推荐

  1. 进阶系列(4)—— C#文件与流

    一. 驱动器 在Windows操作系统中,存储介质统称为驱动器,硬盘由于可以划分为多个区域,每一个区域称为一个驱动器..NET Framew   ork提供DriveInfo类和 DriveType枚 ...

  2. 用JAVA制作微型操作系统4月23日情况

    弄好了一个自认为十分精美的界面,但本想着昨天就在开始按钮上先套入控制jp222面板上的jb2标签上的时间更新,这按钮起到开始线程的作用(我认为按钮应该可以通过t.start()来触发线程,结果不知为什 ...

  3. 【搜索】POJ-2718 贪心+枚举

    一.题目 Description Given a number of distinct decimal digits, you can form one integer by choosing a n ...

  4. Mysql中实现递归查询

    1.常规表字段 id,pid,lev,name 2.sql语句 DELIMITER // DROP PROCEDURE IF EXISTS Pro_GetColumnOrg//CREATE PROCE ...

  5. NodeJs 遍历文件夹内容 上传到服务器.并输出上传记录文件

    var path = require('path'); var glob = require('glob') var fs = require('fs'); var Promise = require ...

  6. centos 升级内核(编译安装)

    yum install -y wget gcc gc bc gd make perl ncurses-devel xz下载地址:https://www.kernel.org#tar -Jxvf lin ...

  7. ACM数论之旅5---数论四大定理(你怕不怕(☆゚∀゚)老实告诉我)

    (本篇无证明,想要证明的去找度娘)o(*≧▽≦)ツ ----------数论四大定理--------- 数论四大定理: 1.威尔逊定理 2.欧拉定理 3.孙子定理(中国剩余定理) 4.费马小定理 (提 ...

  8. (很难啊)如何实时获取DBGrid 中当前单元格输入的内容? [问题点数:100分,结帖人yifawu100]

    如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理,用什么事件呢? 所以Field的Onchange事件是没用的. DBGrid1.Selec ...

  9. poj3320 Jessica's Reading Problem

    Description Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The fina ...

  10. 【uoj#311】[UNR #2]积劳成疾 dp

    题目描述 一个长度为 $n$ 的序列,每个数在 $[1,n]$ 之间.给出 $m$ ,求所有序列的 $\prod_{i=1}^{n-m+1}(\text{Max}_{j=i}^{j+m-1}a[j]) ...