增删改查sql语句面试(sql server增删改查面试题)

增删改查sql语句面试(sql server增删改查面试题)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p></p> 

讯享网

SQL 插入记录的方式汇总:

  • 普通插入(全字段)
  • 普通插入(限定字段)
  • 多条一次性插入
  • 从另一个表导入
  • 带更新的插入 :(注意这种原理是检测到主键或唯一性索引键重复就删除原记录后重新插入)

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

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

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

FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增 IDuidint(11)NO(NULL)用户 IDexam_idint(11)NO(NULL)试卷 IDstart_timedatetimeNO(NULL)开始时间submit_timedatetimeYES(NULL)提交时间scoretinyint(4)YES(NULL)得分

答案:

讯享网

在这里插入图片描述
讯享网

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

表:

FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增 IDuidint(11)NO(NULL)用户 IDexam_idint(11)NO(NULL)试卷 IDstart_timedatetimeNO(NULL)开始时间submit_timedatetimeYES(NULL)提交时间scoretinyint(4)YES(NULL)得分

我们已经创建了一张新表用来备份 2021 年之前的试题作答记录,结构和表一致,请将 2021 年之前的已完成了的试题作答纪录导入到该表。

答案:

 

表:
在这里插入图片描述
表:
在这里插入图片描述

描述:现在有一套 ID 为 的高难度 SQL 试卷,时长为一个半小时,请你将 作为发布时间插入到试题信息表,不管该 ID 试卷是否存在,都要插入成功,请尝试插入它。

试题信息表:

FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增 IDexam_idint(11)NOUNI(NULL)试卷 IDtagvarchar(32)YES(NULL)类别标签difficultyvarchar(8)YES(NULL)难度durationint(11)NO(NULL)时长(分钟数)release_timedatetimeYES(NULL)发布时间

答案:

讯享网

知识点: examination_info:
这个部分表示要将数据插入到 examination_info 这个表中。如果表中存在与新插入数据相同主键或唯一键的记录,则删除旧记录后再插入新记录。

描述:现在有一张试卷信息表 , 表结构如下图所示:

FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增 IDexam_idint(11)NOUNI(NULL)试卷 IDtagvarchar(32)YES(NULL)类别标签difficultyvarchar(8)YES(NULL)难度durationint(11)NO(NULL)时长(分钟数)release_timedatetimeYES(NULL)发布时间

请把表中为的字段全部修改为。

思路:这题有两种解题思路,最容易想到的是直接update + where来指定条件更新,第二种就是根据要修改的字段进行查找替换

答案一:

 

答案二:

讯享网

在这里插入图片描述

描述:现有一张试卷作答记录表 ,其中包含多年来的用户作答试卷记录,结构如下表:作答记录表: 为 完成时间 (注意这句话)

FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增 IDuidint(11)NO(NULL)用户 IDexam_idint(11)NO(NULL)试卷 IDstart_timedatetimeNO(NULL)开始时间submit_timedatetimeYES(NULL)提交时间scoretinyint(4)YES(NULL)得分

题目要求:请把表中 2021 年 9 月 1 日全部改为被动完成,即:将完成时间改为’2099-01-01 00:00:00’,分数改为 0。

思路:注意题干中的关键字(已经高亮) " "之前这个条件, 那么这里马上就要想到要进行时间的比较 可以直接 , 也可以采用函数来进行比较;第二个条件就是 , 即完成时间为 NULL,也就是题目中的提交时间 ----- 。

答案:

 

在这里插入图片描述

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

作答记录表:是试卷开始时间是交卷,即结束时间。

FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增 IDuidint(11)NO(NULL)用户 IDexam_idint(11)NO(NULL)试卷 IDstart_timedatetimeNO(NULL)开始时间submit_timedatetimeYES(NULL)提交时间scoretinyint(4)YES(NULL)得分

要求:请删除表中作答时间小于 5 分钟整且分数不及格(及格线为 60 分)的记录;

思路:这一题虽然是练习删除,仔细看确是考察对时间函数的用法,这里提及的分钟数比较,常用的函数有 和 ,两者用法稍有区别,后者更为灵活,这都是看个人习惯。

  1. :两个时间之间的差值
讯享网

两者参数都是必须的,都是一个时间或者日期时间表达式。如果指定的参数不合法或者是 NULL,那么函数将返回 NULL。

对于这题而言,可以用在 minute 函数里面,因为 TIMEDIFF 计算出来的是时间的差值,在外面套一个 MINUTE 函数,计算出来的就是分钟数。

  1. :用于计算两个日期的时间差
 

这题需要进行分钟的比较,那么就是 TIMESTAMPDIFF(MINUTE, 开始时间, 结束时间) < 5

答案:

讯享网
 

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

作答记录表:是试卷开始时间,是交卷时间,即结束时间,如果未完成的话,则为空。

FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增 IDuidint(11)NO(NULL)用户 IDexam_idint(11)NO(NULL)试卷 IDstart_timedatetimeNO(NULL)开始时间submit_timedatetimeYES(NULL)提交时间scoretinyint(4)YES(NULL)得分

要求:请删除表中未完成作答作答时间小于 5 分钟整的记录中,开始作答时间最早的 3 条记录。

思路:这题比较简单,但是要注意题干中给出的信息,结束时间,如果未完成的话,则为空,这个其实就是一个条件

还有一个条件就是小于 5 分钟,跟上题类似,但是这里是,即两个条件满足一个就行;另外就是稍微考察到了排序和 limit 的用法。

答案:

讯享网

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

FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增 IDuidint(11)NO(NULL)用户 IDexam_idint(11)NO(NULL)试卷 IDstart_timedatetimeNO(NULL)开始时间submit_timedatetimeYES(NULL)提交时间scoretinyint(4)YES(NULL)得分

要求:请删除表中所有记录,并重置自增主键

思路:这题考察对三种删除语句的区别,注意高亮部分,要求重置主键;

  • : 清空表,删除表结构,不可逆
  • : 格式化表,不删除表结构,不可逆
  • :删除数据,可逆

这里选用的原因是: 只能作用于表;会清空表中的所有行,但表结构及其约束、索引等保持不变;会重置表的自增值;使用后会使表和索引所占用的空间会恢复到初始大小。

这题也可以采用来做,但是在删除后,还需要手动表结构来设置主键初始值;

同理也可以采用来做,直接删除整张表,包括表结构,然后再新建表即可。

答案:

 

描述:现有一张用户信息表,其中包含多年来在平台注册过的用户信息,随着平台的不断壮大,用户量飞速增长,为了高效地为高活跃用户提供服务,现需要将部分用户拆分出一张新表。

原来的用户信息表:

FiledTypeNullKeyDefaultExtraCommentidint(11)NOPRI(NULL)auto_increment自增 IDuidint(11)NO(NULL)用户 IDnick_namevarchar(64)YES(NULL)昵称achievementint(11)YES0成就值levelint(11)YES(NULL)用户等级jobvarchar(32)YES(NULL)职业方向register_timedatetimeYESCURRENT_TIMESTAMP注册时间

作为数据分析师,请创建一张优质用户信息表,表结构和用户信息表一致。

你应该返回的输出如下表格所示,请写出建表语句将表格中所有限制和说明记录到表里。

FiledTypeNullKeyDefaultExtraCommentidint(11)NOPRI(NULL)auto_increment自增 IDuidint(11)NO(NULL)用户 IDnick_namevarchar(64)YES(NULL)昵称achievementint(11)YES0成就值levelint(11)YES(NULL)用户等级jobvarchar(32)YES(NULL)职业方向register_timedatetimeYESCURRENT_TIMESTAMP注册时间

思路:如果这题给出了旧表的名称,可直接; 但是这题并没有给出旧表名称,所以需要自己创建,注意默认值和键的创建即可,比较简单。

