mysql面试题(一)

news2024/9/21 22:50:07

附件:对mysql知识点描述比较全的博客

https://blog.csdn.net/laodanqiu/article/details/131563200

原题

在这里插入图片描述

为方便表达,将创建两个表
mysql> select * from customer;
+-------------+---------------+----------+---------------+
| customer_id | customer_name | tel      | customer_type |
+-------------+---------------+----------+---------------+
|           1 | 张三          | 33333333 | 普通          |
|           2 | 李四          | 44444444 | 普通          |
|           3 | 王五          | 55555555 | VIP           |
|           4 | 李六          | 66666666 | VIP           |
|           5 | 李八          | 88888888 | 普通          |
+-------------+---------------+----------+---------------+
mysql> select * from orders;
+----------+-------------+---------------------+--------+
| order_id | customer_id | order_time          | money  |
+----------+-------------+---------------------+--------+
|        1 |           2 | 2010-08-01 00:00:00 | 466.00 |
|        2 |           2 | 2010-08-02 00:00:00 | 555.00 |
|        3 |           3 | 2010-09-01 00:00:00 | 200.00 |
|        4 |           4 | 2010-09-01 00:00:00 | 300.00 |
|        5 |           4 | 2010-09-02 00:00:00 | 500.00 |
|        6 |           5 | 2010-09-20 00:00:00 | 222.00 |
+----------+-------------+---------------------+--------+

1.新增记录,订单表中添加1条数据,订单ID7,客户ID5,时间2010-09-20,金额100.00

insert into `orders` (`customer_id`,`order_time`,`money`)
values (5,'2010-09-20','100.00');

mysql> select * from orders;
+----------+-------------+---------------------+--------+
| order_id | customer_id | order_time          | money  |
+----------+-------------+---------------------+--------+
|        1 |           2 | 2010-08-01 00:00:00 | 466.00 |
|        2 |           2 | 2010-08-02 00:00:00 | 555.00 |
|        3 |           3 | 2010-09-01 00:00:00 | 200.00 |
|        4 |           4 | 2010-09-01 00:00:00 | 300.00 |
|        5 |           4 | 2010-09-02 00:00:00 | 500.00 |
|        6 |           5 | 2010-09-20 00:00:00 | 222.00 |
|        7 |           5 | 2010-09-20 00:00:00 | 100.00 |
+----------+-------------+---------------------+--------+

2.删除记录,删除没有订单的客户表记录

delete from `customer` where customer_id not in
(select distinct(customer_id) from orders )

mysql> select * from customer;
+-------------+---------------+----------+---------------+
| customer_id | customer_name | tel      | customer_type |
+-------------+---------------+----------+---------------+
|           2 | 李四          | 44444444 | 普通          |
|           3 | 王五          | 55555555 | VIP           |
|           4 | 李六          | 66666666 | VIP           |
|           5 | 李八          | 88888888 | 普通          |
+-------------+---------------+----------+---------------+

3.修改时据,所有订单,累计订单金额大于300元的客户,客户类型改为VIP

update `customer` set `customer_type`= 'VIP'
 where customer_id in  
( select customer_id  from `orders`
 group by customer_id having sum(money) > 300)

mysql> select * from customer;
+-------------+---------------+----------+---------------+
| customer_id | customer_name | tel      | customer_type |
+-------------+---------------+----------+---------------+
|           2 | 李四          | 44444444 | VIP           |
|           3 | 王五          | 55555555 | VIP           |
|           4 | 李六          | 66666666 | VIP           |
|           5 | 李八          | 88888888 | VIP           |
+-------------+---------------+----------+---------------+

4.复合查询,统计客户类型的合计金额,按客户类型,分组求和

上述处理完后,表中仅剩VIP的客户类型,为查看结果,将客户id为5的客户类型修改为“普通”。修改后的表如下:
mysql> select * from customer;
+-------------+---------------+----------+---------------+
| customer_id | customer_name | tel      | customer_type |
+-------------+---------------+----------+---------------+
|           2 | 李四          | 44444444 | VIP           |
|           3 | 王五          | 55555555 | VIP           |
|           4 | 李六          | 66666666 | VIP           |
|           5 | 李八          | 88888888 | 普通          |
+-------------+---------------+----------+---------------+
select c.customer_type,sum(o.money) as '总金额' from 
customer as  c,orders as  o
where  c.customer_id = o.customer_id  
group by c.customer_type

