mysql 两种修改表列名的方式 为什么我用rename column的方式修改会报错

时间:2021-08-04 07:17:01
表结构很简单
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

我之所以想用第一种方式是因为第一种方式简单些 不需要重写一次列的属性和约束 
我不知道为什么第一种方法不行  

8 个解决方案

#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: 0

mysql>

#3


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

#4


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

#5


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

#6


古人说的,尽信书不如无书。

#7


引用 6 楼 zuoxingyu 的回复:
古人说的,尽信书不如无书。

#8


书的错误太正常了,尤其是计算机的中文书籍。

#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: 0

mysql>

#2


#3


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

#4


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

#5


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

#6


古人说的,尽信书不如无书。

#7


引用 6 楼 zuoxingyu 的回复:
古人说的,尽信书不如无书。

#8


书的错误太正常了,尤其是计算机的中文书籍。