来源:http://blog.chinaunix.net/u/29134/
在MYSQL中用什么方法可以创建空表?通常有两种方法。 1、create table select ... 2、create table like ... 第一种很多人都知道,第二种却很少人用。
其中第一种有两个缺点 1、第一种会取消掉原来表的有些定义。 Mysql手册上是这么说明的: Some conversion of data types might occur. For example, the AUTO_INCREMENT attribute is not preserved, and VARCHAR columns can become CHAR columns. 不过我测试过,只会取消自增属性! 2、引擎是系统默认引擎。
第二种就完全复制原表。
先建立测试表:
mysql> create database dbtest; Query OK, 1 row affected (0.03 sec)
mysql> use dbtest; Database changed 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.04 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=latin1 | +-------+---------------------------------------------------------------------------------------+ 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.04 sec) Records: 0 Duplicates: 0 Warnings: 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=latin1 | +----------+----------------------------------------------------------------+ 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=latin1 | +--------+-----------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
mysql>
--End-- |