何时使用CREATE TABLE AS SELECT,何时使用CREATE TABLE LIKE?

3

我可以使用以下命令“复制”一张表:
CREATE TABLE copy LIKE original_table

CREATE TABLE copy as select * from original_table

在后一种情况下,只有数据被复制,而不是例如主键等。
因此我想知道什么时候会更喜欢使用select as

3个回答

5
这两个命令的作用不同。 CREATE TABLE LIKE 命令创建一个与原始表具有相同结构但是为空的新表。CREATE TABLE AS SELECT 命令将数据插入到新表中,所生成的表不为空。此外,CREATE TABLE AS SELECT 命令通常与更复杂的查询一起使用,以生成临时表。这种情况下没有“原始”表,查询的结果只是被记录为一个表。
编辑:
备份的“标准”方式是使用数据库级别的backup。它备份数据库中的所有对象。备份多个表非常重要,例如,为了维护对象之间的关系完整性。
如果您只想要一个真正的表副本,请先执行一个create table like,然后再执行insert into。但是,这可能会在auto_increment字段方面带来挑战。您可能需要删除该列上的auto_increment属性,以便可以填充此类列。

那么,创建数据表备份的标准方法是什么? - undefined

2
"

创建表作为选择...

"通常在您有复杂的选择时使用。
例如:
create table t2 as select * from t1 where x1=7 and y1 <>2 from  t1;

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


2
第二种形式通常用于新表不是旧表的完全副本,而是仅包含选定的列或由联接产生的列的情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接