1. 程式人生 > >吳裕雄 26-MySQL 復制表

吳裕雄 26-MySQL 復制表

包括 lec 修改 insert dex 數據 復制表 內容 create

如果我們需要完全的復制MySQL的數據表,包括表的結構,索引,默認值等。
如果僅僅使用CREATE TABLE ... SELECT 命令,是無法實現的。
本章節將為大家介紹如何完整的復制MySQL數據表,步驟如下:
使用 SHOW CREATE TABLE 命令獲取創建數據表(CREATE TABLE) 語句,
該語句包含了原數據表的結構,索引等。
復制以下命令顯示的SQL語句,修改數據表名,並執行SQL語句,
通過以上命令 將完全的復制數據表結構。
如果你想復制表的內容,你就可以使用 INSERT INTO ... SELECT 語句來實現。

實例
嘗試以下實例來復制表 runoob_tbl 。
步驟一:獲取數據表的完整結構。
SHOW CREATE TABLE runoob_tbl \G;
步驟二:修改SQL語句的數據表名,並執行SQL語句。
CREATE TABLE `clone_tbl` (
`runoob_id` int(11) NOT NULL auto_increment,
`runoob_title` varchar(100) NOT NULL default ‘‘,
`runoob_author` varchar(40) NOT NULL default ‘‘,
`submission_date` date default NULL,
PRIMARY KEY (`runoob_id`),
UNIQUE KEY `AUTHOR_INDEX` (`runoob_author`)
) ENGINE=InnoDB;
步驟三:
執行完第二步驟後,你將在數據庫中創建新的克隆表 clone_tbl。
如果你想拷貝數據表的數據你可以使用 INSERT INTO... SELECT 語句來實現。
INSERT INTO clone_tbl(runoob_id,runoob_title,runoob_author,submission_date)
SELECT runoob_id,runoob_title,runoob_author,submission_date FROM runoob_tbl;
執行以上步驟後,你將完整的復制表,包括表結構及表數據。

另一種完整復制表的方法:
CREATE TABLE targetTable LIKE sourceTable;
INSERT INTO targetTable SELECT * FROM sourceTable;

其他:
可以拷貝一個表中其中的一些字段:
CREATE TABLE newadmin AS
(
SELECT username, password FROM admin
)
可以將新建的表的字段改名:
CREATE TABLE newadmin AS
(
SELECT id, username AS uname, password AS pass FROM admin
)
可以拷貝一部分數據:
CREATE TABLE newadmin AS
(
SELECT * FROM admin WHERE LEFT(username,1) = ‘s‘
)
可以在創建表的同時定義表中的字段信息:
CREATE TABLE newadmin
(
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
AS
(
SELECT * FROM admin
)

來給大家區分下mysql復制表的兩種方式。
第一、只復制表結構到新表
create table 新表 select * from 舊表 where 1=2
或者
create table 新表 like 舊表
第二、復制表結構及數據到新表
create table新表 select * from 舊表

吳裕雄 26-MySQL 復制表