《剑指数据库:MySQL玄阶查术秘典·中卷》
目录
一、前言
二、正文
1.Update
1.1 将孙悟空同学的数学成绩变更为 80 分
1.2 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
1.3 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
1.4 将所有同学的语文成绩更新为原来的 2 倍
三、结语
一、前言
本文将继续为大家带来MySQL基本查询中有关改的操作,希望小伙伴们能够从中有所收获!!!
二、正文
1.Update
语法:
UPDATE table_name SET column = expr [, column = expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]
对查询到的结果进行列值更新
案例:
1.1 将孙悟空同学的数学成绩变更为 80 分
-- 更新值为具体值 -- 查看原数据 SELECT name, math FROM exam_result WHERE name = \'孙悟空\'; +-----------+--------+ | name | math | +-----------+--------+ | 孙悟空 | 78 | +-----------+--------+ 1 row in set (0.00 sec) -- 数据更新 UPDATE exam_result SET math = 80 WHERE name = \'孙悟空\'; Query OK, 1 row affected (0.04 sec)Rows matched: 1 Changed: 1 Warnings: 0 -- 查看更新后数据 SELECT name, math FROM exam_result WHERE name = \'孙悟空\'; +-----------+--------+ | name | math | +-----------+--------+ | 孙悟空 | 80 | +-----------+--------+ 1 row in set (0.00 sec)
1.2 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
-- 一次更新多个列 -- 查看原数据SELECT name, math, chinese FROM exam_result WHERE name = \'曹孟德\';+-----------+--------+-------+e | math | chinese | +-----------+--------+-------+ | 曹孟德 | 84 | 82 | +-----------+--------+-------+ 1 row in set (0.00 sec) -- 数据更新 UPDATE exam_result SET math = 60, chinese = 70 WHERE name = \'曹孟德\'; Query OK, 1 row affected (0.14 sec) Rows matched: 1 Changed: 1 Warnings: 0 -- 查看更新后数据 SELECT name, math, chinese FROM exam_result WHERE name = \'曹孟德\'; +-----------+--------+-------+ | name | math | chinese | +-----------+--------+-------+ | 曹孟德 | 60 | 70 | +-----------+--------+-------+ 1 row in set (0.00 sec)
1.3 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
-- 更新值为原值基础上变更 -- 查看原数据 -- 别名可以在ORDER BY中使用 SELECT name, math, chinese + math + english 总分 FROM exam_result ORDER BY 总分 LIMIT 3; +-----------+--------+--------+ | name | math | 总分 | +-----------+--------+--------+ | 宋公明 | 65 | 170 | | 刘玄德 | 85 | 185 | | 曹孟德 | 60 | 197 | +-----------+--------+--------+ 3 rows in set (0.00 sec) -- 数据更新,不支持 math += 30 这种语法 UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT 3; -- 查看更新后数据 -- 思考:这里还可以按总分升序排序取前 3 个么? SELECT name, math, chinese + math + english 总分 FROM exam_result WHERE name IN (\'宋公明\', \'刘玄德\', \'曹孟德\'); +-----------+--------+--------+ | name |math | 总分| +-----------+--------+--------+ | 曹孟德 | 90 | 227 | | 刘玄德 | 115 | 215 | | 宋公明 | 95 | 200 | +-----------+--------+--------+ 3 rows in set (0.00 sec) -- 按总成绩排序后查询结果 SELECT name, math, chinese + math + english 总分 FROM exam_result ORDER BY 总分 LIMIT 3; +-----------+--------+--------+ | name |math | 总分 | +-----------+--------+--------+ | 宋公明 | 95 | 200 | | 刘玄德 | 115 | 215 | | 唐三藏 | 98 | 221 | +-----------+--------+--------+ 3 rows in set (0.00 sec)
1.4 将所有同学的语文成绩更新为原来的 2 倍
注意:更新全表的语句慎用!
-- 没有 WHERE 子句,则更新全表 -- 查看原数据 SELECT * FROM exam_result; +----+-----------+-------+--------+--------+ | id | name | chinese | math | english | +----+-----------+-------+--------+--------+ | 1 | 唐三藏 | 67 | 98 | 56 | | 2 | 孙悟空 | 87 | 80 | 77 | | 3 | 猪悟能 | 88 | 98 | 90 | | 4 | 曹孟德 | 70 | 90 | 67 | | 5 | 刘玄德 | 55 | 115 | 45 | | 6 | 孙权 | 70 | 73 | 78 | | 7 | 宋公明 | 75 | 95 | 30 | +----+-----------+-------+--------+--------+ 7 rows in set (0.00 sec) -- 数据更新 UPDATE exam_result SET chinese = chinese * 2; Query OK, 7 rows affected (0.00 sec) Rows matched: 7 Changed: 7 Warnings: 0 -- 查看更新后数据 SELECT * FROM exam_result; +----+-----------+-------+--------+--------+ | id | name | chinese | math | english | +----+-----------+-------+--------+--------+ | 1 | 唐三藏 | 134 | 98 | 56 | | 2 | 孙悟空 | 174 | 80 | 77 | | 3 | 猪悟能 | 176 | 98 | 90 | | 4 | 曹孟德 | 140 | 90 | 67 | | 5 | 刘玄德 | 110 | 115 | 45 | | 6 | 孙权 | 140 | 73 | 78 | | 7 | 宋公明 | 150 | 95 | 30 | +----+-----------+-------+--------+--------+ 7 rows in set (0.00 sec)
三、结语
到此为止,本文关于MySQL基本查询中的改的内容到此结束了,如有不足之处,欢迎小伙伴们指出呀!
关注我 _麦麦_分享更多干货:_麦麦_-CSDN博客
大家的「关注❤️ + 点赞👍 + 收藏⭐」就是我创作的最大动力!谢谢大家的支持,我们下期见!