複製整個表
| 代碼如下 |
複製代碼 |
| create table new_table select * from old_table; |
複製表,不複製資料
| 代碼如下 |
複製代碼 |
create table new_table select * from old_table where 0; |
主鍵,索引,自增等其他額外特徵不會被帶到新表中。這點和其他的資料庫產品類似。
上面為核心兩句了
1、MySQL複製表結構及資料到新表
| 代碼如下 |
複製代碼 |
CREATE TABLE `新表` SELECT * FROM `舊錶` |
2、只複製表結構到新表
| 代碼如下 |
複製代碼 |
CREATE TABLE `新表` SELECT * FROM `舊錶` WHERE 1=2 或 CREATE TABLE `新表` LIKE `舊錶` |
3、複製舊錶的資料到新表(假設兩個表結構一樣)
| 代碼如下 |
複製代碼 |
INSERT INTO `新表` SELECT * FROM `舊錶` |
4、複製舊錶的資料到新表(假設兩個表結構不一樣)
| 代碼如下 |
複製代碼 |
INSERT INTO `新表`(欄位1,欄位2,…….) SELECT 欄位1,欄位2,…… FROM `舊錶` |
5、show create table 舊錶;
這樣會將舊錶的建立命令列出。我們只需要將該命令拷貝出來,更改table的名字,就可以建立一個完全一樣的表
時候這些MySQL介面工具會報錯,這個時候用命令列更好。比如複製一個表欄位資料到另外一個表的欄位,可以這麼寫:
| 代碼如下 |
複製代碼 |
UPDATE tb_1 INNER JOIN tb_2 ON tb_1.tid = tb_2.tid SET tb_1.tcontent = tb_2.tcontent
|
下面是一個實際例子,將PHPCMS已產生的靜態頁面的連結寫入phpcms_content表中的url欄位:
先這樣拼湊出需要的url欄位列。
| 代碼如下 |
複製代碼 |
SELECT CONCAT(FROM_UNIXTIME(inputtime,'%Y/%m%d'), '/', contentid, '.html') AS dt FROM phpcms_content ORDER BY contentid DESC |
然後再查詢編輯器(navicat)中,將整段複製拷貝到phpcms_content表中的url列即可