SQL基础面试题及详细答案(真实职场版)_第1页
SQL基础面试题及详细答案(真实职场版)_第2页
SQL基础面试题及详细答案(真实职场版)_第3页
SQL基础面试题及详细答案(真实职场版)_第4页
SQL基础面试题及详细答案(真实职场版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL基础面试题及详细答案(真实职场版)本套面试题适配初级开发、测试、数据岗位面试,全部为企业高频基础考点,答案通俗易懂、贴合实际工作场景,无冗余理论,侧重实战理解。一、基础概念类1、什么是SQL?SQL的主要分类有哪些?答案:SQL是结构化查询语言,是操作关系型数据库的标准语言,主要用于实现数据库数据的查询、新增、修改、删除以及数据库结构管理、权限控制等操作。SQL主要分为四大类,职场最常用的是DML和DDL:DDL(数据定义语言):用于定义和修改数据库结构,不操作数据。核心语句:CREATE(创建库/表)、ALTER(修改表结构)、DROP(删除库/表)、TRUNCATE(清空表数据、保留结构)。DML(数据操作语言):用于操作表中的数据,日常开发使用最多。核心语句:SELECT(查询)、INSERT(新增)、UPDATE(修改)、DELETE(删除)。DCL(数据控制语言):用于权限管理。核心语句:GRANT(授权)、REVOKE(撤销权限)。TCL(事务控制语言):用于管理数据库事务。核心语句:COMMIT(提交事务)、ROLLBACK(回滚事务)、SAVEPOINT(保存点)。2、DELETE、TRUNCATE、DROP的区别?(高频必问)答案:三者核心差异在于操作对象、是否可回滚、是否保留结构、自增列是否重置,具体区别如下:DELETE:属于DML语句,只删除表数据,保留表结构;可以带WHERE条件精准删除指定数据;事务中可回滚;不会重置自增主键;执行速度最慢。TRUNCATE:属于DDL语句,清空整张表所有数据,保留表结构;无WHERE条件,无法精准删除;不可回滚;会重置自增主键;锁表、速度极快。DROP:属于DDL语句,直接删除整张表(结构+数据),同时删除表的索引、约束、触发器等所有关联信息;不可回滚;彻底销毁表,速度最快。职场总结:删除少量数据用DELETE,清空全表数据用TRUNCATE,彻底删除表用DROP。3、什么是数据库事务?事务的四大特性(ACID)是什么?答案:事务是一组数据库操作的最小执行单元,这组操作要么全部执行成功,要么全部失败回滚,保证数据一致性,最常见场景是转账、订单支付。四大特性ACID:原子性(Atomicity):事务不可分割,全部成功或全部失败回滚,不会出现部分执行的情况。一致性(Consistency):事务执行前后,数据库的数据完整性、约束规则保持一致,不会出现非法数据。隔离性(Isolation):多个事务并发执行时,相互独立、互不干扰,不同事务的修改不会随意覆盖。持久性(Durability):事务提交成功后,数据永久写入数据库,即使服务器宕机、重启,数据也不会丢失。4、数据库事务的四种隔离级别?分别解决什么问题?答案:并发事务会产生脏读、不可重复读、幻读问题,隔离级别从低到高依次升级,隔离性越强、性能越差:读未提交:最低级别,允许读取其他事务未提交的数据,存在脏读、不可重复读、幻读问题,基本不使用。读已提交(MySQL默认):只能读取其他事务已提交的数据,解决脏读,存在不可重复读、幻读。可重复读:同一事务内,多次读取同一数据结果一致,解决脏读、不可重复读,存在幻读。串行化:最高级别,事务串行执行,完全解决脏读、不可重复读、幻读,并发性能极低,极少使用。概念补充:脏读(读未提交数据)、不可重复读(同一事务两次读取数据不一致)、幻读(同一事务查询,新增/删除数据导致结果条数变化)。二、基础查询类(高频实操)1、WHERE和HAVING的区别?答案:执行顺序不同:WHERE是分组前过滤数据,HAVING是分组后过滤分组结果。适用范围不同:WHERE可以用于所有查询条件,不能使用聚合函数(SUM、COUNT、MAX等);HAVING专门针对分组后的结果,可以使用聚合函数。优先级不同:查询执行顺序:WHERE过滤→GROUPBY分组→HAVING过滤分组结果。示例:查询部门人数大于3人的部门SELECTdept_id,COUNT(*)ASnumFROMuserGROUPBYdept_idHAVINGnum>3;2、ORDERBY、GROUPBY的区别?执行顺序是什么?答案:区别:GROUPBY是按照指定字段对数据进行分组,配合聚合函数统计数据;ORDERBY是对查询结果进行升序/降序排序,不改变数据分组结构。完整SQL执行顺序(必考):FROM表→WHERE过滤→GROUPBY分组→HAVING分组过滤→SELECT查询字段→ORDERBY排序→LIMIT分页3、LIMIT的用法?如何实现分页查询?答案:LIMIT用于限制查询结果条数,是MySQL专属语法。语法:LIMIT偏移量,展示条数分页公式:第N页,每页M条数据→LIMIT(N-1)*M,M示例:每页10条,查询第3页数据SELECT*FROMuserLIMIT20,10;4、DISTINCT的作用及使用注意事项?答案:DISTINCT用于去除查询结果中的重复数据,只保留唯一数据。注意事项:DISTINCT作用于后面所有字段,多字段去重时,只有所有字段数据完全一致才会判定为重复。不能单独对某个字段去重(多字段查询场景)。大数据量下去重效率较低,日常优先用GROUPBY替代。三、联表查询类1、常用的联表查询有哪几种?区别是什么?答案:日常工作常用4种联表方式,基于两张表A、B:INNERJOIN(内连接):只查询两张表中匹配关联条件的数据,两边无匹配数据则不展示。是最常用的联表方式。LEFTJOIN(左连接):以左表为基准,展示左表所有数据,右表匹配数据展示,不匹配则显示NULL。RIGHTJOIN(右连接):以右表为基准,展示右表所有数据,左表不匹配则显示NULL。使用频率极低。FULLJOIN(全连接):展示左右两张表所有数据,无匹配则显示NULL。MySQL不支持,可通过UNION拼接实现。2、LEFTJOIN后加WHERE和加AND的区别?(高频坑点)答案:AND条件:是联表的匹配条件,只会过滤右表数据,左表数据会全部保留,不匹配的右表字段为NULL。WHERE条件:是联表完成后的结果过滤,会过滤掉包含NULL的整条数据,此时LEFTJOIN效果等同于INNERJOIN,是新手最常踩的坑。3、UNION和UNIONALL的区别?答案:UNION:拼接两个查询结果,自动去除重复数据,会排序校验,性能较差。UNIONALL:直接拼接结果,不去重、不排序,性能远高于UNION,日常开发优先使用。前提:两个查询的字段数量、字段类型必须一致。四、函数与语法坑点1、NULL值查询需要注意什么?=NULL为什么查不到数据?答案:数据库中NULL代表未知、空值,不等于0、空字符串,也不等于自身。禁止使用=NULL、!=NULL判断空值,永远查询不到数据。正确语法:ISNULL(判断为空)、ISNOTNULL(判断非空)。2、常用的聚合函数有哪些?聚合函数对NULL值如何处理?答案:常用聚合函数:COUNT(统计数量)、SUM(求和)、MAX(最大值)、MIN(最小值)、AVG(平均值)。处理规则:SUM、AVG、MAX、MIN:自动忽略NULL值,不参与计算。COUNT(*):统计所有行数,包含NULL、空值、重复数据。COUNT(字段):统计该字段非NULL的数据条数。3、CASEWHEN的用法?答案:CASEWHEN是条件判断函数,用于实现多条件分支判断,类似代码中的if-else,常用于数据分类、字段赋值。示例:根据分数划分等级SELECTscore,CASEWHENscore>=90THEN'优秀'WHENscore>=60THEN'及格'ELSE'不及格'ENDASlevelFROMstudent;五、索引基础面试题1、什么是索引?索引的优缺点?答案:索引是数据库表的目录结构,相当于书籍目录,用于快速定位数据,提升查询效率。优点:大幅提升查询、排序、分组、联表查询的效率。缺点:占用磁盘存储空间,索引越多,占用空间越大。降低新增、修改、删除数据的效率,数据变更时,索引需要同步更新维护。2、MySQL常用索引类型有哪些?答案:主键索引(PRIMARY):唯一且非空,一张表只能有一个主键索引,查询优先级最高。唯一索引(UNIQUE):字段值唯一,允许一个NULL值,用于手机号、身份证号等唯一字段。普通索引(INDEX):最基础的索引,允许重复、允许NULL,用于普通查询字段。联合索引:多个字段组合成一个索引,遵循最左匹配原则。3、什么是联合索引最左匹配原则?答案:联合索引遵循最左前缀匹配,例如建立索引(a,b,c),查询条件必须包含最左侧的a字段,索引才会生效。生效场景:wherea=?、wherea=?andb=?、wherea=?andb=?andc=?失效场景:whereb=?、wherec=?、whereb=?andc=?职场建议:建立联合索引时,高频查询字段放左侧,低频字段放右侧。六、经典实操SQL面试题(附答案)1、查询表中重复的数据场景:user表,根据手机号phone查询重复数据答案SQL:SELECTphone,COUNT(*)AScountFROMuserGROUPBYphoneHAVINGcount>1;2、删除表中重复数据,保留最新一条场景:user表,phone重复,保留id最大的数据答案SQL:DELETEu1FROMuseru1,useru2WHEREu1.phone=u2.phoneANDu1.id<u2.id;3、查询每个部门的员工人数、最高工资、最低工资表结构:emp(员工表),字段:id,name,dept_id,salary答案SQL:SELECTdept_id,COUNT(*)ASemp_num,M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论