当前位置:   article > 正文

pta-sql补题(2)

pta-sql补题(2)

目录​​​​​​​

插入insert:

两种语法形式:

插入记录(一)

表结构:

表样例

输出

插入记录(二)

表结构:

表样例

结果判定:

更新update

语法

更新记录(一)

表结构:

表样例

结果判定:

更新记录(2)

表结构:

输出样例:


插入insert:

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

两种语法形式:

 INSERT…VALUES 语句

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

 INSERT…SET 语句

  1. INSERT INTO <表名>
  2. SET <列名1> = <1>,
  3. <列名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中,表已建好,其结构如下,请用一条语句将这两条记录插入表中。

表结构:

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

表样例

exam_record表:

FieldTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增ID
uidint(11)NO(NULL)用户ID
exam_idint(11)NO(NULL)试卷ID
start_timedatetimeNO(NULL)开始时间
submit_timedatetimeYES(NULL)提交时间
scoretinyint(4)YES(NULL)得分

输出

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

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

插入记录(二)

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

表结构:

表exam_record:

  1. drop table if EXISTS exam_record;
  2. CREATE TABLE IF NOT EXISTS exam_record (
  3. id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
  4. uid int NOT NULL COMMENT '用户ID',
  5. exam_id int NOT NULL COMMENT '试卷ID',
  6. start_time datetime NOT NULL COMMENT '开始时间',
  7. submit_time datetime COMMENT '提交时间',
  8. score tinyint COMMENT '得分'
  9. )CHARACTER SET utf8 COLLATE utf8_general_ci;
  10. CREATE TABLE IF NOT EXISTS exam_record_before_2021 (
  11. id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
  12. uid int NOT NULL COMMENT '用户ID',
  13. exam_id int NOT NULL COMMENT '试卷ID',
  14. start_time datetime NOT NULL COMMENT '开始时间',
  15. submit_time datetime COMMENT '提交时间',
  16. score tinyint COMMENT '得分'
  17. )CHARACTER SET utf8 COLLATE utf8_general_ci;
  18. TRUNCATE exam_record;
  19. TRUNCATE exam_record_before_2021;

表样例

exam_record表:

FieldTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增ID
uidint(11)NO(NULL)用户ID
exam_idint(11)NO(NULL)试卷ID
start_timedatetimeNO(NULL)开始时间
submit_timedatetimeYES(NULL)提交时间
scoretinyint(4)YES(NULL)得分

结果判定:

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

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

更新update

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

语法

  1. UPDATE 表名称
  2. SET 列名称 = 新值
  3. WHERE 列名称 = 某值

更新记录(一)

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

表结构:

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

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

表样例

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

examination_info表:

FieldTypeNullKeyExtraDefaultComment
idint(11)NOPRIauto_increment(NULL)自增ID
exam_idint(11)NOUNI(NULL)试卷ID
tagvarchar(32)YES(NULL)类别标签
difficultyvarchar(8)YES(NULL)难度
durationint(11)NO(NULL)时长
release_timedatetimeYES(NULL)发布时间

结果判定:

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

  1. update examination_info
  2. set tag="Python"
  3. where tag="PYTHON"

更新记录(2)

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

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

表结构:

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

输出样例:

uidexam_idstart_timesubmit_timescore
100190012020-01-02 09:01:012020-01-02 09:21:0180
100190022021-09-01 09:01:012021-09-01 09:21:0190
100290012021-08-02 19:01:012099-01-01 00:00:000
100290022021-09-05 19:01:012021-09-05 19:40:0189
100390012021-09-02 12:01:01
100390022021-09-01 12:01:01
  1. update exam_record
  2. set submit_time = "2099-01-01 00:00:00",score=0
  3. where start_time <"2021-09-01"
  4. and score is null
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/955505
推荐阅读
相关标签
  

闽ICP备14008679号