2

我可以使用“复制”表格:
CREATE TABLE copy LIKE original_table

CREATE TABLE copy as select * from original_table

在后一种情况下,只复制数据,但不复制主键等。
所以我想知道我什么时候更喜欢使用select as?

4

3 回答 3

5

这些做不同的事情。 CREATE TABLE LIKE创建一个与原始表具有相同结构的空表。

CREATE TABLE AS SELECT将数据插入到新表中。结果表不为空。此外,CREATE TABLE AS SELECT通常与更复杂的查询一起使用,以生成临时表。在这种情况下没有“原始”表。查询的结果只是被捕获为一个表。

编辑:

进行备份的“标准”方法是使用 . . . . backup在数据库级别。这将备份数据库中的所有对象。例如,备份多个表对于维护对象之间的关系完整性很重要。

如果您只想要一个表格的真实副本,请先执行 acreate table like然后insert into. auto_increment但是,这可能会给字段带来挑战。您可能希望删除auto_increment列上的属性,以便填充此类列。

于 2013-07-01T19:05:57.273 回答
2

当新表不是旧表的精确副本,而是仅包含选定的列或连接产生的列时,通常使用第二种形式。

于 2013-07-01T19:06:28.097 回答
2

当您有复杂的选择时,最有可能使用“创建表作为选择...”

例如:

create table t2 as select * from t1 where x1=7 and y1 <>2 from  t1;

现在,如果您不需要如此复杂的选择,显然您应该使用 Create Like。您也可以使用此语法更改 PI。

于 2013-07-01T19:07:31.083 回答