更改MySQL表中的值会产生语法错误

时间:2019-03-23 01:07:14

标签: mysql

很抱歉,如果这是一个愚蠢的问题,但这是我第一次使用MySQL,但似乎无法使它正常工作

我有这张桌子:

+------------------------------+------------------+------+-----+---------+----------------+
| Field                        | Type             | Null | Key | Default | Extra          |
+------------------------------+------------------+------+-----+---------+----------------+
| id                           | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| policy_name                  | varchar(255)     | NO   | UNI |         |                |
| virus_lover                  | char(1)          | YES  |     | NULL    |                |
| spam_lover                   | char(1)          | YES  |     | NULL    |                |
| unchecked_lover              | char(1)          | YES  |     | NULL    |                |
| banned_files_lover           | char(1)          | YES  |     | NULL    |                |
| bad_header_lover             | char(1)          | YES  |     | NULL    |                |
| bypass_virus_checks          | char(1)          | YES  |     | NULL    |                |

,我想将virus_lover更改为NO

我尝试使用

update policy set Null='N' where Field='virus_lover';

但这给了我语法错误响应。我已经在线检查过,似乎每个人都在建议这个完全相同的命令,似乎对我不起作用。

任何帮助将不胜感激。

MySQL Ver 14.14 Distrib 5.7.25

2 个答案:

答案 0 :(得分:3)

修改列属性的正确方法是使用ALTER TABLE命令:

ALTER TABLE policy MODIFY virus_lover CHAR(1) NOT NULL

Demo on dbfiddle

答案 1 :(得分:0)

由于NULL是保留关键字,并且在表中被用作列名,因此必须用反引号或括号将其引起来:

update policy set `Null`='N' where Field='virus_lover';

update policy set [Null]='N' where Field='virus_lover';

将列名更改为非保留关键字而不是NULL也会使事情变得容易。