继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

在MYSQL中快速创建空表

largeQ
关注TA
已关注
手记 990
粉丝 92
获赞 585


今天有人问我用什么方法可以创建空表?

在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)

©著作权归作者所有:来自51CTO博客作者david_yeung的原创作品,如需转载,请与作者联系,否则将追究法律责任

MYSQL数据库创建SQL语句与特殊技巧


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP