zoukankan      html  css  js  c++  java
  • mysql快速创建空表

      今天有人问我用什么方法可以创建空表?
    在MYSQL中有两种方法。
    1、create table select ...
    2、create table like ...
    第一种很多人都知道,第二种却很少人用。
    第一种有个缺点
    1、第一种会取消掉原来表的有些定义。
    手册上是这么讲的:
    Some conversion of data types might occur. For example, the AUTO_INCREMENT attribute is not preserved, and VARCHAR columns can become CHAR columns.
    不过我测试过,只会取消自增属性!(其他版本没有测试过!)



    第二种就不会。
    我们来看看例子:

    mysql> create table t_old (id serial, content varchar(8000) not null,`desc` varchar(100) not null) engine innodb;
    Query OK, 0 rows affected (0.01 sec)

    mysql> show create table t_old;
    +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table                                                                                                                                                                                                 |
    +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | t_old | CREATE TABLE `t_old` (
      `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `content` varchar(8000) NOT NULL,
      `desc` varchar(100) NOT NULL,
      UNIQUE KEY `id` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    mysql> create table t_select select * from t_old where 1 = 0;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    PS:如果想要保持一样的引擎,就加上。
    这样写:create table t_select engine innodb select * from t_old where 1 = 0;

    mysql> show create table t_select;
    +----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table    | Create Table                                                                                                                                                                       |
    +----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | t_select | CREATE TABLE `t_select` (
      `id` bigint(20) unsigned NOT NULL DEFAULT '0',
      `content` varchar(8000) NOT NULL,
      `desc` varchar(100) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
    +----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    mysql> create table t_like like t_old;
    Query OK, 0 rows affected (0.02 sec)

    mysql> show create table t_like;
    +--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table  | Create Table                                                                                                                                                                                                  |
    +--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | t_like | CREATE TABLE `t_like` (
      `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `content` varchar(8000) NOT NULL,
      `desc` varchar(100) NOT NULL,
      UNIQUE KEY `id` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    mysql>
  • 相关阅读:
    JVM运行内存分配和回收
    关于评审--从思想到落地
    从浏览器或者Webview 中唤醒APP
    控制台的艺术(附原理实现)
    深入研究嵌入式web服务器的视频监控应用
    css中url的路径含义及使用
    epoll
    C++中智能指针的设计和使用
    wget命令的使用
    UPNP
  • 原文地址:https://www.cnblogs.com/secbook/p/2655303.html
Copyright © 2011-2022 走看看