MySQL複製表資料操作相信大家都不會太陌生,下面就為您詳細介紹MySQL複製表資料到新表的步驟,希望對您會有所啟迪。
1.MySQL複製表結構及資料到新表
| 代碼如下 |
複製代碼 |
CREATE TABLE 新表 SELECT * FROM 舊錶 |
2.只複製表結構到新表
| 代碼如下 |
複製代碼 |
CREATE TABLE 新表 SELECT * FROM 舊錶 WHERE 1=2 |
即:讓WHERE條件不成立.
方法二:(低版本的mysql不支援,mysql4.0.25 不支援,mysql5已經支援了)
| 代碼如下 |
複製代碼 |
CREATE TABLE 新表 LIKE 舊錶 |
3.複製舊錶的資料到新表(假設兩個表結構一樣)
| 代碼如下 |
複製代碼 |
INSERT INTO 新表 SELECT * FROM 舊錶 |
4.複製舊錶的資料到新表(假設兩個表結構不一樣)
| 代碼如下 |
複製代碼 |
INSERT INTO 新表(欄位1,欄位2,…….) SELECT 欄位1,欄位2,…… FROM 舊錶 |
樣本如下:
將 production 資料庫中的 mytbl 錶快速複製為 mytbl_new,2個命令如下:
| 代碼如下 |
複製代碼 |
CREATE TABLE mytbl_new LIKE production.mytbl; INSERT mytbl_new SELECT * FROM production.mytbl; |
第一個命令是建立新的資料表 mytbl_new ,並複製 mytbl 的資料表結構。
第二個命令是講資料表 mytbl 中的資料複製到新表 mytbl_new 。
註:production.mytbl是指定要複製表的資料庫名稱為 production 。它是可選的。
假如沒有production. ,MySQL資料庫將會假設mytbl在當前操作的資料庫。
其它方法:
方案1:
複製整個表
CREATE TABLE new_table SELECT * FROM old_table;
複製,不複製資料
CREATE TABLE new_table SELECT * FROM old_table where 0;
注意:本方案其實只是把select語句的結果建一個表。所以new_table這個表不會有主鍵、索引。
方案2:
假如我們有以下這樣一個表:
id username password
-----------------------------------
1 admin *************
2 sameer *************
3 stewart *************
CREATE TABLE IF NOT EXISTS `admin` (
`id` int(6) unsigned NOT NULL auto_increment,
`username` varchar(50) NOT NULL default '',
`password` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
1. 下面這個語句會拷貝表結構到新表newadmin中。 (不會拷貝表中的資料)
CREATE TABLE newadmin LIKE admin
2. 下面這個語句會拷貝資料到新表中。 注意:這個語句其實只是把select語句的結果建一個表。所以newadmin這個 表不會有主鍵,索引。
| 代碼如下 |
複製代碼 |
CREATE TABLE newadmin ( SELECT * FROM admin )
|
3. 如果你要真正的複製一個表。可以用下面的語句。
| 代碼如下 |
複製代碼 |
CREATE TABLE newadmin LIKE admin; INSERT INTO newadmin SELECT * FROM admin;
|
4. 我們可以操作不同的資料庫。
| 代碼如下 |
複製代碼 |
CREATE TABLE newadmin LIKE shop.admin; CREATE TABLE newshop.newadmin LIKE shop.admin;
|
5. 我們也可以拷貝一個表中其中的一些欄位。
| 代碼如下 |
複製代碼 |
CREATE TABLE newadmin ( SELECT username, password FROM admin ) |
6. 我們也可以講建立的表的欄位改名。
| 代碼如下 |
複製代碼 |
CREATE TABLE newadmin ( SELECT id, username AS uname, password AS pass FROM admin ) |
7. 我們也可以拷貝一部分資料。
| 代碼如下 |
複製代碼 |
CREATE TABLE newadmin ( SELECT * FROM admin WHERE LEFT(username,1) = 's' ) |
8. 我們也可以在建立表的同時定義表中的欄位資訊。
| 代碼如下 |
複製代碼 |
CREATE TABLE newadmin ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ) ( SELECT * FROM admin ) |