我可以使用以下方式“复制”一张桌子:
CREATE TABLE copy LIKE original_table
和
CREATE TABLE copy as select * from original_table
在后一种情况下,仅复制数据,但不复制主键等
所以我想知道何时更喜欢使用select as
?
答案 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。