MySQL ALTER / UPDATE表

时间:2013-11-21 23:51:09

标签: mysql

我有一个包含NULL值的表。此表仅用于存储数值,但第二列除外,其中包含每条记录的时间戳。该表已经使用了一段时间,因此在不同的列中积累了大量的NULL值。这是表格的描述:

+-----------------------------------------+-----------+------+-----+-------------------+----------------+
| Field                                   | Type      | Null | Key | Default           | Extra          |
+-----------------------------------------+-----------+------+-----+-------------------+----------------+
| results_id                              | int(11)   | NO   | PRI | NULL              | auto_increment |
| time_stamp                              | timestamp | NO   |     | CURRENT_TIMESTAMP |                |
| test_col                                | int(11)   | YES  |     | NULL              |                |
| test_col-total                          | int(11)   | YES  |     | NULL              |                |
| test_col_B                              | int(11)   | YES  |     | NULL              |                |
| test_col_B-total                        | int(11)   | YES  |     | NULL              |                |
+-----------------------------------------+-----------+------+-----+-------------------+----------------+

12行(0.01秒)

我现在想要更新/更改表格,以便:

  • 从现在开始,任何添加到表中的NULL值都会被处理并作为'0'值处理(真的很想知道这是否确实可行;如果是,那么我就不需要更改INSERT查询的加载在我的很多Python脚本中!)
  • 所有存储的NULL值都更新/更改为“0”。

我完全坚持这一点,因为一方面我希望我的SQL查询更新到表的新规则,而另一方面更改当前的NULL值,作为新手,这对我当前的理解来说更为中等。

到目前为止,我有:

ALTER TABLE `results` MODIFY `<col_name>` INT(11) NOT NULL;

我会为当前允许NULL值的每一列执行此操作。但是,我不知道如何将存储的NULL值更改为“0”。

任何意见都赞赏。

2 个答案:

答案 0 :(得分:2)

将NULL值更改为0 试试

UPDATE results SET `col_name` = 0 WHERE `col_name` IS NULL;


将列更改为NOT NULL并默认为0尝试

ALTER TABLE results MODIFY `col_name` INT(11) NOT NULL DEFAULT 0;


您必须按上述顺序执行此操作,我只是在 http://sqlfiddle.com/上进行了测试

答案 1 :(得分:0)

首先将值更改为0,它们为null:

UPDATE results SET col1 = 0 WHERE col1 IS NULL;
...

然后你可以添加一个0的默认值,只要你在插件上没有为该表提供任何值就会添加它

ALTER TABLE `results` MODIFY `<col_name>` INT(11) NOT NULL DEFAULT 0;