第三十七例:更新记录(1)
- 题目地址:更新记录(一)牛客题霸牛客网 (nowcoder.com)
- 初始化数据:
droptable if EXISTS examination_info;
CREATETABLE IF NOT EXISTS examination_info (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
exam_id int UNIQUE NOTNULL COMMENT '试卷ID',
tag varchar(32) COMMENT '类别标签',
difficulty varchar(8) COMMENT '难度',
duration intNOTNULL COMMENT '时长',
release_time datetime COMMENT '发布时间'
)CHARACTER SET utf8 COLLATE utf8_bin;
TRUNCATE examination_info;
INSERTINTO examination_info(exam_id,tag,difficulty,duration,release_time) VALUES
(9001, 'SQL', 'hard', 60, '2020-01-01 10:00:00'),
(9002, 'python', 'easy', 60, '2020-01-01 10:00:00'),
(9003, 'Python', 'medium', 80, '2020-01-01 10:00:00'),
(9004, 'PYTHON', 'hard', 80, '2020-01-01 10:00:00');
- 题目描述:请把examination_info表中tag为PYTHON的tag字段全部修改为Python
- 方法1:
update 表名称 set 列名称 = 新值 where 列名称 = 某值
update
examination_info
set
tag='Python'
where
tag='PYTHON';
第三十七例:更新记录(2)
- 题目地址:更新记录(二)牛客题霸牛客网 (nowcoder.com)
- 初始化数据:
droptable if EXISTS exam_record;
CREATETABLE IF NOT EXISTS exam_record (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid intNOTNULL COMMENT '用户ID',
exam_id intNOTNULL COMMENT '试卷ID',
start_time datetimeNOTNULL COMMENT '开始时间',
submit_time datetime COMMENT '提交时间',
score tinyint COMMENT '得分'
)CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERTINTO exam_record(uid,exam_id,start_time,submit_time,score) VALUES
(1001, 9001, '2020-01-02 09:01:01', '2020-01-02 09:21:01', 80),
(1001, 9002, '2021-09-01 09:01:01', '2021-09-01 09:21:01', 90),
(1002, 9001, '2021-08-02 19:01:01', null, null),
(1002, 9002, '2021-09-05 19:01:01', '2021-09-05 19:40:01', 89),
(1003, 9001, '2021-09-02 12:01:01', null, null),
(1003, 9002, '2021-09-01 12:01:01', null, null);
- 题目描述:请把exam_record表中2021年9月1日之前开始作答的未完成记录全部改为被动完成,即:将完成时间改为'2099-01-01 00:00:00',分数改为0。
- 方法1:
update 表名称 set 列名称 = 新值 where 列名称 = 某值
update
exam_record
set
submit_time = '2099-01-01 00:00:00',score=0
where
start_time <= '2021-09-01'
and
submit_time isnull;
- 扩展了解:更新符合正则表达式的数据MySQL中匹配正则表达式需要使用关键字REGEXP,在REGEXP关键字后面跟上正则表达式的规则即可。正则表达式:
- REGEXP_LIKE (匹配)
- REGEXP_INSTR (包含)
- REGEXP_REPLACE (替换)
- REGEXP_SUBSTR (提取)
- 常用正则表达式
匹配由26个英文字母组成的字符串: ^[A-Za-z]+$
匹配由26个英文字母的大写组成的字符串: ^[A-Z]+$
匹配由26个英文字母的小写组成的字符串: ^[a-z]+$
匹配由数字和26个英文字母组成的字符串: ^[A-Za-z0-9]+$
匹配由数字和26个英文字母或者下划线组成的字符串: ^\w+$
匹配整数: ^-?[1-9]\d*$
匹配正整数: ^[1-9]\d*$
匹配负整数: ^-[1-9]\d*$
匹配非负整数: ^[1-9]\d*|0$
匹配非正整数: ^-[1-9]\d*|0$
电子邮箱: ^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$
URL : ^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
IP地址: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
HTML标签: ^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$
SQL语句: ^(select|drop|delete|create|update|insert).*$
邮政编码: ^[1-9]\d{5}(?!\d)$
Unicode编码中文字符串: ^[u4e00-u9fa5],{0,}$
空白行: \n[\s| ]*\r
首尾空格: (^\s*)|(\s*$)
双字节字符: [^\x00-\xff]