• 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';

  • 相关阅读:
    HDU 4611 Balls Rearrangement 数学
    Educational Codeforces Round 11 D. Number of Parallelograms 暴力
    Knockout.Js官网学习(简介)
    Entity Framework 关系约束配置
    Entity Framework Fluent API
    Entity Framework DataAnnotations
    Entity Framework 系统约定配置
    Entity Framework 自动生成CodeFirst代码
    Entity Framework CodeFirst数据迁移
    Entity Framework CodeFirst尝试
  • 原文地址:https://www.cnblogs.com/czhyuwj/p/4315877.html
Copyright © 2020-2023  润新知