zoukankan      html  css  js  c++  java
  • 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';

  • 相关阅读:
    利用FT232实现USB转串口
    用例图
    Flash与EEPROM
    spring -boot定时任务 quartz 基于 MethodInvokingJobDetailFactoryBean 实现
    得到中文首字母
    删除目录
    数字格式化工具
    Md5加密
    Double类型的数值 在写入excel时 如何去掉 科学计算法的 后面数值+ E的 情况
    数值的比较
  • 原文地址:https://www.cnblogs.com/czhyuwj/p/4315877.html
Copyright © 2011-2022 走看看