+---------------+---------+
| customer_type | 总金额  |
+---------------+---------+
| VIP           | 2021.00 |
| 普通          |  322.00 |
+---------------+---------+

总结:对于面试过程中出现的mysql题目,还是需要私下多练,提升熟练度,并灵活应用;在面试答题中保持冷静,看清题目,比如第三题的 “累计” 等要特别注意。一般题目难度是逐层提高,如果感觉后面难度降低,须认真再次查看一遍!!!

扩展

对于复杂查询语句中,语句中的查询顺序

select c.customer_name as '姓名',sum(o.money) as '总金额' from customer c
inner join orders o
on c.customer_id = o.customer_id
where c.customer_type = 'VIP'
group by c.customer_name 
having sum(o.money) > 200
order by '总金额' asc 
limit 1

其实,引擎在执行上述每一步时,都会在内存中形成一张虚拟表,然后对虚拟表进行后续操作,并释放没用的虚拟表的内存,以此类推。
具体解释:(注:下面“VT”表示 → 虚拟表 virtual )

1.from:select * from table_1, table_2; 与 select * from table_1 join table_2; 的结果一致,都是表示求笛卡尔积;用于直接计算两个表笛卡尔积,得到虚拟表VT1,这是所有select语句最先执行的操作,其他操作时在这个表上进行的,也就是from操作所完成的内容
2.on: 从VT1表中筛选符合条件的数据,形成VT2表;
join: 将该 join 类型的数据补充到VT2表中,例如 left join 会将左表的剩余数据添加到虚表VT2中,形成VT3表;若表的数量大于2,则会重复1-3步;
3.where: 执行筛选,(不能使用聚合函数)得到VT4表;
4.group by: 对VT4表进行分组,得到VT5表;其后处理的语句,如select,having,所用到的列必须包含在group by条件中,没有出现的需要用聚合函数;
5.having: 筛选分组后的数据,得到VT6表;
6.select: 返回列得到VT7表;
7.distinct: 用于去重得到VT8表,该项为获取结果的处理,例如聚合函数,重命名等;
8.order by: 用于排序得到VT9表;
9.limit: 返回需要的行数,得到VT10;

总结:from->join->where->group by->having->select->内容处理->order by->limit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2082061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用于目标说话人提取的统一视听线索

第二章 目标说话人提取之《Unified Audio Visual Cues for Target Speaker Extraction 》 文章目录 前言一、任务二、动机三、挑战四、方法1.总体架构2.tes网络3. 融合网络4.损失函数 五、实验评价1.数据集2.消融实验3.客观评价4.主观评价 六、结论七、知识小结 前言 语音新手…

航空制造领域中三维工艺技术的应用

飞机制造企业可以通过三维数字化技术的应用有效提升了工艺设计水平,解决了在航空产品数字化工艺设计、制造方面的标准统一和系统整合等问题,保证了业务应用系统基础数据的一致性和规范性。本文是对航空制造领域中三维工艺技术的应用的介绍。 随着信息化技…

冒泡排序详细说明(内含动态演示图)

冒泡排序 冒泡排序的核⼼思想就是:两两相邻的元素进行比较。冒泡排序是⼀种最基础的交换排序。 之所以叫做冒泡排序,因为每⼀个元素都可以像小⽓泡⼀样,根据⾃⾝⼤⼩⼀点⼀点向数组的⼀侧移动。 //⽅法1 void bubble_sort(int arr[], int…

前端开发学习Docker记录01镜像操作

Docker相关命令 Demo安装nginx 先搜索然后拉取,然后查看images列表是不是拉取成功 docker search nginxdocker pull nginx特定某个版本,镜像名:版本号 docker images

这个神奇的网站提供各种图的R代码供您参考!

点击去每一个都有代码和数据 ggplot2高效实用指南 (可视化脚本、工具、套路、配色) 50个ggplot2可视化案例

国产游戏技术能否引领全球

目录 1.概述 1.1.面临的挑战 1.2.机遇 1.3.IT技术创新如何推动行业发展 2.技术解析 2.1.图形渲染技术 2.2.物理引擎 2.3.人工智能 (AI) 3.行业影响 3.1.对国内游戏开发行业的影响 3.2.IT人才需求变化 3.3.技术发展方向 4.未来展望 4.1. 发展前景 4.2. IT技术人员…

根据Scrum 敏捷开发过程开发一个基于 Web 的 Scrum 项目管理系统

