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>
  • 相关阅读:
    使用Eclipse+axis2一步一步发布webservice
    python学习-- django 2.1.7 ajax 请求
    python学习-- Django传递数据给JS
    python学习-- {% csrf_token %}
    python学习-- 两种方式查看自己的Django版本
    python学习-- 默认urls中 Path converter
    Django--------问题:在terminal命令行创建超级用户时入到password时输入为什么没有反应?
    python学习-- 数据库迁移 python manage.py makemigrations 和 python manage.py migrate
    python学习-- Django根据现有数据库,自动生成models模型文件
    python学习-- Django model -class 主键自增问题
  • 原文地址:https://www.cnblogs.com/secbook/p/2655303.html
Copyright © 2011-2022 走看看