什么时候CREATE TABLE AS SELECT与CREATE TABLE LIKE?

时间:2013-07-01 19:01:51

标签: mysql sql database select create-table

我可以使用以下方式“复制”一张桌子:
CREATE TABLE copy LIKE original_table

CREATE TABLE copy as select * from original_table

在后一种情况下,仅复制数据,但不复制主键等 所以我想知道何时更喜欢使用select as

3 个答案:

答案 0 :(得分:3)

这些做不同的事情。 CREATE TABLE LIKE创建一个 empty 表,其结构与原始表相同。

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

编辑:

备份的“标准”方式是使用。 。 。 。 backup在数据库级别。这将备份数据库中的所有对象。例如,备份多个表非常重要,可以保持对象之间的关系完整性。

如果您只想要一张表的真实副本,请首先执行create table like然后insert into。但是,这可能会对auto_increment字段构成挑战。您可能希望删除列上的auto_increment属性,以便填充此类列。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

当您有复杂的选择

时,最有可能使用

“将表创建为选择...”

e.g:

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

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