
4.2 更新数据记录
更新数据记录是数据操作中常见的操作,可以更新表中已经存在数据记录中的值。在MySQL中可以通过UPDATE语句来实现更新数据记录,该SQL语句可以通过如下几种方式使用:更新特定数据记录、更新所有数据记录、更新JSON结构的数据记录。
4.2.1 更新特定数据记录
在MySQL中更新特定数据记录可通过SQL语句UPDATE来实现,其语法形式如下:

在上述语句中,参数tablename表示所要更新数据记录的表名,参数field表示表中所要更新数值的字段名字,参数valuen表示更新后的数值,参数CONDITION指定更新满足条件的特定数据记录。
【示例4-4】执行SQL语句UPDATE,在数据库school中的班级表t_class中使名称(字段cname)为“class_1”的地址(字段loc)由“loc_1”更新成“loc_11”。具体步骤如下:
执行SQL语句UPDATE,更新数据记录,再使用SELECT语句查询t_class表的数据记录,具体SQL语句如下,执行结果如图4-9、图4-10所示。
UPDATE t_class SET loc=’loc_11’ WHERE cname=’class_1’; SELECT * FROM t_class;

图4-9 更新数据记录

图4-10 查询数据记录
图4-10所示的执行结果显示,在表t_class中,cname为“class_1”的loc已经更新为“loc_11”。
4.2.2 更新所有数据记录
在MySQL中更新特定数据记录可通过SQL语句UPDATE来实现,其语法形式如下:
UPDATE tablename SET field1=value1,field2=value2,field3=value3 WHERE CONDITION;
在上述语句中,参数tablename表示所要更新数据记录的表名,参数field表示表中所要更新数值的字段名字,参数valuen表示更新后的数值,参数CONDITION表示满足表tablename中的所有数据记录,或不使用关键字WHERE语句。
4.2.3 更新JSON结构的数据记录
在MySQL中可通过UPDATE语句和JSON函数更新JSON数据记录,常用的函数有JSON_ARRAY_APPEND、JSON_ARRAY_INSERT、JSON_INSERT、JSON_MERGE、JSON_MERGE_PATCH、JSON_MERGE_PRESERVE、JSON_REMOVE、JSON_REPLACE、JSON_SET等。以JSON_REPLACE为例,更新JSON数据的语法为:
UPDATE tablename SET colname = JSON_REPLACE(colname,path,val) WHERE CONDITION;
在上述语句中,tablename为要更新的表名;colname为JSON类型的字段;path为路径,通常为美元符号加key的形式,即“$.key”;val为要替换的新值;WHERE为条件语句。
【示例4-5】执行SQL语句UPDATE,将t_json中id为1对应的记录性别修改为“女”。具体步骤如下:
执行SQL语句SELECT查询表的数据记录,然后执行UPDATE语句将性别修改为女,再使用SELECT语句来查询t_json表,具体SQL语句如下,执行结果如图4-11、图4-12所示。
update t_json set json_col=JSON_REPLACE(json_col,'$.sex','女') Where id =1; SELECT * from t_json;

图4-11 向数据表插入JSON记录

图4-12 查询插入数据