分享

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

 zhuqiaoxiaoxue 2017-12-20


创建了一个这样的数据表,想把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)  

完美解决问题!                     

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多