MySQL面试之什么是聚合函数、事务、索引?(通俗易懂版)

1、聚合函数:

MySQL中的聚集函数用于对一组数据进行计算并返回单个结果。常见的聚集函数包括:

  • COUNT():用于计算结果集中行的数量。
  • SUM():对结果集中的数值列进行求和。
  • AVG():计算结果集中数值列的平均值。
  • MAX():返回结果集中数值列的最大值。
  • MIN():返回结果集中数值列的最小值。

这些函数可以与SQL的SELECT语句结合使用,通常在使用GROUP BY子句对结果进行分组时使用,以便在每个组中对数据执行聚合操作。

2、事务:

MySQL中的事务是一组SQL语句的集合,作为一个逻辑单元一起执行,处理复杂的数据。

2.1、事务具有四个特性,通常称为ACID:

  • 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部失败回滚,即事务是不可分割的单元。如果事务失败,则所有已完成的操作会被回滚,数据库状态将恢复到事务开始前的状态。

  • 一致性(Consistency):事务执行的结果必须使数据库从一个一致性状态转移到另一个一致性状态。这意味着事务执行前后,数据库的完整性约束、外键关系等都必须得到维护。

  • 隔离性(Isolation):并发执行的事务之间应该相互隔离,一个事务的执行不应该受到其他事务的影响。隔离级别定义了事务之间的隔离程度,包括读未提交、读已提交、可重复读和串行化。

  • 持久性(Durability):一旦事务提交,其结果应该永久保存在数据库中,即使系统崩溃或重启,事务的结果也不应丢失。

通过使用事务,可以确保数据库操作的一致性和可靠性,尤其在处理复杂的业务逻辑或需要多个操作同时成功或失败时特别有用。

2.2、简单例子:

在一个人员管理系统中,假设有两个表:personemails,分别用来存储人员的基本信息和他们的邮箱地址。现在,你想要删除某个人员的所有信息,包括其基本信息和关联的邮箱地址。在MySQL中,你可以使用事务来确保这个删除操作的原子性,即要么所有操作都成功执行,要么都失败回滚,以保证数据的一致性。

START TRANSACTION; -- 开启事务-- 删除person表中的人员信息
DELETE FROM person WHERE person_id = 123;-- 删除emails表中与该人员相关的邮箱地址
DELETE FROM emails WHERE person_id = 123;COMMIT; -- 提交事务

事务开始时,我们使用START TRANSACTION;语句开启了一个新的事务。接着,我们执行了两个DELETE语句,分别从person表和emails表中删除了person_id为123的记录,即某个特定人员的所有信息。最后,我们使用COMMIT;语句提交了事务,这样就会将所有的删除操作一起提交到数据库,确保这些操作要么全部成功执行,要么全部失败回滚。

3、索引:

MySQL索引是一种数据结构,用于快速查找数据库表中的数据。就像书籍的目录一样,索引可以帮助数据库快速找到存储在表中的数据,而不必扫描整个表。这样可以大大提高数据检索的速度。但是,索引也会占用额外的存储空间,并且在插入、更新或删除数据时可能会稍微降低性能。因此,需要根据具体情况权衡是否创建索引。

3.1、简单例子:

有一个名为books的数据库表,存储了大量书籍的信息,包括书名、作者、出版日期等。现在你想要查询所有作者是"李华"的书籍。如果books表中没有任何索引,那么数据库引擎需要逐行扫描整个表,查找作者是"李华"的所有行,这可能会非常耗时,尤其是当表中有大量数据时。但是,如果在books表的author列上创建了一个索引,数据库引擎就可以使用这个索引快速定位到所有作者是"李华"的书籍所在的行,而不必扫描整个表。这样就大大提高了查询的速度。这就好比有了一本按照作者姓名排列的书籍目录,只需要翻到"李华"这一页,就能找到所有相关的书籍,而不必一页一页地查找。所以,通过在适当的列上创建索引,可以让数据库在查询数据时更加高效。

-- 在books表的author列上创建索引
CREATE INDEX idx_author ON books(author);

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

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

相关文章

MYSQL数据库-SQL语句

数据库相关概念 名称全称简称数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准Structured Quer…

win10电脑录屏全攻略,从入门到精通,一篇文章就够了!

在当今科技时代,电脑录屏已经成为人们生活中越来越重要的一部分。无论是工作还是娱乐,我们都可能需要录制电脑屏幕来保存或分享一些内容。在本文中,我们将向您介绍win10电脑录屏的三种方法,并对每种方法进行详细说明,为…

宝塔安装多个版本的PHP,如何设置默认的PHP版本

如何将默认的PHP版本设置为7.3.32, 创建软链接指向7.3版本,关键命令:ln -sf /www/server/php/73/bin/php /usr/bin/php 然后再查看PHP版本验证一下结果 [rootlocalhost ~]# ln -sf /www/server/php/73/bin/php /usr/bin/php [rootlocalho…

青蒿素优化算法(AO)-2024年新算法-公式原理详解与性能测评 Matlab代码免费获取

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 原理简介 一、初始化阶段 二、综合淘汰阶…

