MySQL複製表-CREATE SELECT

假設存在如下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)
相關文章
相關標籤/搜索