使用单个sql命令创建多个表

时间:2010-01-23 16:59:51

标签: sql database mysql

我在这里和谷歌上搜索了这个,但令人惊讶的是找不到答案。我试图创建提交到mysql的语法,这将创建具有相同列的多个表,但它返回了一个错误。你能指出我的语法有什么问题,或者这是否可能?

 CREATE TABLE news, life
 (
 id int PRIMARY KEY AUTO_INCREMENT ,
 name varchar( 30 ) ,
 email varchar( 50 ) ,
 COMMENT text,
 datetime datetime,
 ip varchar( 20 )
 ) 

2 个答案:

答案 0 :(得分:3)

你在mysql中,所以你可以使用LIKE命令的CREATE TABLE子句;这样你就可以获得复制的列属性和索引,例如

CREATE TABLE new_tbl LIKE orig_tbl;

请参阅http://dev.mysql.com/doc/refman/5.1/en/create-table.html

  

使用LIKE创建一个空表   基于另一个的定义   表,包括任何列属性   和原始中定义的索引   table:CREATE TABLE new_tbl LIKE   orig_tbl;使用创建副本   相同版本的表存储   格式为原始表。该   需要SELECT权限   原始表。 LIKE只适用于   基表,不适用于视图。创建   表... LIKE不保留任何   DATA DIRECTORY或INDEX DIRECTORY   为其指定的表选项   原始表或任何外键   定义

答案 1 :(得分:2)

这不可能。

想想你的桌面设计。这听起来像您应该考虑创建一个表并添加另一个typenews列(或对另一个定义类型的表的引用)。


如果您确实需要两张桌子,请创建第一张桌子:

life

然后

 CREATE TABLE news
 (
 id int PRIMARY KEY AUTO_INCREMENT ,
 name varchar( 30 ) ,
 email varchar( 50 ) ,
 COMMENT text,
 datetime datetime,
 ip varchar( 20 )
 )

但不会复制索引和约束(CREATE TABLE life AS ( SELECT * FROM news where 1=2 ); UNIQUEPRIMARY KEY)。你必须自己处理它们。