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

2008-6-19  选择字号:  | |
打印本文章

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

来源:赛迪网    
相关的专家答疑
MySQLDriverCS是MySQL数据库的一个免费开源的.NET驱动程序。和Sql .NET Data Provider是为Sql Server一样,它是专门为MySQL设计的,可以叫做MySQL .NET Data Provider。
如何在.NET中访问MySQL数据库呢?也许很多人马上会说:用OLEDB嘛,但是事实上采用.NET OleDb Data Provider并不能访问MySQL,如果你使用的话,系统就会提示你……
单一文件大小有如下几个因素:1、文件系统的限制;2、某一程序进程所能存取的第一文件最大尺寸(例如apache在Linux EXT3下能存取的最大尺寸为2G,诸如日志)……
在论坛发表回复时出现“The table is full”的提示,字面意义上是数据表已满的意思。本文将以我此次问题的解决过程,介绍问题发生的原因及对策。
当我们设计一个新的或分析一个现存的系统时,其中所要考虑的一个重要问题就是应用程序的设计问题。即使数据库设计得很好而且还经过优化处理,应用程序设计不适当……
本专题主要介绍SQL Server 2008的新增特征:SQL Server 2008中的T-SQL基本对象和操作、T-SQL的函数类型和数据类型以及新的安全特性等等。
本篇文章主要介绍SQL Server数据存储的物理对象和原理,包括SQL Server 2005和2008里的物理数据存储、SQL Server 2008数据类型(即Datetime、字符串、自定义及等)、在SQL Server数据库中加强数据的完整性……
本文为SQL Server 2008初学者指南,主要介绍SQL Server2008 T-SQL支持的基本元素和基本操作。
最新更新
专家答疑
技巧
Phillip Bracken
我怎样在Oracle中增加SGA_MAX_SIZE?在计算机启动的时候出现了以下错误:"ORA-03113: end-of-file on communication channel"。请您告诉我增加SGA的一些步骤。
Rudy Limeback
我想用REPLACE语句替换AddressLine1域里面的数据,也就是想删除逗号、周期、连字符,并将 '3 South '替换成'3 S ' 然后……
Brian Peasland
设计备份方案时主要考虑哪些因素?什么是RTO、MTBF和MTTR?我不敢100%肯定RTO,但是我觉得就是Return to Operation的意思。换句话说就是将系统返回到正常操作时间……