create table xxx
as
select
xxx,創建新表,沒有原表的完整約束,會把原表的數據拷貝一份,如下:
mysql> desc stu;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set
mysql> create table stu2 as select * from stu;
Query OK, 1 row affected
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc stu2;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| Id | int ( 9 ) | NO | | 0 | |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
4 rows in set
mysql> select * from stu2;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set
create table xxx like xxx,創建新表,約束和原表相同,只拷貝表結構,沒有拷貝表的數據,如下:
mysql> desc stu;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set
mysql> create table stu3 like stu;
Query OK, 0 rows affected
mysql> desc stu3;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu3;
Empty set
如果我想拷貝表的結構(約束和原表相同),同時拷貝表的數據,怎么辦?
先create table xxx like xxx,創建表結構,再insert into xxx select xxx 拷貝數據。注意:這里沒有as
mysql> desc stu;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set
mysql> create table stu4 like stu;
Query OK, 0 rows affected
mysql> desc stu4;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu4;
Empty set
mysql> insert into stu4(name,age,updatetime) select name,age,updatetime from stu;
Query OK, 1 row affected
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from stu4;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set
mysql> desc stu;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set
mysql> create table stu2 as select * from stu;
Query OK, 1 row affected
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc stu2;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| Id | int ( 9 ) | NO | | 0 | |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
4 rows in set
mysql> select * from stu2;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set
create table xxx like xxx,創建新表,約束和原表相同,只拷貝表結構,沒有拷貝表的數據,如下:
mysql> desc stu;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set
mysql> create table stu3 like stu;
Query OK, 0 rows affected
mysql> desc stu3;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu3;
Empty set
如果我想拷貝表的結構(約束和原表相同),同時拷貝表的數據,怎么辦?
先create table xxx like xxx,創建表結構,再insert into xxx select xxx 拷貝數據。注意:這里沒有as
mysql> desc stu;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set
mysql> create table stu4 like stu;
Query OK, 0 rows affected
mysql> desc stu4;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | int ( 9 ) | NO | PRI | NULL | auto_increment |
| Name | varchar( 100 ) | NO | | NULL | |
| Age | int ( 9 ) | NO | | 0 | |
| updatetime | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set
mysql> select * from stu4;
Empty set
mysql> insert into stu4(name,age,updatetime) select name,age,updatetime from stu;
Query OK, 1 row affected
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from stu4;
+----+------+-----+---------------------+
| Id | Name | Age | updatetime |
+----+------+-----+---------------------+
| 1 | Andy | 28 | 2015 - 03 - 19 15 : 42 : 09 |
+----+------+-----+---------------------+
1 row in set