题解 | #SQL 3.插入记录(三)#

插入记录(三)

http://www.nowcoder.com/practice/978bcee6530a430fb0be716423d84082

明确考点:

插入记录的方式汇总:

  • 普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...)
  • 普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
  • 多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...
  • 从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]
  • 带更新的插入:REPLACE INTO table_name VALUES (value1, value2, ...) (注意这种原理是检测到主键或唯一性索引键重复就删除原记录后重新插入)

细节剖析:

  • 高难度SQL试卷;
  • 时长为一个半小时,等于90分钟;
  • 2021-01-01 00:00:00 作为发布时间;
  • 不管该ID试卷是否存在,都要插入成功;

思路实现:

  • 本题可采用第五种插入方式,试卷ID列有唯一性索引,自增主键可直接设置为NULL或0或DEFAULT:
REPLACE INTO examination_info VALUES
 (NULL, 9003, "SQL", "hard", 90, "2021-01-01 00:00:00");
  • 当然也可以限定字段插入,写作:
REPLACE INTO examination_info(exam_id,tag,difficulty,duration,release_time) VALUES
 (9003, "SQL", "hard", 90, "2021-01-01 00:00:00");
  • 最后还有一种曲折方式,就是先删除可能存在的9003号试卷,再用insert into插入:
DELETE FROM examination_info WHERE exam_id=9003;
INSERT INTO examination_info (exam_id, tag, difficulty, duration, release_time) VALUES
 (9003, "SQL", "hard", 90, "2021-01-01 00:00:00")
SQL进阶 文章被收录于专栏

SQL进阶step by step

全部评论
第二种方法replace换成insert有区别吗
点赞 回复 分享
发布于 2023-01-17 09:10 山东
还是不懂?
点赞 回复 分享
发布于 2022-03-14 11:10

相关推荐

05-07 19:10
已编辑
中国科学技术大学 C++
silly01:现在先去 momenta,8-9月去鹅找日常实习,八股文算法背好了你这随便进。不过建议补充一下后端知识,MySQL、Redis看下八股,再补个6824,加点go后台的技术栈,9月随便进大厂。CPP后端只能来WXG
点赞 评论 收藏
分享
评论
110
17
分享

创作者周榜

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