mysql 複製表資料,表結構的3種方法

工程師WWW發表於2014-07-25

什麼時候我們會用到複製表?例如:我現在對一張表進行操作,但是怕誤刪資料,所以在同一個資料庫中建一個表結構一樣,表資料也一樣的表,以作備份。如果用mysqldump比較麻煩,備份.MYD,.MYI這樣的檔案呢,操作起來也還是麻煩。

一,複製表結構

方法1:

mysql> create table a like users;         //複製表結構  
  1. Query OK, 0 rows affected (0.50 sec)  
  2.   
  3. mysql> show tables;  
  4. +----------------+  
  5. | Tables_in_test |  
  6. +----------------+  
  7. | a              |  
  8. | users          |  
  9. +----------------+  
  10. 2 rows in set (0.00 sec)  

方法2:

mysql> create table b select * from users limit 0;   //複製表結構  
  1. Query OK, 0 rows affected (0.00 sec)  
  2. Records: 0  Duplicates: 0  Warnings: 0  
  3.   
  4. mysql> show tables;  
  5. +----------------+  
  6. | Tables_in_test |  
  7. +----------------+  
  8. | a              |  
  9. | b              |  
  10. | users          |  
  11. +----------------+  
  12. 3 rows in set (0.00 sec)  

方法3:

mysql> show create table users\G;          //顯示創表的sql  
  1. *************************** 1. row ***************************  
  2.  Table: users  
  3. Create Table: CREATE TABLE `users` (       //改表名  
  4.  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,  
  5.  `user_name` varchar(60) NOT NULL DEFAULT '',  
  6.  `user_pass` varchar(64) NOT NULL DEFAULT '',  
  7.  PRIMARY KEY (`ID`)  
  8. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8  //改auto_increment  
  9. 1 row in set (0.00 sec)  

把sql語句copy出來,改一下表名和atuo_increment,然後在執行一下。

二,複製表資料,以及表結構

方法1:

mysql> create table c select * from users;      //複製表的sql  
  1. Query OK, 4 rows affected (0.00 sec)  
  2. Records: 4  Duplicates: 0  Warnings: 0  

方法2:

  1. mysql> create table d select user_name,user_pass from users where id=1;  
  2. Query OK, 1 row affected (0.00 sec)  
  3. Records: 1  Duplicates: 0  Warnings: 0  

上面的2種方法,方便,快捷,靈活性強。

方法3:

先建立一個空表,

 INSERT INTO 新表 SELECT * FROM 舊錶 ,(#add 成功過)

或者

INSERT INTO 新表(欄位1,欄位2,…….) SELECT 欄位1,欄位2,…… FROM 舊錶 (#add 沒成功過,即使欄位保持對應)

這種方法不是很方便,也是我以前經常用的。

相關文章