首页 > 试题广场 >

插入记录(一)

[编程题]插入记录(一)
  • 热度指数:111281 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

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

  • 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分;
  • 用户1002在2021年9月4日上午7点1分2秒开始作答试卷9002,并在10分钟后退出了平台。

试卷作答记录表exam_record中,表已建好,其结构如下,请用一条语句将这两条记录插入表中。

Filed 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;来对比结果
示例1

输入

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;

输出

1001|9001|2021-09-01 22:11:12|2021-09-01 23:01:12|90
1002|9002|2021-09-04 07:01:02|None|None

说明

如果是面向业务数据分析师方向的小伙伴,截至到112题都可以跳过。
因为用不到,不需要把精力时间,放到增删改上。

如果面试有人问相关问题,就说在公司,分析师是只有查的权限的。

嘻嘻,我也偷个懒,这些题我也不做了,讨论区直接抄作业,往后看了

发表于 2022-08-16 17:48:16 回复(3)
牛客的这套题挺不错,leetcode的题只有查,增删改基本没有,这边有。
发表于 2021-10-28 23:11:35 回复(3)

【场景】:插入新数据、批量

【分类】:插入数据、自增ID

分析思路

难点:

1.如何自动计算时间

insert into table(col1, col2,...,coln) values (value1, value2,...,valuen) 

不写字段名,需要填充自增ID

  • [使用]:0或者null或者default,自增id默认从1开始。
  • [使用]:或者没有在自增id中出现的(不重复)数(例如-1,-2),浮点型数据例如3.4,最后显示3,会进行四舍五入。即使定义了int类型,输入‘3’或者浮点型,都会强制转化为int类型,但是输入'a'会报错。具体细节可以看源码。

第一个字段id为什么可以写null?
示例中建表的时候写了id为自增id,而写0或者null或者default或者没有在自增id中出现的(不重复)数(例如-1,-2),系统都会自动填充id。如果建表的时候没有写明是自增id,那么主键一定是不能为空的,这个时候写null就会报错。

按字段名填充,可以不录入id

  • [注意]:字段要与值一一对应。

其余注意事项:

  • 字段名可以省略,默认所有列;

  • datetime插入要加引号。因为录入值的类型和字段的类型要一致或兼容;

  • 字段和值的个数必须一致。不能出现一行记录5个值,另外一行6个值的情况;

  • 如果写了字段,即使是空值也不能空着,用null代替;

  • 时间的计算:系统计算,最好不要人工计算。

扩展

前往查看:MySQL 插入语句

求解代码

方法一:

写字段名

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 + 人工算时间

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 + 系统算时间使用date_add

insert into 
    exam_record
values 
(default,1001,9001,'2021-09-01 22:11:12',date_add('2021-09-01 22:11:12',interval 50 minute) ,90),
(default,1002,9002,'2021-09-04 07:01:02',default ,default)

方法四:

不写字段名 + 自增id + 系统算时间使用 + interval 50 minute

insert into 
    exam_record 
values 
(0,1001,9001,'2021-9-1 22:11:12','2021-9-1 22:11:12' + interval 50 minute,90),
(0,1002,9002,'2021-9-4 7:1:2',null,null)
发表于 2022-12-08 22:49:35 回复(0)
不单独处理列的主键自增的处理方式:
第一列在增加数据的时候,可以写为0或者null,这样添加数据可以自增, 从而可以添加全部数据,而不用特意规定那几列添加数据。
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
)


发表于 2021-10-19 23:26:28 回复(1)
insert  into 表名(列名) VALUES (对应列数值)【,(对应列数值)】

注意:即使是Null也不能空着哦 
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) 如果把null的地方空着会报错的

