您的位置:首页 > 其它

create table like 和create table select 比较

2013-01-10 16:00 274 查看
语法:

CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name

[(create_definition,...)]

[table_options][select_statement]


CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name

[(]LIKEold_tbl_name[)];

测试过程:

原数据表:

mysql>showcreatetabletest_order\G
***************************1.row***************************
Table:test_order
CreateTable:CREATETABLE`test_order`(
`pay_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP,
`origin`int(10)DEFAULTNULL,
`team_id`int(11)DEFAULTNULL,
`state`int(11)DEFAULTNULL,
KEY`team_id`(`team_id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
1rowinset(0.00sec)

mysql>createtableccselect*fromtest_order;
QueryOK,9900rowsaffected(0.11sec)
Records:9900Duplicates:0Warnings:0

mysql>createtableddliketest_order;
QueryOK,0rowsaffected(0.22sec)

查看数据:

mysql>select*fromcclimit2;
+---------------------+--------+---------+-------+
|pay_time|origin|team_id|state|
+---------------------+--------+---------+-------+
|2011-06-2218:04:47|10|100|100|
|2011-06-2218:04:47|10|100|101|
+---------------------+--------+---------+-------+
2rowsinset(0.00sec)

mysql>select*fromdd;
Emptyset(0.00sec)

结果:cc表中数据与原表test_order中的一致,dd表中无数据

查看表结构:

mysql>showcreatetablecc\G
***************************1.row***************************
Table:cc
CreateTable:CREATETABLE`cc`(
`pay_time`timestampNOTNULLDEFAULT'0000-00-0000:00:00',
`origin`int(10)DEFAULTNULL,
`team_id`int(11)DEFAULTNULL,
`state`int(11)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8
1rowinset(0.00sec)

mysql>showcreatetabledd\G
***************************1.row***************************
Table:dd
CreateTable:CREATETABLE`dd`(
`pay_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP,
`origin`int(10)DEFAULTNULL,
`team_id`int(11)DEFAULTNULL,
`state`int(11)DEFAULTNULL,
KEY`team_id`(`team_id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
1rowinset(0.00sec)

结果:cc表中,原表中的索引消失了;dd表与原表一致


结论:

createtableselect会将原表中的数据完整复制一份,但表结构中的索引会丢失。

createtablelike只会完整复制原表的建表语句,但不会复制数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: