Bootstrap

《剑指数据库: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博客

         大家的「关注❤️ + 点赞👍 + 收藏⭐」就是我创作的最大动力!谢谢大家的支持,我们下期见!

;