发表于 2021-12-29 11:27:33 回复(0)
INSERT INTO exam_record(`uid`,`start_time`,`exam_id`,`submit_time`,`score`)
VALUES
(1001,'2021-9-1 22:11:12',9001,'2021-9-1 22:11:12' + INTERVAL 50 minute, 90),
(1002,'2021-9-4 07:01:02',9002,null, null);
发表于 2021-11-14 15:25:49 回复(0)
插入数据INSERT IN 表明 VALUES (各个字段值)。
即使是空值也不能空着,以NULL代替。
发表于 2022-02-25 10:16:58 回复(0)
INSERT into exam_record
values (DEFAULT,1001,9001,'2021-09-01 22:11:12',date_add('2021-09-01 22:11:12',interval 50 minute) ,90),
        (DEFAULT,1002,9002,'2021-09-04 07:01:02',DEFAULT ,DEFAULT)

发表于 2021-11-27 16:39:02 回复(0)
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);
发表于 2022-04-08 18:09:07 回复(0)
INSERT INTO exam_record VALUES 
(1,'1001','9001','2021-9-1 22:11:12','2021-9-1 22:11:12'+ INTERVAL 50 minute,90)
,(2,'1002','9002','2021-9-4 7:1:2',null,null)

注意 : interval
发表于 2021-12-11 14:52:19 回复(0)
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);
insert into 表名(列名1,列名2…)values( )
发表于 2021-10-25 20:02:29 回复(0)
INSERT INTO exam_record
VALUES(NULL,1001,9001,'2021-9-1 22:11:12','2021-9-1 23:01:12',90),
(NULL,1002,9002,'2021-9-4 7:1:2',NULL,NULL)
发表于 2021-10-24 20:39:29 回复(1)
第二条数据要注意一下,没有提交
发表于 2021-10-19 19:51:45 回复(0)
insert into exam_record 
values
(default, 1001, 9001, '2021-09-01 22:11:12', '2021-09-01 23:01:12', 90),
(default, 1002, 9002, '2021-09-04 07:01:02', null, null)
自增id使用默认值(default)

发表于 2023-08-07 15:31:56 回复(0)
insert into exam_record(uid,exam_id,start_time,submit_time,score) values(1001,9001,'2021-9-1 22:11:12','2021-9-1 23:01:12',90),(1002,9002,'2021-9-4 7:01:02',null,null);
select uid,exam_id,start_time,submit_time,score from exam_record;
发表于 2023-03-19 15:30:34 回复(1)
666
发表于 2021-11-03 17:40:37 回复(0)
INSERT INTO
    exam_record (id, uid, exam_id, start_time, submit_time, score)
VALUES
    (DEFAULT, 1001, 9001, '2021-09-01 22:11:12', DATE_ADD('2021-09-01 22:11:12', INTERVAL 50 MINUTE), 90),
    (DEFAULT, 1002, 9002, '2021-09-04 07:01:02', NULL, NULL);

INSERT INTO
    exam_record
VALUES
    (DEFAULT, 1001, 9001, '2021-09-01 22:11:12', DATE_ADD('2021-09-01 22:11:12', INTERVAL 50 MINUTE), 90),
    (DEFAULT, 1002, 9002, '2021-09-04 07:01:02', NULL, NULL);

发表于 2025-01-07 20:53:35 回复(0)
insert into exam_record values
(null,1001,9001,'2021-09-01 22:11:12',date_add('2021-09-01 22:11:12',interval 50 minute),90),
(null,1002,9002,'2021-09-04 07:01:02',null,null);
写了50分钟,不要自己口算,直接用日期时间函数date_add()计算
发表于 2024-12-19 21:05:58 回复(0)
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);

发表于 2024-11-20 14:13:16 回复(0)
# 考察语法:
# insert into 表名(column1,column2,.....) values (values1 ,values2,.....)
# 关于时间这块要用到时间函数比较规范,date_add
# 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)

# insert into table values (column,column2,date_add(date,inteval minute))
INSERT into exam_record
values (DEFAULT,1001,9001,'2021-09-01 22:11:12',date_add('2021-09-01 22:11:12',interval 50 minute) ,90),
(DEFAULT,1002,9002,'2021-09-04 07:01:02',DEFAULT ,DEFAULT)


发表于 2024-07-09 20:41:44 回复(0)

问题信息

难度:
111条回答 1740浏览

热门推荐

通过挑战的用户

查看代码
插入记录(一)