create table like 和create table select 比 发布日期:2017-02-15 11:19:20     博主推荐★

语法:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options] [select_statement]
 
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(] LIKE old_tbl_name [)];


测试过程:


原数据表:
mysql> show create table test_order \G
*************************** 1. row ***************************

Table: test_order
Create Table: CREATE TABLE `test_order` (
  `pay_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `origin` int(10) DEFAULT NULL,
  `team_id` int(11) DEFAULT NULL,
  `state` int(11) DEFAULT NULL,
  KEY `team_id` (`team_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> create table cc select * from test_order;
Query OK, 9900 rows affected (0.11 sec)
Records: 9900  Duplicates: 0  Warnings: 0
mysql> create table dd like test_order;               
Query OK, 0 rows affected (0.22 sec)


查看数据:
mysql> select * from cc limit 2;
+---------------------+--------+---------+-------+
| pay_time            | origin | team_id | state |
+---------------------+--------+---------+-------+
| 2011-06-22 18:04:47 |     10 |     100 |   100 |
| 2011-06-22 18:04:47 |     10 |     100 |   101 |
+---------------------+--------+---------+-------+
2 rows in set (0.00 sec)
mysql> select * from dd;
Empty set (0.00 sec)
结果:cc表中数据与原表test_order中的一致,dd表中无数据


查看表结构:
mysql> show create table cc \G
*************************** 1. row ***************************
Table: cc
Create Table: CREATE TABLE `cc` (
  `pay_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `origin` int(10) DEFAULT NULL,
  `team_id` int(11) DEFAULT NULL,
  `state` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)


mysql> show create table dd \G
*************************** 1. row ***************************

Table: dd
Create Table: CREATE TABLE `dd` (
  `pay_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `origin` int(10) DEFAULT NULL,
  `team_id` int(11) DEFAULT NULL,
  `state` int(11) DEFAULT NULL,
  KEY `team_id` (`team_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
结果:cc表中,原表中的索引消失了;dd表与原表一致
 


结论:
    create table select 会将原表中的数据完整复制一份,但表结构中的索引会丢失。
    create table like 只会完整复制原表的建表语句,但不会复制数据



博文地址:https://blog.ahamu.cn/blog/detail.html?id=102
   
推荐文章
  • 1
    sysbench
    2020/07/08
  • 2
    phper转java记录篇-spring boot
    2020/06/10
  • 3
    thinkphp5.0使用路由之后,post请求的
    2020/05/19
  • 4
    springboot单元测试aop失效
    2020/05/15
  • 5
    脑海中的JVM
    2020/05/12
  • 6
    IDEA搜索插件时显示search results
    2020/05/12
  • 7
    spring boot 配置加载源码查找
    2020/04/20
  • 8
    通过javap命令分析java汇编指令
    2020/04/16
  • 9
    IDEA小知识:查看JVM内存使用情况的步骤
    2020/04/16
  • 10
    springboot-加载自定义的properti
    2020/04/14
  • 11
    Jenkins执行shell脚本无法启动子进程解决
    2020/04/03
  • 12
    mac idea激活找专业的
    2020/04/02
  • 13
    Jenkins + DockerSwarm 实现弹
    2020/03/31
  • 14
    mac swarm学习过程
    2020/03/31
  • 15
    spring cloud
    2020/03/18
  • 16
    JAVA开发中遇到的问题记录002
    2020/03/12
  • 17
    JAVA开发中遇到的问题记录001
    2020/03/07
  • 18
    php -i查看信息
    2020/02/23
  • 19
    phpStorm中使用xdebug工具调试dock
    2019/12/09
  • 20
    讲的比较好的B+树执行原理的文章
    2019/12/09
最喜标签
NYOJ 面试 AJAX ping CentOS 灰度算法 YII2