表结构很简单
CREATE TABLE `b` (
  `b_id` int(3) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |我用下面两段代码修改 b_id列的名称
ALTER TABLE b RENAME column b_id to id ;alter table b change id b_id int(3);
执行第一段代码报如下错误
Database changed
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'colum
n b_id to id' at line 1我之所以想用第一种方式是因为第一种方式简单些 不需要重写一次列的属性和约束 
我不知道为什么第一种方法不行  

解决方案 »

  1.   

    mysql> CREATE TABLE `b` (
        ->  `b_id` int(3) DEFAULT NULL,
        ->  `address` varchar(255) DEFAULT NULL
        -> ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 ;
    Query OK, 0 rows affected (0.12 sec)mysql> alter table b change b_id id int default null;
    Query OK, 0 rows affected (0.21 sec)
    Records: 0  Duplicates: 0  Warnings: 0mysql>
      

  2.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  3.   

    更改列名用change,
    RENAME是更改表名
      

  4.   

    rename只能对应表名的修改
    change才是修改列名的
    还有一个modify是修改列属性的
      

  5.   

    太感谢你们的回答了  原来是我的书上写错了  我的mysql教程上说rename column是用来改变列名的