mysql中如何改变字段或者列的顺序

创建了一个这样的数据表,想把id放到第一列,因为是主键,并且是自增的:

 
  1. mysql> select * from student

  2. -> ;

  3. +-------+-------+-------+----+

  4. | class | name | score | id |

  5. +-------+-------+-------+----+

  6. | 1 | user1 | 100 | 1 |

  7. | 1 | user | 45 | 2 |

  8. | 1 | user1 | 80 | 3 |

  9. | 1 | user | 62 | 4 |

  10. | 1 | user1 | 100 | 5 |

  11. | 2 | user | 108 | 6 |

  12. | 2 | user1 | 90 | 7 |

  13. | 2 | user | 24 | 8 |

  14. +-------+-------+-------+----+

  15. 8 rows in set (0.00 sec)

原来的顺序如上所示,怎么把id放在在前面,并且数据不动,属性不变呢?

废话不多说,直接上句子:

 

 
  1. mysql> alter table student modify id int(10) unsigned auto_increment first;

  2. Query OK, 8 rows affected (0.02 sec)

  3. Records: 8 Duplicates: 0 Warnings: 0

  4.  
  5. mysql> desc student;

  6. +-------+------------------+------+-----+---------+----------------+

  7. | Field | Type | Null | Key | Default | Extra |

  8. +-------+------------------+------+-----+---------+----------------+

  9. | id | int(10) unsigned | NO | PRI | NULL | auto_increment |

  10. | score | int(10) | YES | | NULL | |

  11. | class | int(10) | NO | | NULL | |

  12. | name | varchar(10) | NO | | NULL | |

  13. +-------+------------------+------+-----+---------+----------------+

  14. 4 rows in set (0.00 sec)

  15.  
  16. mysql> select * from student;

  17. +----+-------+-------+-------+

  18. | id | score | class | name |

  19. +----+-------+-------+-------+

  20. | 1 | 100 | 1 | user1 |

  21. | 2 | 45 | 1 | user |

  22. | 3 | 80 | 1 | user1 |

  23. | 4 | 62 | 1 | user |

  24. | 5 | 100 | 1 | user1 |

  25. | 6 | 108 | 2 | user |

  26. | 7 | 90 | 2 | user1 |

  27. | 8 | 24 | 2 | user |

  28. +----+-------+-------+-------+

  29. 8 rows in set (0.00 sec)


这是放到第一位,如果要把name放到id之后呢?这样写就可以了(first 换成 after即可):

 

 
  1. mysql> alter table student modify name varchar(10) after id;

  2. Query OK, 8 rows affected (0.03 sec)

  3. Records: 8 Duplicates: 0 Warnings: 0

  4.  
  5. mysql> select * from student;

  6. +----+-------+-------+-------+

  7. | id | name | score | class |

  8. +----+-------+-------+-------+

  9. | 1 | user1 | 100 | 1 |

  10. | 2 | user | 45 | 1 |

  11. | 3 | user1 | 80 | 1 |

  12. | 4 | user | 62 | 1 |

  13. | 5 | user1 | 100 | 1 |

  14. | 6 | user | 108 | 2 |

  15. | 7 | user1 | 90 | 2 |

  16. | 8 | user | 24 | 2 |

  17. +----+-------+-------+-------+

  18. 8 rows in set (0.00 sec)


完美解决问题!

mysql命令更改表结构:添加、删除、修改字段、调整字段顺序

原文出处:http://www.phpernote.com/mysql/1120.html

 

 

常用的通过mysql命令来更改表结构的一些sql语句,包括添加、删除、修改字段、调整字段顺序。

添加字段:

alter table `user_movement_log` Add column GatewayId int not null default 0 AFTER `Regionid`; (在哪个字段后面添加)

删除字段:

alter table `user_movement_log` drop column Gatewayid;

调整字段顺序:

ALTER TABLE `user_movement_log` CHANGE `GatewayId` `GatewayId` int not null default 0 AFTER RegionID;

//主键

alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);

//增加一个新列

alter table t2 add d timestamp;
alter table infos add ex tinyint not null default '0';

//删除列

alter table t2 drop column c;

//重命名列

alter table t1 change a b integer;

//改变列的类型

alter table t1 change b b bigint not null;
alter table infos change list list tinyint not null default '0';

//重命名表

alter table t1 rename t2;

加索引

mysql> alter table tablename change depno depno int(5) not null;
mysql> alter table tablename add index 索引名 (字段名1[,字段名2 …]);
mysql> alter table tablename add index emp_name (name);

加主关键字的索引

mysql> alter table tablename add primary key(id);

加唯一限制条件的索引

mysql> alter table tablename add unique emp_name2(cardnumber);

删除某个索引

mysql>alter table tablename drop index emp_name;

修改表:

增加字段:

mysql> ALTER TABLE table_name ADD field_name field_type;

修改原字段名称及类型:

mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

删除字段:

mysql> ALTER TABLE table_name DROP field_name;

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值