2013-07-01 137 views
1

我可以「複製」一個表使用:
CREATE TABLE copy LIKE original_table

CREATE TABLE copy as select * from original_table何時CREATE TABLE AS SELECT與CREATE TABLE LIKE?

在後一種情況下,只有數據被複制,但沒有如主鍵等
所以我想知道,當我寧願使用select as

回答

3

這些做不同的事情。 CREATE TABLE LIKE創建一個空的表與原始表具有相同的結構。

CREATE TABLE AS SELECT將數據插入到新表中。結果表格不是空的。另外,CREATE TABLE AS SELECT通常用於更復雜的查詢,以生成臨時表。這種情況下沒有「原始」表。查詢的結果僅作爲表格捕獲。

編輯:

做「備份」的「標準」方式是使用。 。 。 。在數據庫級別爲backup。這將備份數據庫中的所有對象。例如,備份多個表很重要,以維護對象之間的關係完整性。

如果你只想要一張表的真實副本,首先做一個create table like,然後insert into。但是,這可能會對auto_increment字段造成挑戰。您可能想要將auto_increment屬性放在列上,以便填充這些列。

+0

那麼創建表的備份副本的標準方式是什麼? – Cratylus

2

當新表格不是舊錶格的精確副本時,通常使用第二種形式,但只包含由連接產生的選定列或列。

2

「創建表的選擇...」最有可能使用的,當你有複雜的選擇

如:

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

現在,顯然你應該使用創建一樣,如果你不需要這樣的複雜的選擇。您也可以用此語法更改PI。