在操作数据库的时候,往往是保留想要修改的库,先建一个一样的来操作,例如我想给一个库加个字段,然后从另一个很复杂的sql语句导入数据,看字段添加是否正确,最好的做法就是自己建一张临时表,把查询结果插到临时表,这样一旦出错,也不会影响到正常数据.下面是一些涉及到表复制和修改的常用命令.
MySql表复制
这个分为表是存在和不存在两种,具体使用不同的语句.
新表不存在
1 2
| create table new_table select * from old_talbe;
|
这种方法会将old_table
中所有的内容都拷贝过来,用这种方法需要注意,new_table
中没有了old_table
中的primary key,Extra,auto_increment
等属性,需要自己手动加,具体参看后面的修改表即字段属性.
1 2 3 4 5 6
| # 第一种方法,和上面类似,只是数据记录为空,即给一个false条件 create table new_table select * from old_table where 1=2;
# 第二种方法 create table new_table like old_table;
|
新表存在
1 2
| insert into new_table select * from old_table;
|
1 2
| insert into new_table(field1,field2,.....) select field1,field2,field3 from old_table;
|
1
| select * into new_table from old_table;
|
1
| select * into new_talble from old_table where 1=2;
|
MySql修改命令
1
| alter table table_name add column column_type [other];
|
例如:
1
| alter table user_info add mobile_phone varchar(30) default '0';
|
1
| alter table table_name add index index_name (field1[,field2 …]);
|
用法样例:
1
| alter table user_info add index idx_user_no(user_no);
|
1
| alter table table_name add primary key(field);
|
用法举例:
1
| alter table table_name add primary key(id,user_no);
|
1
| alter table table_name add unique idx_name(field);
|
用法举例:
1
| alter table user_info add unique idx_user_name(user_name);
|
1
| alter table table_name drop index idx_name;
|
1
| alter table table_name change old_field_name new_field_name field_type;
|
1
| alter table table_name drop field_name;
|