插入记录(一)的两个小细节

插入记录(一)

http://www.nowcoder.com/practice/5d2a42bfaa134479afb9fffd9eee970c

这题很简单,主要考察的是SQL插入多行数据的方法,为了方便理解后面用中文进行填写(不是很规范),即:

  • INSERT INTO tab_name (col_name) VALUES (要插入的数据,这里是第一行数据), (要插入的数据,这里是第二行数据)...(要插入的数据,第n行数据);

但是我们要注意题目中的两个小细节:

  • 第一个就是插入的表格存在自增主键alt 这里的id是自增主键(PRIMARY KEY),这就意味着不需要你自己手动填入,它会跟随表格行数进行自己增加(比如这样增加id值👉1,2,3...n)。
    所以我们在插入数据的时候,方法之一: 可以指定插入的列名, 这样就不用填写id这一列的数据,让他自增。具体插入代码如下:
INSERT INTO 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 07:01:02', NULL, NULL);

方法之二:把id的值设置为NULL或0,这样MySQL会自己处理这个自增的id列。 具体代码如下:

INSERT INTO exam_record 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);

其实还有一个方法三:直接填入id值,不过仅针对插入数据不多的时候使用,大家了解一下:

INSERT INTO exam_record VALUES
(1, 1001, 9001, '2021-09-01 22:11:12', '2021-09-01 23:01:12', 90),
(2, 1002, 9002, '2021-09-04 07:01:02', NULL, NULL);
  • 第二个细节就是这句“在10分钟后退出了平台”,以及表格创建的这里的YES👇: alt

这两个地方都表明了用户1002是没有做完试卷就结束了考试。 所以submit_time 和score这两列都填NULL即可。

MySQL题解 文章被收录于专栏

本专栏主要对各种经典的MySQL题进行解说,希望用最易懂简洁的语言帮助大家通关MySQL。

全部评论
好赞!!
1 回复 分享
发布于 2022-07-19 10:44
因为没有提交,所以没分,如果提交的话,就算全错都有零分。
1 回复 分享
发布于 2022-11-02 19:46 广东
为啥用户ID插入的是1001,1002?怎么确定是这两个值?
点赞 回复 分享
发布于 2023-06-12 23:13 浙江
这题结束时间如何让系统自己算,而不是自己算好了再打上去,比如是否存在语法start_time+50min之类的
点赞 回复 分享
发布于 2022-11-02 19:46 广东
第二条数据10分钟之后交卷,我给时间写上去我感觉逻辑也是说的通的,为啥SQL写的时候不成功
点赞 回复 分享
发布于 2022-09-27 20:49 上海
好像懂了又好像没懂
点赞 回复 分享
发布于 2022-03-14 10:31

相关推荐

不愿透露姓名的神秘牛友
07-15 17:46
暑期就挂了,秋招还有机会吗
大聪明777:研发提前批,14号刚开的,官网上面的配图上有写。提前批没过的话,秋招还可以投,不过前面的笔试/面试记录会被保留,供秋招参考
26届校招投递进展
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
评论
284
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务