在MySQL中復制A表數據到B表中,有兩種方式可以實現,INSERT INTO SELECT 語句和 INSERT INTO SELECT 語句,分別適應于B表存在以及B表不存在的兩種場景。
接下來,我們詳細的了解一下,如何使用 INSERT INTO SELECT 語句和 INSERT INTO SELECT 語句實現數據復制,為了方便演示,我們使用如下 Students_hobby_t(原始表) 和 Students_hobby_h(目標表) 兩張表作為演示數據,如下:
INSERT INTO SELECT 語法INSERT INTO SELECT 語句從一個表復制數據,然后把數據插入到一個已存在的表中。目標表中任何已存在的數據不會受影響。
如下,我們可以從原始表中復制所有的列插入到另一個已存在的目標表中:
或者,我們可以只復制特定的列插入到另一個已存在的目標表中:
INSERT INTO SELECT 實例復制 "Students_hobby_t" 中的數據插入到 "Students_hobby_h" 中:
只復制 Hobby_id = 10 的學生愛好信息 到 "Students_hobby_h" 中:
SELECT INTO FROM 語法使用 INSERT INTO SELECT 語句時,要求目標表存在。若在目標表不存在的情況下,復制數據可以使用 SELECT INTO FROM 語句 。
SELECT INTO FROM 語句從原始表復制數據,然后把數據插入到另一個新的目標表中,表結構與查詢結構一致。
如下,我們可以從原始表復制所有的列插入到新的目標表中:
或者,只復制指定的列插入到新的目標表中:
新表將會使用 SELECT 語句中定義的列名稱和類型進行創建。您可以使用 AS 子句來應用新名稱。
SELECT INTO FROM 實例創建 Students_hobby_h 的數據備份表 Students_hobby_h_backup:
只復制某幾列插入到新的目標表中:
只復制符合指定條件的數據插入到新的目標表中:
復制多個表中的數據插入到新的目標表中: