zoukankan      html  css  js  c++  java
  • MySQL 复制表结构

    介绍

     有时候我们需要原封不动的复制一张表的表结构来生成一张新表,MYSQL提供了两种便捷的方法。

    例:

    CREATE TABLE tb_base(
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(10),
    KEY ix_name (name))
    ENGINE='MyISAM',CHARSET=utf8,COMMENT 'a' ;
    insert into tb_base() values(1,'a'),(2,'b');

    一、LIKE方法

    like方法能一模一样的将一个表的结果复制生成一个新表,包括复制表的备注、索引、主键外键、存储引擎等。

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
        { LIKE old_tbl_name | (LIKE old_tbl_name) }

    1.复制表

    CREATE  TABLE IF NOT EXISTS tb_base_like (LIKE tb_base); 

    2.查看表

    可以看到新复制的表和原表完全一致,但是不复制数据。

    二、SELECT方法

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    SELECT ...   (Some valid select or union statement)

     1.复制表

    CREATE  TABLE IF NOT EXISTS tb_base_select SELECT * FROM tb_base; 

    2.查看表

     select的方法值复制字段属性,其它的主键、索引、表备注、存储引擎都没有复制

    三、区别

    like方法:like方法其实是专门复制表结构的方法,但是它只复制表的结构和相关属性并不复制数据

    select方法:严格来讲select方法不能理解成复制表结构的方法,其实它只是执行了一个select查询语句,所以复制的结果只包含了select的字段和数据,其它表属性都有系统的配置文件决定;包括存储引擎、默认字符集等都是有系统的默认配置所决定。

    总结

     所以真正的表结构复制方法是LIKE方法,如果不需要考虑表原本的属性包括存储引擎、备注、主键、索引等那么select复制方法是个不错的方法并且还能连同数据一起复制。

    备注:

        作者:pursuer.chen

        博客:http://www.cnblogs.com/chenmh

    本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

    《欢迎交流讨论》

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/chenmh/p/5644644.html
Copyright © 2011-2022 走看看