pta-sql补题(2)

目录​​​​​​​

插入insert:

两种语法形式:

插入记录(一)

表结构:

表样例

输出

插入记录(二)

表结构:

表样例

结果判定:

更新update

语法

更新记录(一)

表结构:

表样例

结果判定:

更新记录(2)

表结构:

输出样例:


插入insert:

使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。

两种语法形式:

 INSERT…VALUES 语句

INSERT INTO <表名> [ <列名1> , … <列名n> ]
VALUES [(值1)… , (值n) ];

 INSERT…SET 语句

INSERT INTO <表名>
SET <列名1> = <值1>,
    <列名2> = <值2>,
        …

插入记录(一)

牛客后台会记录每个用户的试卷作答记录到exam_record表,现在有两个用户的作答记录详情如下:

用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分;
用户1002在2021年9月4日上午7点1分2秒开始作答试卷9002,并在10分钟后退出了平台。
试卷作答记录表exam_record中,表已建好,其结构如下,请用一条语句将这两条记录插入表中。

表结构:

drop table if EXISTS exam_record;
CREATE TABLE IF NOT EXISTS exam_record (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int NOT NULL COMMENT '用户ID',
exam_id int NOT NULL COMMENT '试卷ID',
start_time datetime NOT NULL COMMENT '开始时间',
submit_time datetime COMMENT '提交时间',
score tinyint COMMENT '得分'
)CHARACTER SET utf8 COLLATE utf8_general_ci;
TRUNCATE exam_record;

表样例

exam_record表:

Field Type Null Key Extra Default Comment
id int(11) NO PRI auto_increment (NULL) 自增ID
uid int(11) NO (NULL) 用户ID
exam_id int(11) NO (NULL) 试卷ID
start_time datetime NO (NULL) 开始时间
submit_time datetime YES (NULL) 提交时间
score tinyint(4) YES (NULL) 得分

输出

该题最后会通过执行SELECT uid, exam_id, start_time, submit_time, score FROM exam_record;来对比结果

Insert into exam_record (id,uid, exam_id, start_time, submit_time, score) 
values 
(null,1001, 9001, '2021-09-01 22:11:12', '2021-09-01 23:01:12', 90),
(null,1002, 9002, '2021-09-04 07:01:02', NULL, NULL);

插入记录(二)

现有一张试卷作答记录表exam_record,结构如下表,其中包含多年来的用户作答试卷记录,由于数据越来越多,维护难度越来越大,需要对数据表内容做精简,历史数据做备份。

表结构:

表exam_record:


drop table if EXISTS exam_record;
CREATE TABLE IF NOT EXISTS exam_record (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int NOT NULL COMMENT '用户ID',
exam_id int NOT NULL COMMENT '试卷ID',
start_time datetime NOT NULL COMMENT '开始时间',
submit_time datetime COMMENT '提交时间',
score tinyint COMMENT '得分'
)CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE IF NOT EXISTS exam_record_before_2021 (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int NOT NULL COMMENT '用户ID',
exam_id int NOT NULL COMMENT '试卷ID',
start_time datetime NOT NULL COMMENT '开始时间',
submit_time datetime COMMENT '提交时间',
score tinyint COMMENT '得分'
)CHARACTER SET utf8 COLLATE utf8_general_ci;
TRUNCATE exam_record;
TRUNCATE exam_record_before_2021;

表样例

exam_record表:

Field Type Null Key Extra Default Comment
id int(11) NO PRI auto_increment (NULL) 自增ID
uid int(11) NO (NULL) 用户ID
exam_id int(11) NO (NULL) 试卷ID
start_time datetime NO (NULL) 开始时间
submit_time datetime YES (NULL) 提交时间
score tinyint(4) YES (NULL) 得分

结果判定:

后台会通过执行"SELECT * FROM exam_record_before_2021;"语句来对比结果

insert into exam_record_before_2021
select null,uid, exam_id, start_time, submit_time, score
from exam_record 
where year(submit_time) < '2021';

更新update

UPDATE:更新表中的数据。和INSERT的第二种用法相似。必须提供表名及SET表达式,在后面可以加WHERE以限制更新范围。

语法

UPDATE 表名称 
SET 列名称 = 新值 
WHERE 列名称 = 某值

更新记录(一)

现有一张试卷信息表examination_info,
请把examination_info表中tag为PYTHON的tag字段全部修改为Python。

表结构:

请在这里写定义表结构的SQL语句。例如:


drop table if EXISTS examination_info;
CREATE TABLE IF NOT EXISTS examination_info (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
exam_id int UNIQUE NOT NULL COMMENT '试卷ID',
tag varchar(32) COMMENT '类别标签',
difficulty varchar(8) COMMENT '难度',
duration int NOT NULL COMMENT '时长',
release_time datetime COMMENT '发布时间'
)CHARACTER SET utf8 COLLATE utf8_bin;
TRUNCATE examination_info;

表样例

请在这里给出上述表结构对应的表样例。例如

examination_info表:

Field Type Null Key Extra Default Comment
id int(11) NO PRI auto_increment (NULL) 自增ID
exam_id int(11) NO UNI (NULL) 试卷ID
tag varchar(32) YES (NULL) 类别标签
difficulty varchar(8) YES (NULL) 难度
duration int(11) NO (NULL) 时长
release_time datetime YES (NULL) 发布时间

结果判定:

后台会通过执行'SELECT exam_id,tag,difficulty,duration,release_time FROM examination_info;'语句来对比结果

update examination_info
set tag="Python"
where tag="PYTHON"

更新记录(2)

现有一张试卷作答记录表exam_record,其中包含多年来的用户作答试卷记录,结构如下表:
作答记录表exam_record:

submit_time为 完成时间
请把exam_record表中2021年9月1日之前开始作答的未完成记录全部改为被动完成,即:将完成时间改为'2099-01-01 00:00:00',分数改为0。

表结构:

请在这里写定义表结构的SQL语句。例如:

输出样例:

uid exam_id start_time submit_time score
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 2099-01-01 00:00:00 0
1002 9002 2021-09-05 19:01:01 2021-09-05 19:40:01 89
1003 9001 2021-09-02 12:01:01
1003 9002 2021-09-01 12:01:01
update exam_record
set submit_time = "2099-01-01 00:00:00",score=0
where start_time <"2021-09-01"
and score is null 

猜你喜欢

转载自blog.csdn.net/qq_62799214/article/details/127835002