假設存在如下Table:mysql
mysql> select * from staff; +----+----------+-------+ | id | name | slary | +----+----------+-------+ | 3 | haofugui | 10000 | | 4 | guoming | 3500 | | 5 | haotian | 2900 | +----+----------+-------+ 3 rows in set (0.00 sec) mysql> describe staff; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | char(20) | YES | | NULL | | | slary | int(11) | YES | | NULL | | +-------+----------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
1. 只複製表結構到新表sql
語句1:CREATE TABLE new_table_name SELECT [field1,field2... | *] FROM old_table_name WHERE 1=2;數據庫
語句2:CREATE TABLE new_table _name LIKE old_table_name;ui
示例:spa
mysql> create table staff_bak select id,name from staff where 1=2; //根據舊錶的指定屬性建立一個新的空表 Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> select * from staff_bak; //新建的數據庫爲空表 Empty set (0.00 sec) mysql> describe staff_bak; //原表的主鍵和自動增加不能被複制 +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | id | int(11) | NO | | 0 | | | name | char(20) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
mysql> create table staff_bak_1 like staff; //根據舊錶建立一個新的空表,沒法指定屬性或屬性組 Query OK, 0 rows affected (0.03 sec) mysql> select * from staff_bak_1; Empty set (0.00 sec) mysql> describe staff_bak_1; //全部數據類型和完整性約束條件都能被複制,包括主鍵和自動增加 +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | char(20) | YES | | NULL | | | slary | int(11) | YES | | NULL | | +-------+----------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
注意:語句1可指定複製的屬性範圍,但沒法複製主鍵類型和自增方式;code
語句2會把舊錶的全部字段類型都複製到新表,但沒法複製指定屬性或屬性組。blog
2. 複製表結構及數據到新表rem
語句:CREATE TABLE new_table_name SELECT [field1,field2... | *] FROM old_table_name;table
mysql> create table staff_bak select id,name from staff; //根據舊錶將指定屬性及其數據建立新表 Query OK, 3 rows affected (0.03 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> describe staff_bak; //新表結構展現 +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | id | int(11) | NO | | 0 | | | name | char(20) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> select * from staff_bak; //新表數據顯示 +----+----------+ | id | name | +----+----------+ | 3 | haofugui | | 4 | guoming | | 5 | haotian | +----+----------+ 3 rows in set (0.00 sec)