有没有办法从mysql中以前创建的表自动创建表定义?
我使用MAMP来编写和测试网站,使用localhost来处理、纠错和调整数据库,然后再通过实际的主机创建数据库。虽然这项任务并不艰巨,但我最终花费了大量时间重新创建表定义。
如果我在搜索中使用了糟糕的关键字,我很抱歉,但每次我寻找答案时,我都会被发送到付费产品,而我更愿意投入并做一些代码。
主要通过php和mysql管理员工作
发布于 2014-12-26 17:56:54
您可以使用CTAS (Create Table As Select)语句轻松地对字段定义执行此操作,但它不会复制键、索引等。
create table YourNewTable as
select * from YourExistingTable或者,如果您只想要结构而不想要数据:
create table YourNewTable as
select * from YourExistingTable where false-编辑-
再三考虑,再次阅读您的问题,您可能正在寻找SHOW CREATE语句:
SHOW CREATE TABLE YourExistingTable这将输出创建表所需的语句,因此您可以轻松地在主机上执行该语句。这样,您就可以相当容易地将表结构从本地环境复制到主机。
参见SHOW CREATE TABLE statement。
安装像PHPMyAdmin这样的工具可能是值得的。它将对执行查询和执行各种管理任务有很大的帮助。您甚至可以导出整个数据库结构,如果您也喜欢数据的话。
发布于 2014-12-26 18:16:51
我想你在搜索这个:
MySQL提供了两种基于另一个表创建表的方法:
mysql> CREATE TABLE t
-> (i INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (i))
-> ENGINE = InnoDB;创建TABLE的结果...LIKE与CREATE TABLE的结果不同...若要创建空表,请执行以下操作。以下任一语句都将创建表t的空副本:
mysql> CREATE TABLE copy1 SELECT * FROM t WHERE 0;
mysql> CREATE TABLE copy2 LIKE t;但是,生成的副本在保留原始表结构的信息量方面有所不同:
mysql> SHOW CREATE TABLE copy1\G;
*************************** 1. row ***************************
Table: copy1
Create Table: CREATE TABLE `copy1` (
`i` int(11) NOT NULL default ‘0’
) ENGINE=MyISAM DEFAULT CHARSET=latin1和
mysql> SHOW CREATE TABLE copy2\G;
*************************** 1. row ***************************
Table: copy2
Create Table: CREATE TABLE `copy2` (
`i` int(11) NOT NULL auto_increment,
PRIMARY KEY (`i`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1创建表...SELECT语句从原始表复制列名和数据类型,但不保留主键索引信息或AUTO_INCREMENT列属性信息。新表也使用默认的存储引擎,而不是表t使用的存储引擎。LIKE没有这些问题。
发布于 2014-12-26 18:02:33
在Sql server中不使用Create table语句创建表:
Select * into NewTable from oldTable where 1=0-- 1=0不会拷贝数据的地方
https://stackoverflow.com/questions/27655476
复制相似问题