当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL中两种快速创建空表的方式的区别

MYSQL
MySQL 实用命令
Mysql 默认字符集设置方法(免安装版)
MySQL 数据库对服务器端光标的限制
MySQL UPDATE更新语句精解
Table ‘xxx’ is marked as crashed and should be repaired 错误解决方法参考
mysql 读写分离(基础篇)
mysql 读写分离(实战篇)
processlist命令 查看mysql 线程
MySQL 数据类型 大全
MySQL 密码设置
MYSQL代码 定期备份Mysql数据库
汇总整理MYSQL相关操作命令
MySQL 数据库两台主机同步实战(linux)
MSSQL 添加字段说明
MySQL 查询某个字段不重复的所有记录
mysql 设置默认的时间值
mysqlreport显示Com_中change_db占用比例高的问题的解决方法
解决mysql不能插入中文Incorrect string value
mysql从执行.sql文件时处理\n换行的问题
mysql 主从服务器的简单配置

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 64 ::
收藏到网摘: n/a

在MySQL中有两种方法

1、create table t_name select ...

2、create table t_name 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 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>