sql做题第十四天(插入记录)

简介: • 题目描述:牛客后台会记录每个用户的试卷作答记录到exam_record表,现在有两个用户的作答记录详情如下:• 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分;• 用户1002在2021年9月4日上午7点1分2秒开始作答试卷9002,并在10分钟后退出了平台。• 试卷作答记录表exam_record中,表已建好,其结构如下,请用一条语句将这两条记录插入表中。

第三十四例:插入记录(1)

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;

TRUNCATE exam_record;

  • 题目描述:牛客后台会记录每个用户的试卷作答记录到exam_record表,现在有两个用户的作答记录详情如下:
  • 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分;
  • 用户1002在2021年9月4日上午7点1分2秒开始作答试卷9002,并在10分钟后退出了平台。
  • 试卷作答记录表exam_record中,表已建好,其结构如下,请用一条语句将这两条记录插入表中。
  • 方法1:指定表的列名,提供插入的值,支持多行

insertinto table_name(column1,column2,...) values(value1,value2,...),(value3,value4,...);

  • 示例

insertinto

exam_record(uid,exam_id,start_time,submit_time,score)

values

(1001,9001,'2021-09-01 22:11:12','2021-09-01 23:01:12',90),

(1002,9002,'2021-09-04 7:1:2',null,null);

  • 方法2:不需要指定表的列名,只需要提供要插入的值,支持插入一行

insertinto table_name value(values1,value2,...);

  • 示例

insertinto exam_record value(null,1001,9001,'2021-09-01 22:11:12','2021-09-01 23:01:12',90);

  • 方法3:不需要指定表的列名,只需要提供要插入的值,支持插入多行

insertinto table_name values(value1,value2,value3,...),(value4,value5,...);

  • 示例

insertinto exam_score values(null,1001,9001,'2021-09-01 22:11:12','2021-09-01 21:01:12',90),(null.1002,9002,'2021-09-04 7:01:02',null,null);

  • 方法4:要指定表的列名,提供要插入的值,支持插入一行

insertinto table_name(column1,column2,...)value(value1,value2,value3,...);

  • 示例

insertinto exam_record(uid,exam_id,start_time,submit_time,score) value(1001,9001,'2021-09-01 22:11:12','2021-09-01 23:01:12',90);

第三十五例:插入记录(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;

CREATETABLE IF NOT EXISTS exam_record_before_2021 (

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;

TRUNCATE exam_record;

TRUNCATE exam_record_before_2021;

INSERTINTO exam_record(uid,exam_id,start_time,submit_time,score) VALUES

(1001, 9001, '2020-01-01 09:00:01', null, null),

(1001, 9002, '2020-01-02 09:01:01', '2020-01-02 09:21:01', 70),

(1001, 9002, '2020-09-02 09:00:01', null, null),

(1002, 9001, '2021-05-02 10:01:01', '2021-05-02 10:30:01', 81),

(1002, 9002, '2021-09-02 12:01:01', null, null);

  • 题目描述:我们已经创建了一张新表exam_record_before_2021用来备份2021年之前的试题作答记录,结构和exam_record表一致,请将2021年之前的已完成了的试题作答纪录导入到该表。后台会通过执行"SELECT * FROM exam_record_before_2021;"语句来对比结果
  • 方法1:

insertinto table_name_new(column1,column2,column3,...) selectcolumn1,column2,column3,...from table_name where 条件

  • 示例

insertinto exam_record_before_2021(uid,exam_id,start_time,submit_time,score)

select uid,exam_id,start_time,submit_time,score

from exam_record

whereyear(submit_time)<2021;

第三十六例:插入记录(3)

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, '算法', 'easy', 60, '2020-01-01 10:00:00'),

(9003, 'SQL', 'medium', 60, '2020-01-02 10:00:00'),

(9004, '算法', 'hard', 80, '2020-01-01 10:00:00');

  • 题目描述:现在有一套ID为9003的高难度SQL试卷,时长为一个半小时,请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info(其表结构如下图),不管该ID试卷是否存在,都要插入成功,请尝试插入它。
  • 方法1:就是使用replace into插入数据这个方式与insert into很相同,但不同的是:1.如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。2否则,直接插入新的数据。这将会使得表中出现重复的数据。

REPLACE INTO table_name_new(column1,column2,...) VALUES (value1,value2,...);

  • 示例

replace into examination_info(exam_id,tag,difficulty,duration,release_time)

values(9003, 'SQL', 'hard', 90, '2021-01-01 00:00:00');


相关文章
|
SQL 关系型数据库 MySQL
解决sql插入字符串中包含‘单引号问题
解决sql插入字符串中包含‘单引号问题
933 2
解决sql插入字符串中包含‘单引号问题
|
SQL 大数据 开发者
电商项目之商家用户交互记录宽表 SQL 实现|学习笔记
快速学习电商项目之商家用户交互记录宽表 SQL 实现
113 0
电商项目之商家用户交互记录宽表 SQL 实现|学习笔记
|
SQL 索引
sql做题第十六天(删除记录篇)
• 扩展:在 delete 后加 limit 是个好习惯。原因如下: • 1,delete from 是全表查找的,如果加上limit 时,删除指定的条数后,就会return了。效率提高不少。 • 2,降低写错 SQL 的代价,即使删错了,例如limit 100,也就删除了100条数据,也能通过binlog找回数据 • 3,避免长事务,delete执行时,涉及的行是会加锁,如果删除的数据量大,那业务功能都要不能用了 • 4,加锁都是基于索引的,如果查询字段没有加索引,那会扫描到主键索引上,那么就算查询出来的只有一条记录,也会锁表 • 5,delete数据量大时,容易占用cpu,导致越删除越慢
|
SQL 关系型数据库 MySQL
sql做题第十五天(更新记录篇)
第三十七例:更新记录(2) • 题目地址:更新记录(二)牛客题霸牛客网 (nowcoder.com) • 初始化数据:
|
SQL 移动开发
|
27天前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
45 13
|
24天前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
22天前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
34 6