常用SQL语句面试题及答案(实战版).docxVIP

常用SQL语句面试题及答案(实战版).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

常用SQL语句面试题及答案(实战版)

一、基础查询与过滤(面试高频入门题)

1.题目:查询员工表(employee)中部门编号(dept_id)为3,且工资(salary)大于8000的员工姓名(name)、年龄(age),按工资降序排列

表结构:employee(id,name,age,dept_id,salary,hire_date)

答案:

SELECTname,age

FROMemployee

WHEREdept_id=3ANDsalary8000

ORDERBYsalaryDESC;

考点:WHERE条件过滤、ORDERBY排序(DESC降序),注意SELECT指定查询字段而非用*

2.题目:查询员工表中入职日期(hire_date)在2020年1月1日至2023年12月31日之间的员工,去重显示部门编号

答案:

SELECTDISTINCTdept_id

FROMemployee

WHEREhire_dateBETWEEN2020-01-01AND2023-12-31;

考点:DISTINCT去重、BETWEEN日期范围查询,注意日期格式规范

二、聚合函数与分组统计(核心考点)

3.题目:统计每个部门的员工人数、平均工资,仅显示平均工资大于9000的部门,按平均工资升序排列

答案:

SELECTdept_id,COUNT(id)ASemp_count,AVG(salary)ASavg_sal

FROMemployee

GROUPBYdept_id

HAVINGAVG(salary)9000

ORDERBYavg_salASC;

考点:GROUPBY分组、聚合函数(COUNT/AVG)、HAVING过滤分组结果(区别于WHERE过滤行)

4.题目:查询员工表中工资最高的3名员工的姓名、工资和部门编号

答案(MySQL):

SELECTname,salary,dept_id

FROMemployee

ORDERBYsalaryDESC

LIMIT3;

答案(Oracle):

SELECTname,salary,dept_id

FROM(SELECTname,salary,dept_idFROMemployeeORDERBYsalaryDESC)

WHEREROWNUM=3;

考点:TopN查询,不同数据库的语法差异(LIMITvsROWNUM)

三、多表关联查询(重中之重)

5.题目:有员工表(employee)和部门表(department),查询每个员工的姓名、部门名称(dept_name),包括没有分配部门的员工

表结构:

employee(id,name,dept_id,salary)

department(id,dept_name,location)

答案:

SELECTe.name,d.dept_name

FROMemployeee

LEFTJOINdepartmentd

ONe.dept_id=d.id;

考点:LEFTJOIN(左连接)的使用,保留左表所有数据,右表匹配不到显示NULL

6.题目:查询部门位置(location)为北京的部门下,工资大于10000的员工姓名、部门名称和工资

答案:

SELECTe.name,d.dept_name,e.salary

FROMemployeee

INNERJOINdepartmentd

ONe.dept_id=d.id

WHEREd.location=北京ANDe.salary10000;

考点:INNERJOIN(内连接)筛选两表都匹配的数据,多条件组合过滤

四、子查询与复杂逻辑

7.题目:查询工资高于本部门平均工资的员工姓名、部门编号和工资

答案:

SELECTname,dept_id,salary

FROMemployeee1

WHEREsalary(

SELECTAVG(salary)

FROMemployeee2

WHEREe2.dept_id=e1.dept_id

);

考点:相关子查询(子查询依赖外部查询条件),聚合函数在子查询中的应用

8.题目:查询至少有3名员工的部门名称和员工人数

答案:

SELECTd.dept_name,COUNT(e.id)ASemp_count

FROMdepartmentd

JOINemplo

您可能关注的文档

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档