专注各种脚本编程
Baidu
加入收藏夹
本站内容有下面分类知识,欢迎您的到来^_^
shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言 oracle
当前位置:| 主页>mysql>

MYSQL两种快速创建空表的方式的区别

百度收藏 QQ搜藏

来源: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--

上一篇:MySQL数据导入导出方法与工具介绍(2-import from sql files) 下一篇:POSTGRESQL和MYSQL的自增字段区别

power by soyo123 2007-2008