目录 案例 【题目】 【问题 1】(10 分) 【问题 2】(6 分) 【问题 3】(9 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于 Scrum 敏捷开发过程的叙述,在答题纸上回答问题 1 至问题 3。 【题目】 Scrum 是一个增量…

【使用 Python 进行截图】

如何使用 Python 进行截图? Python 是一种广泛使用的通用编程语言。它可以执行各种任务。其中之一就是进行截图。它提供了一个名为“pyautogui”的模块,可以用于截图。“pyautogui”截取的图片是 PIL(Python 图像库)格式&#xf…

2024中国国际大数据博览会:引领数字变革,共创未来辉煌

2024年中国国际大数据产业博览会,作为全球瞩目的数据领域盛事,再次汇聚全球目光于中国贵阳。 在这场以“数智共生:开创数字经济高质量发展新未来”为主题的盛会上,国家数据局与贵阳市政府共同携手,开启了一段旨在深化…

Java Web实战教程:如何一步步开发美容美发管理系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

全钢防静电地板和硫酸钙防静电地板的区别

全钢防静电地板和硫酸钙防静电地板都是机房装修会用到的地面材料,那么全钢防静电地板和硫酸钙防静电地板有什么区别呢? 就基材而言,全钢防静电地板底板采用深级拉伸钢板,面板采用硬质SPCC钢板,上下钢板冲压、点焊成型…

软考攻略/超详细/系统集成项目管理工程师/基础知识分享05

2.1.3 存储与数据库(掌握) 1、存储技术 存储分类根据服务器类型分为:封闭系统的存储和开放系统的存储 封闭系统主要指大型机等服务器;开放系统指基于包括麒麟、欧拉、UNIX、Linux等操作系统的服务器 开放存储的系统分为&#xff…

安科瑞ADW300系列4G电表可托管平台

徐赟杰 ADW300系列是利用物联网技术实现智能化计量和管理的智能仪表。 主要用于计量低压网络的三相有功电能,具有体积小、精度高、功能丰富等优点,并 且可选通讯方式多,可支持 RS485 通讯和 Lora、NB、4G、wifi 等无线通讯方式,增…

《python》poetry install下载缓慢,网络问题断开连接--poetry换源镜像下载+国内镜像

在使用打包工具poetry进行打包的是出现了一个问题就是,在使用poetry进行打包的时候出现了,连接断开这样的问题,这个问题是可以通过换源,通过国内的镜像来解决这个问题就可以了。 找到项目中的pyoroject。toml文件这个文件中写了一…

iptables笔记汇总

iptables笔记汇总 一、基础概念 iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilternetfilter才是防火墙真正的安全框…

2024年cad转图片最清晰的方法,看到就是赚到

在工程设计、建筑绘图等领域,CAD图纸的清晰度直接关系到项目沟通的效果与准确性。但如何将复杂的CAD文件转化为易于分享、查看的高清图片呢?给大家分享几种高效且清晰的转换方法,一起来了解下吧。 方法一:迅捷CAD转换器 这款CAD工…

PMP考试提分必杀技,高手都在用这种方法!

PMP(Project Management Professional 项目管理专业人士资格认证,由美国PMI发起,是全球最大的项目管理专业组织机构。它的目的是严格评估管理项目人员的知识技能,以确定其是否具备高品质的资格认证。今天我要分享一些关于PMP考试的…

WPF ToolkitMVVM IOC IServiceConllection

用微软自带的 IOC 需要安装 using Microsoft.Extensions.DependencyInjection; using System.Configuration; using System.Data; using System.Windows;namespace WpfApp3 {/// <summary>/// Interaction logic for App.xaml/// </summary>public partial class…

RK3568 Android 11 蓝牙BluetoothA2dpSink 获取用于生成频谱的PCM

Android 中的 A2DP Sink A2DP Sink 在 Android 系统中主要用于 接收 其他蓝牙设备&#xff08;如手机、平板、电脑等&#xff09;发送过来的 高质量的立体声音频。简单来说&#xff0c;它让你的 Android 设备可以充当一个 蓝牙音箱 或 耳机 的角色。 核心功能&#xff1a; 接…

开放式耳机哪个品牌实用?南卡、漫步者、小米 三款爆火单品横评

开放式耳机因为设计新颖&#xff0c;不塞进耳朵&#xff0c;受到了很多人的喜爱。但是&#xff0c;市面上一些开放式耳机音质和佩戴体验一般&#xff0c;质量也参差不齐&#xff0c;这让消费者陷入了选择困难。这些品质低下的产品既无法提供优秀的音频享受&#xff0c;长期佩戴…