SELECT INTO FROM語句、INSERT INTO SELECT FROM語句、CREATE TABLE AS SELECT FROM語句三者區別

首先,這三條語句都可以用來進行數據遷移,即將表1中的數據複製到表2中;

其次依次說一下這三者:

1. SELECT INTO FROM:

  • “全稱”:SELECT value1,value2 INTO table2 FROM table1
  • 該語句在複製插入時會自動創建table2,因此要求複製之前table2不存在,直接將table1對應的字段拷貝過來並創建一個新表,名爲table2
  • MySQL 數據庫不支持該語句(是他說的

2. INSERT INTO SELECT FROM:

  • “全稱”:INSERT INTO table2(field1,field2) SELECT value1,value2 FROM table1
  • 從該SQL上面就可以明白這句話的含義:將table1的字段value1、value2取出來,插入到table2中,並可以重命名。因而該語句要求table2存在,而且字段field1,field2也得存在

3. CREATE TABLE AS SELECT FROM:

  • 這個語句有幾種不同的情況,但均要求table2不存在:
    1. CREATE TABLE table2 AS SELECT * FROM table1: 這是最簡單最常見的,就是將table1結果全部取出後,照原樣生成一個table2;
    2. CREATE TABLE table2(name1,name2) AS SELEC value1,value2 FROM table1:複製表table1的部分字段,並且制定列名
    3. CREATE TABLE table2 AS SELECT * FROM table1 WHERE ... : 此時只會複製table1的表結構並創建table2。效果類似於:CREATE TABLE table2 LIKE table1

 

INSERT INTO SELECT FROM & CREATE TABLE AS SELECT FROM的性能差別:

因爲二者都可以進行表數據的複製,二者除了一個要求表格事先存在、一個事先不存在之外,差別還體現在性能上。INSERT INTO SELECT FROM是DML(Data Manipulation Language)語句,CREATE TABLE AS SELECT FROM是DDL(Data Definition Language)語句,當複製的數據量較大時,DDL語句效率會優於DML語句,因而大數據量遷移,CREATE TABLE AS SELECT FROM更好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章