回城传送–》《32天SQL筑基》
文章目录
- 三、扩展
- 四、参考
零、前言
今天是学习 SQL 打卡的第 8 天,每天我会提供一篇文章供群成员阅读( 不需要订阅付钱 )。
希望大家先自己思考,如果实在没有想法,再看下面的解题思路,自己再实现一遍。在小虚竹JAVA社区 中对应的 【打卡贴】打卡,今天的任务就算完成了,养成每天学习打卡的好习惯。
虚竹哥会组织大家一起学习同一篇文章,所以有什么问题都可以在群里问,群里的小伙伴可以迅速地帮到你,一个人可以走得很快,一群人可以走得很远,有一起学习交流的战友,是多么幸运的事情。
我的学习策略很简单,题海策略+ 费曼学习法。如果能把这些题都认认真真自己实现一遍,那意味着 SQL 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。
今天的学习内容是:SQL进阶-更新记录
一、练习题目
题目链接 | 难度 |
★★☆☆☆ | |
★★★☆☆ |
二、SQL思路
更新记录:SQL113 更新记录(一)
初始化数据
解法
要求处理:
- 请把examination_info表中tag为PYTHON的tag字段全部修改为Python。
分析:
- 更新的SQL语法是:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
套用语法
更新记录:SQL114 更新记录(二)
初始化数据
解法
要求处理:
- 请把exam_record表中2021年9月1日之前开始作答的未完成记录全部改为被动完成,即:将完成时间改为’2099-01-01 00:00:00’,分数改为0。
分析:
- 更新的SQL语法是:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
- exam_record表中2021年9月1日之前开始作答的未完成记录,就是没有提交时间的记录,意味着submit_time字段的值是为null的
- 要把完成时间改为’2099-01-01 00:00:00’,分数改为0
套用语法
三、扩展
1、更新数据表中的所有记录
更新数据表中的所有记录,只需要将UPDATE语句的WHERE条件省略即可
2、更新表中特定的数据行
MySQL支持更新表中特定的数据行,此时,需要添加WHERE条件对更新的数据记录进行限制。
更新记录:SQL113 更新记录(一)就是这样的
3、更新某个范围内的数据
MySQL支持更新某个范围内的数据,可以通过BETWEEN…AND语句或者“>”“>=”“<”“<=”“<>”“!=”等运算符,或者LIKE、IN、NOT IN等语句实现。
更新记录:SQL114 更新记录(二)就是这样的
4、更新符合正则表达式的数据
MySQL中匹配正则表达式需要使用关键字REGEXP,在REGEXP关键字后面跟上正则表达式的规则即可。
例如:examination_info表有如下的数据
要对difficulty字段的值是以sy结尾的记录数据,更新duration值为61
刚好说到SQL的正则表达式,这里简单介绍几句
开始支持的版本:3.22.21 ,所以可放心使用
SQL正则表达式提供了四种函数:
- REGEXP_LIKE (匹配)
- REGEXP_INSTR (包含)
- REGEXP_REPLACE (替换)
- REGEXP_SUBSTR (提取)
正则表达式常用字
常用的正则表达式:
我是虚竹哥,我们明天见~