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

devtools/2024/9/25 2:32:07/

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.ppmy.cn/devtools/41021.html

相关文章

​​​【收录 Hello 算法】第 6 章 哈希表

目录 第 6 章 哈希表 本章内容 第 6 章 哈希表 Abstract 在计算机世界中,哈希表如同一位聪慧的图书管理员。 他知道如何计算索书号,从而可以快速找到目标图书。 本章内容 6.1 哈希表6.2 哈希冲突6.3 哈希算法6.4 小结

REACT 在组件之间共享状态

有时,您希望两个组件的状态始终一起变化。要做到这一点,请从他们俩身上删除状态,将其移动到他们最近的共同父级,然后通过道具将其传递给他们。这被称为提升状态,这是编写 React 代码时最常见的事情之一。 举例提升状态…

泰迪智能科技中职大数据实验室建设(职业院校大数据实验室建设指南)

职校大数据实验室是职校校园文化建设的重要部分,大数据实训室的建设方案应涵盖多个方面,包括硬件设施的配备、软件环境的搭建、课程资源的开发、师资力量的培养以及实践教学体系的完善等。 打造特色,对接生产 社会经济与产业的…

submitUpload() { this.$refs.upload.submit(); },

submitUpload() {this.$refs.upload.submit();}, submitUpload() 是一个函数,调用该函数会将 Vue 组件中的上传组件中的文件上传到服务器上。这个函数通过 this.$refs.upload.submit() 来实现,其中 this.$refs.upload 可以获取到上传组件的 DOM 对象&am…

[PythonWeb:Django框架]:前后端请求调用;

文章目录 接着上篇项目app包下面创建static包,引入jquery,bootstrap 相关js文件views.py编写apicompute文件夹下面的urls.py路由模块引入views.py刚刚定义的函数html发送ajax请求 接着上篇 https://blog.csdn.net/Abraxs/article/details/138739727?sp…

【Vue2】关于response返回数据的错误小记

关于Vue2中response返回数据的一个错误小记 如图&#xff0c;在这里返回的时候&#xff0c;后端是通过List< String >返回的&#xff0c;response接收到的实际上是一个Array数组&#xff0c;但是赋值给searchedTaskList的时候&#xff0c;需要在.then包括的范围里面赋值给…

Linux grpunconv命令教程:从阴影组转换回常规组(附实例详解和注意事项)

Linux grpunconv命令介绍 grpunconv命令用于将组从阴影组转换回常规组。这个命令创建了一个从组和一个可选的现有阴影组生成的组&#xff0c;然后移除阴影组。 Linux grpunconv命令适用的Linux版本 grpunconv命令在大多数Linux发行版中都可以使用&#xff0c;包括Debian、Ub…

matlab实现爬虫

在MATLAB中尝试实现一个基本的网络爬虫&#xff0c;以下是一个简单的示例&#xff0c;它使用 urlread 函数从网页上读取内容&#xff1a; % 网页的URL url https://example示例.com; % 使用urlread读取网页内容 % 注意&#xff1a;从R2019b开始&#xff0c;建议使用webr…