首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以从现有的sql表创建表定义?

问是否可以从现有的sql表创建表定义?
EN

Stack Overflow用户
提问于 2014-12-26 17:54:15
回答 3查看 57关注 0票数 1

有没有办法从mysql中以前创建的表自动创建表定义?

我使用MAMP来编写和测试网站,使用localhost来处理、纠错和调整数据库,然后再通过实际的主机创建数据库。虽然这项任务并不艰巨,但我最终花费了大量时间重新创建表定义。

如果我在搜索中使用了糟糕的关键字,我很抱歉,但每次我寻找答案时,我都会被发送到付费产品,而我更愿意投入并做一些代码。

主要通过php和mysql管理员工作

EN

回答 3

Stack Overflow用户

发布于 2014-12-26 17:56:54

您可以使用CTAS (Create Table As Select)语句轻松地对字段定义执行此操作,但它不会复制键、索引等。

代码语言:javascript
复制
create table YourNewTable as
select * from YourExistingTable

或者,如果您只想要结构而不想要数据:

代码语言:javascript
复制
create table YourNewTable as
select * from YourExistingTable where false

-编辑-

再三考虑,再次阅读您的问题,您可能正在寻找SHOW CREATE语句:

代码语言:javascript
复制
SHOW CREATE TABLE YourExistingTable

这将输出创建表所需的语句,因此您可以轻松地在主机上执行该语句。这样,您就可以相当容易地将表结构从本地环境复制到主机。

参见SHOW CREATE TABLE statement。

安装像PHPMyAdmin这样的工具可能是值得的。它将对执行查询和执行各种管理任务有很大的帮助。您甚至可以导出整个数据库结构,如果您也喜欢数据的话。

票数 0
EN

Stack Overflow用户

发布于 2014-12-26 18:16:51

我想你在搜索这个:

MySQL提供了两种基于另一个表创建表的方法:

  • 创建表...SELECT创建一个表,并从任意SELECT语句返回的结果集填充该表。在本例中,“other TABLE”是SELECT检索到的行和列的集合。
  • CREATE TABLE ...LIKE使用另一个现有表的定义创建一个空表。

代码语言:javascript
复制
mysql> CREATE TABLE t
-> (i INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (i))
-> ENGINE = InnoDB;

创建TABLE的结果...LIKE与CREATE TABLE的结果不同...若要创建空表,请执行以下操作。以下任一语句都将创建表t的空副本:

代码语言:javascript
复制
mysql> CREATE TABLE copy1 SELECT * FROM t WHERE 0;
mysql> CREATE TABLE copy2 LIKE t;

但是,生成的副本在保留原始表结构的信息量方面有所不同:

代码语言:javascript
复制
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

和

代码语言:javascript
复制
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没有这些问题。

参考:http://dev.mysql.com/doc/refman/5.5/en/create-table.html

票数 0
EN

Stack Overflow用户

发布于 2014-12-26 18:02:33

在Sql server中不使用Create table语句创建表:

代码语言:javascript
复制
Select * into NewTable from oldTable where 1=0

-- 1=0不会拷贝数据的地方

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27655476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档