答案:

讯享网

描述: 现有一张用户信息表,其中包含多年来在平台注册过的用户信息。

用户信息表

FiledTypeNullKeyDefaultExtraCommentidint(11)NOPRI(NULL)auto_increment自增 IDuidint(11)NO(NULL)用户 IDnick_namevarchar(64)YES(NULL)昵称achievementint(11)YES0成就值levelint(11)YES(NULL)用户等级jobvarchar(32)YES(NULL)职业方向register_timedatetimeYESCURRENT_TIMESTAMP注册时间

要求:请在用户信息表,字段的后面增加一列最多可保存 15 个汉字的字段 ;并将表中 列名改为 ,同时 字段长度变为 10;的默认值设置为 0。

思路:首先做这题之前,需要了解语句的基本用法:

  • 添加一列:(first : 在某列之前添加,after 反之)
  • 修改列的类型或约束:
  • 修改列名:
  • 删除列:
  • 修改表名:
  • 将某一列放到第一列:

关键字其实可以省略不写,这里基于规范还是罗列出来了。

在修改时,如果有多个修改项,可以写到一起,但要注意格式

答案:

 

在这里插入图片描述

描述:现有一张试卷作答记录表,其中包含多年来的用户作答试卷记录。一般每年都会为表建立一张备份表 为对应年份。

现在随着数据越来越多,存储告急,请你把很久前的(2011 到 2014 年)备份表都删掉(如果存在的话)。

思路:这题很简单,直接删就行,如果嫌麻烦,可以将要删除的表用逗号隔开,写到一行;这里肯定会有小伙伴问:如果要删除很多张表呢?放心,如果要删除很多张表,可以写脚本来进行删除。

答案:

讯享网

描述:现有一张试卷信息表,其中包含各种类型试卷的信息。为了对表更方便快捷地查询,需要在 表创建以下索引,

规则如下:在 列创建普通索引 、在 列创建唯一性索引、在 列创建全文索引 。

根据题意,将返回如下结果:

examination_info0PRIMARY1idA0BTREEexamination_info0uniq_idx_exam_id1exam_idA0YESBTREEexamination_info1idx_duration1durationA0BTREEexamination_info1full_idx_tag1tag0YESFULLTEXT

备注:后台会通过 语句来对比输出结果

思路:做这题首先需要了解常见的索引类型:

  • B-Tree 索引:B-Tree(或称为平衡树)索引是最常见和默认的索引类型。它适用于各种查询条件,可以快速定位到符合条件的数据。B-Tree 索引适用于普通的查找操作,支持等值查询、范围查询和排序。
  • 唯一索引:唯一索引与普通的 B-Tree 索引类似,不同之处在于它要求被索引的列的值是唯一的。这意味着在插入或更新数据时,MySQL 会验证索引列的唯一性。
  • 主键索引:主键索引是一种特殊的唯一索引,它用于唯一标识表中的每一行数据。每个表只能有一个主键索引,它可以帮助提高数据的访问速度和数据完整性。
  • 全文索引:全文索引用于在文本数据中进行全文搜索。它支持在文本字段中进行关键字搜索,而不仅仅是简单的等值或范围查找。全文索引适用于需要进行全文搜索的应用场景。
 

有了以上的基础知识之后,该题答案也就浮出水面了。

答案:

讯享网

描述:请删除表上的唯一索引 和全文索引 。

思路:该题考察删除索引的基本语法:

 

这里需要注意的是:在 MySQL 中,一次删除多个索引的操作是不支持的。每次删除索引时,只能指定一个索引名称进行删除。

而且 DROP 命令需要慎用!!!

答案:

讯享网

好文推荐:

《【SQL】SQL常见面试题总结(1)》
《【SQL】SQL常见面试题总结(3)》
《【SQL】SQL常见面试题总结(4)》
在这里插入图片描述

小讯
上一篇 2025-06-13 09:48
下一篇 2025-06-15 22:13

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/200752.html