在MYSQL中快速创建空表

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:
今天有人问我用什么方法可以创建空表?
在MYSQL中有两种方法。
1、create table select ...
2、create table like ...
第一种很多人都知道,第二种却很少人用。
第一种有个缺点 :
取消掉原来表的有些定义。

手册上是这么讲的:
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)






本文转自 david_yeung 51CTO博客,原文链接:http://blog.51cto.com/yueliangdao0608/81264,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
数据可视化 安全 关系型数据库
从零开始安装MySQL数据库,并使用可视化DBevaer创建数据 | 开始搞全栈(一)
从零开始安装MySQL数据库,并使用可视化DBevaer创建数据 | 开始搞全栈(一)
392 0
从零开始安装MySQL数据库,并使用可视化DBevaer创建数据 | 开始搞全栈(一)
|
关系型数据库 MySQL Linux
Docker | Compose创建mysql容器
Docker | Compose创建mysql容器
291 0
Docker | Compose创建mysql容器
|
SQL 机器学习/深度学习 关系型数据库
《MySQL高级篇》六、索引的创建与设计原则(四)
《MySQL高级篇》六、索引的创建与设计原则
《MySQL高级篇》六、索引的创建与设计原则(四)
|
存储 关系型数据库 MySQL
《MySQL高级篇》六、索引的创建与设计原则(三)
《MySQL高级篇》六、索引的创建与设计原则
《MySQL高级篇》六、索引的创建与设计原则(三)
|
SQL 关系型数据库 MySQL
《MySQL高级篇》六、索引的创建与设计原则(二)
《MySQL高级篇》六、索引的创建与设计原则
《MySQL高级篇》六、索引的创建与设计原则(二)
|
SQL 存储 关系型数据库
《MySQL高级篇》六、索引的创建与设计原则(一)
《MySQL高级篇》六、索引的创建与设计原则
《MySQL高级篇》六、索引的创建与设计原则(一)
|
关系型数据库 MySQL 数据库
mysql:添加时间列自动更新时间(用于记录创建时间和修改时间)
mysql:添加时间列自动更新时间(用于记录创建时间和修改时间)
1405 0
mysql:添加时间列自动更新时间(用于记录创建时间和修改时间)
|
关系型数据库 MySQL Java
基于window10使用docker-composer创建mysql数据库和tomcat环境
基于window10使用docker-composer创建mysql数据库和tomcat环境
308 0
基于window10使用docker-composer创建mysql数据库和tomcat环境
|
SQL 存储 数据可视化
删库跑路?不可回滚?MySQL创建和管理表,修改清空表,MySQL8新特性DDL原子化,完整详细可收藏
删库跑路?不可回滚?MySQL创建和管理表,修改清空表,MySQL8新特性DDL原子化,完整详细可收藏
删库跑路?不可回滚?MySQL创建和管理表,修改清空表,MySQL8新特性DDL原子化,完整详细可收藏
|
存储 SQL Cloud Native
基于 PolarDB for MySQL 实现并行创建索引赛题解析 | 学习笔记
快速学习基于 PolarDB for MySQL 实现并行创建索引赛题解析
基于 PolarDB for MySQL 实现并行创建索引赛题解析 | 学习笔记

推荐镜像

更多