你的网络安全证书SSL如何安装?

网络安全证书SSL是用于加密网页和保护用户个人信息的重要工具,它通过SSL/TLS协议提供安全的数据传输通道,帮助确保网站和用户之间的通信是加密的,防止敏感信息被窃取或篡改。安装SSL证书是网站管理员确保网站安全性的重要一步。下面将介绍SSL…

2024创业热门选择:短视频带货,轻资产模式引领你飞翔

在当今这个信息爆炸的时代,短视频带货已经成为了一种全新的商业模式,为创业者提供了前所未有的机遇。特别是在2024年,短视频带货的潜力愈发显现,成为众多创业者的热门选择。本文将深入探讨 keJ0277 短视频带货的魅力所在&#xff…

element ui的确认提示框按钮样式修改

修改确认提示框的默认按钮样式,使用css强制修改 例: js代码: this.$confirm("您确定要删除吗?此操作无法撤销并且将永久删除所有数据。", "提示", { type: "warning", cancelButtonClass: "…

日本率先研发成功6G设备,刺痛了谁?为何日本能率先突破?

日本率先研发成功6G设备,无线数据速率是5G的百倍,这让日本方面兴奋莫名,毕竟日本在科技方面从1990年代以来太缺少突破的创新了,那么日本为何如今在6G技术上能率先突破呢? 日本在1980年代末期达到顶峰,它的科…

js设计模式-观察者模式与发布/订阅模式

观察者模式和发布/订阅模式是两种常见的JavaScript设计模式,用于在应用程序中处理对象之间的通信和事件处理。 观察者模式(也称为订阅/发布模式)是一种行为型模式,其中存在一个主题(主体)对象和多个观察者…

【算法】dfs

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、全排列1. 决策树2. 设计代码1. 全局变量2. dfs函数3. 细节问题 二、子集解法一1. 决策树2. 设计代码…

PCB的盘中孔

目录 一、什么时候可以在焊盘上打孔? 二、什么时候可以在焊盘上打孔? 绘制PCB时经常会遇到空间不够无法走线,这时我们会放置过孔使信号线穿过电路板一侧到达另一侧进行走线,这样既方便走线,也能够节省板子空间。有时…

Linux提权--第三方软件MYSQL数据库提权(WEB+本地)

免责声明:本文仅做技术交流与学习,非法搞事后果自负... 目录 靶场镜像: 过程: 手工: 下载mysql udf poc 进行编译. 进入数据库进行UDF导出 下载(上传) 创建do_system函数调用 探针(./LinEnum.sh),查找suid权限. 配合使用find调用执行 工具: 过程: 外连不上? 隧道出…

气膜建筑电源配置是怎样的—轻空间

在气膜建筑中,电源配置是确保建筑控制系统连续运行的重要组成部分。以下是该建筑的电源配置方案: 1. 市电供电与备用发电机: 为了应对市电中断等突发情况,系统采用市电供电与备用柴油发电机双重供电方式。这种配置保证了即使在市电…

UV胶的应用场景有哪些?

UV胶是一种特殊的胶水,其固化过程需要紫外光照射。它具有快速固化、高强度、无溶剂挥发等优点,因此在许多应用场景中被广泛使用。UV胶的应用场景非常广泛,包括但不限于以下几个方面: 1.电子产品组装: UV胶在电子产品的组装中扮演…

高校课程评价|基于SSM+vue的高校课程评价系统的设计与实现(源码+数据库+文档)

高校课程评价系统 目录 基于SSM+vue的高校课程评价系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1管理员功能模块 2学生功能 3教师功能 4专家功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…

企业微信hook接口协议,ipad协议http,格式化发送@消息

格式化发送消息 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信send_userid是long要发送的人或群idisRoom是bool是否是群消息 请求示例 {"uuid":"1688853790599424","send_userid":1069605295501613…

实验0.0 Visual Studio 2022安装指南

Visual Studio 2022 是一个功能强大的开发工具,对于计算机专业的学生来说,它不仅可以帮助你完成学业项目,还能为你将来的职业生涯打下坚实的基础。通过学习和使用 Visual Studio,你将能够更高效地开发软件,并在编程领域…

电力乙级资质延伸换证的政策背景与趋势

电力乙级资质延伸换证的政策背景与趋势主要体现在以下几个方面: 一、政策背景 行业发展需求:随着电力行业的不断发展和市场竞争的加剧,电力设计和施工企业需要不断提升自身的技术水平和业务能力,以适应市场的变化和满足客户的需求…

Alibaba SpringCloud集成Nacos、openFeign实现负载均衡-15

Spring cloud alibaba Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 主要功能 服务限流降级:默认支持 WebS…

Unity生命周期函数详解

Unity生命周期函数详解 Unity生命周期函数是Unity引擎中用于控制游戏对象行为的一系列方法。它们在游戏的不同阶段被自动调用,允许开发者在适当的时机执行特定的代码。了解和正确使用生命周期函数对于创建流畅和高效的游戏至关重要。 生命周期函数概述 Unity生命…