介紹
有時候我們需要原封不動的複製一張表的表結構來生成一張新表,MYSQL提供了兩種便捷的方法。
例:
CREATE TABLE tb_base( id INT NOT NULL PRIMARY KEY, name VARCHAR(10), KEY ix_name (name)) ENGINE='MyISAM',CHARSET=utf8,COMMENT 'a' ;
insert into tb_base() values(1,'a'),(2,'b');
一、LIKE方法
like方法能一模一樣的將一個表的結果複製生成一個新表,包括複製表的備註、索引、主鍵外來鍵、儲存引擎等。
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }
1.複製表
CREATE TABLE IF NOT EXISTS tb_base_like (LIKE tb_base);
2.檢視錶
可以看到新複製的表和原表完全一致,但是不復制資料。
二、SELECT方法
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name SELECT ... (Some valid select or union statement)
1.複製表
CREATE TABLE IF NOT EXISTS tb_base_select SELECT * FROM tb_base;
2.檢視錶
select的方法值複製欄位屬性,其它的主鍵、索引、表備註、儲存引擎都沒有複製
三、區別
like方法:like方法其實是專門複製表結構的方法,但是它只複製表的結構和相關屬性並不複製資料
select方法:嚴格來講select方法不能理解成複製表結構的方法,其實它只是執行了一個select查詢語句,所以複製的結果只包含了select的欄位和資料,其它表屬性都有系統的配置檔案決定;包括儲存引擎、預設字符集等都是有系統的預設配置所決定。
總結
所以真正的表結構複製方法是LIKE方法,如果不需要考慮表原本的屬性包括儲存引擎、備註、主鍵、索引等那麼select複製方法是個不錯的方法並且還能連同資料一起復制。
備註: 作者:pursuer.chen 部落格:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。 《歡迎交流討論》 |