首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL 中 SELECT INTO 語法錯誤的正確替代方案

     編輯:程式設計綜合問答

許多從其他資料庫(如 SQL Server)轉向 MySQL 的開發者,會嘗試使用 SELECT * INTO new_table FROM old_table 來複製資料表結構與資料,但在 MySQL 中執行時會報錯,提示目標資料表不存在。這是因為 MySQL 不支援 SELECT INTO 這種建表語法。

正確做法:CREATE TABLE ... SELECT

MySQL 提供了標準的 CREATE TABLE ... SELECT 語法,可一次完成建立新表並複製資料:

CREATE TABLE persons_backup AS SELECT * FROM persons;

或明確指定欄位:

CREATE TABLE persons_backup (id INT, name VARCHAR(50)) SELECT id, name FROM persons;

補充說明

  • 新建表會自動根據 SELECT 查詢結果推斷欄位型別,但不會複製索引、主鍵、外鍵、AUTO_INCREMENT 等約束,需後續手動添加。
  • 若僅需複製表結構不複製資料,可加上 WHERE 1=0 或使用 LIKE:
    CREATE TABLE new_table LIKE old_table;
  • 若需完整複製含約束的表結構,可用 SHOW CREATE TABLE old_table 取得建表語句,修改表名後執行。

適用場景

此語法常用於備份資料表、建立測試資料集、跨資料庫遷移資料等場景,是 MySQL 開發者必備的技巧之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved