【面试必刷】Mysql编程题:第三期

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【面试必刷】Mysql编程题:第三期

Test 1


有一个员工表,employees 简况如下:

image.png

有一个部门表,dept_emp 简况如下:

image.png

请你查找所有已经分配部门的员工的 last_namefirst_name 以及 dept_no,也包括暂时没有分配具体部门的员工,以上例子如下:

image.png


解题思路


考察知识点

左联结,右联结。

根据题目的要求查询的结果集中要包含所有员工的信息,那么再将表进行连接时就需要注意主从表的选择,应将 employees 作为主表,即保留 employees 表中的全部数据,即便在从表中没有对应的数据。下面是 左联结 的解法。


SELECT e.last_name, e.first_name, d.dept_no
FROM employees AS e LEFT JOIN dept_emp AS d
ON e.emp_no = d.emp_no
复制代码

右联结

SELECT e.last_name, e.first_name, d.dept_no
FROM dept_emp AS d RIGHT JOIN employees AS e
ON e.emp_no = d.emp_no
复制代码


Test 2


有一个薪水表,salaries 简况如下:

image.png

请你查找薪水记录超过 15 次的员工号 emp_no 以及其对应的记录次数 t,以上例子输出如下:

image.png


解题思路


考察知识点

GROUP BYHAVING

根据题目要求,首先明确查询的结果中包含 emp_no,以及变动次数 t 。使用 count 函数和 group by 分组可以统计变动次数。

SELECT emp_no, count(salary) t
FROM salaries
GROUP BY emp_no
HAVING t > 15
复制代码


拓展:上面只统计了薪水记录超过15的员工信息,如果要统计涨薪超过 15 次员工 emp_no 和次数 t,那么就要注意,真正的涨薪都是正数,并且第二次开始才算一次涨幅,所以可以参考下面的写法。

SELECT s1.emp_no, COUNT(s1.salary) AS t
FROM salaries AS s1 INNER JOIN salaries AS s2
ON s1.emp_no = s2.emp_no AND s1.to_date = s2.from_date
WHERE s1.salary < s2.salary
GROUP BY s1.emp_no
HAVING t > 15



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
21天前
|
存储 关系型数据库 MySQL
【Java面试题汇总】MySQL数据库篇(2023版)
聚簇索引和非聚簇索引、索引的底层数据结构、B树和B+树、MySQL为什么不用红黑树而用B+树、数据库引擎有哪些、InnoDB的MVCC、乐观锁和悲观锁、ACID、事务隔离级别、MySQL主从同步、MySQL调优
【Java面试题汇总】MySQL数据库篇(2023版)
|
2月前
|
SQL 存储 关系型数据库
复盘女朋友面试4个月的Mysql面试题(1万字)
该文章详细分析了Ribbon的超时配置是否会覆盖OpenFeign的超时配置,并探讨了OpenFeign超时配置能否动态实时修改生效的问题。
复盘女朋友面试4个月的Mysql面试题(1万字)
|
2月前
|
SQL 关系型数据库 MySQL
面试准备-MySQL
面试准备-MySQL
|
2月前
|
Java
【Java基础面试三十五】、谈谈你对面向接口编程的理解
这篇文章讨论了面向接口编程的概念,强调接口作为一种规范和实现分离的设计哲学,可以降低程序模块间的耦合度,提高系统的可扩展性和可维护性。
|
2月前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
2月前
|
算法 关系型数据库 MySQL
一天五道Java面试题----第七天(mysql索引结构,各自的优劣--------->事务的基本特性和隔离级别)
这篇文章是关于MySQL的面试题总结,包括索引结构的优劣、索引设计原则、MySQL锁的类型、执行计划的解读以及事务的基本特性和隔离级别。
|
2月前
|
存储 关系型数据库 MySQL
MySQL 常见面试题总结(上)
主要介绍 MYSQL 数据库面试中常见的面试问题。
23 0
|
2月前
|
SQL 关系型数据库 MySQL
"Python与MySQL的浪漫邂逅:一键掌握增删改查,开启你的数据库编程之旅!"
【8月更文挑战第21天】Python因其简洁的语法和强大的库支持,成为连接数据库的首选工具。本文介绍如何使用Python连接MySQL数据库并执行基本操作。首先需安装`mysql-connector-python`库。通过配置连接信息建立数据库连接后,可利用`cursor.execute()`执行SQL语句进行数据的增删改查,并通过`commit()`提交更改。查询时使用`fetchall()`或`fetchone()`获取结果。记得处理异常及关闭连接以释放资源。掌握这些基础,有助于高效进行数据库编程。
32 0
|
18天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
20天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
160 11
下一篇
无影云桌面