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