实践所用user表的DDl:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`state` bit(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
1.只复制表结构到新表
create TABLE test SELECT * FROM `user`where 1=2;
主键,自增长等不会添加进去
或者 使用
CREATE TABLE test like `user`;
没有数据,但是结构完全一样,推荐使用
2.复制表结构及数据到新表(结构不完整)
create TABLE test SELECT * FROM `user`;
有数据,但是主键,自增长等不会添加进去
3.复制旧表的数据到新表(假设两个表结构一样)
Insert INTO test SELECT * from user;
test表必须先存在
#INSERT INTO test(id,username) SELECT id,username FROM `user`;2个表结构不一样,插入test表中部分数据.注意没有插入数据的test表中的其他列中有非空约束的列并且没有默认值时会报错
总结:
1.如果想让新表与旧表的结构完全一样
使用
CREATE TABLE test like `user`;
2.如果想让新表与旧表的结构和数据完全一样
(1):
CREATE TABLE test like `user`;
(2)
Insert INTO test SELECT * from user;
3.尽量不使用
create TABLE test SELECT * FROM `user`;
和
create TABLE test SELECT * FROM `user`where 1=2;