sql做题第十五天(更新记录篇)

简介: 第三十七例:更新记录(2)• 题目地址:更新记录(二)牛客题霸牛客网 (nowcoder.com)• 初始化数据:

第三十七例:更新记录(1)

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)

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]


相关文章
|
SQL NoSQL
SQL 更新视图
SQL 更新视图
107 2
|
SQL 大数据 开发者
电商项目之商家用户交互记录宽表 SQL 实现|学习笔记
快速学习电商项目之商家用户交互记录宽表 SQL 实现
113 0
电商项目之商家用户交互记录宽表 SQL 实现|学习笔记
|
SQL 关系型数据库 MySQL
一条SQL更新语句的执行过程
一条SQL更新语句的执行过程
|
SQL 索引
sql做题第十六天(删除记录篇)
• 扩展:在 delete 后加 limit 是个好习惯。原因如下: • 1,delete from 是全表查找的,如果加上limit 时,删除指定的条数后,就会return了。效率提高不少。 • 2,降低写错 SQL 的代价,即使删错了,例如limit 100,也就删除了100条数据,也能通过binlog找回数据 • 3,避免长事务,delete执行时,涉及的行是会加锁,如果删除的数据量大,那业务功能都要不能用了 • 4,加锁都是基于索引的,如果查询字段没有加索引,那会扫描到主键索引上,那么就算查询出来的只有一条记录,也会锁表 • 5,delete数据量大时,容易占用cpu,导致越删除越慢
|
SQL 算法 索引
sql做题第十四天(插入记录)
• 题目描述:牛客后台会记录每个用户的试卷作答记录到exam_record表,现在有两个用户的作答记录详情如下: • 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分; • 用户1002在2021年9月4日上午7点1分2秒开始作答试卷9002,并在10分钟后退出了平台。 • 试卷作答记录表exam_record中,表已建好,其结构如下,请用一条语句将这两条记录插入表中。
|
SQL 移动开发
|
SQL Serverless