
MySQL
文章平均质量分 69
这孩子叫逆
要么不做,要么做好
展开
-
通用八股文技巧:MVCC原理拆解
今天我来看一道非常经典的面试题:MVCC 原理。对于这个八股文面试题,我们如何回答更全面、更好呢。我会从这些维度串联起来:什么是数据库事务,为什么要有事务事务包括哪几个特性事务并发存在的问题事务的四大隔离级别数据库是如何保证事务的隔离性的呢到底什么是MVCCMVCC实现的五个关键知识点MVCC实现原理拆解分析事务,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。原创 2024-11-24 17:40:06 · 716 阅读 · 0 评论 -
行列转换-横表竖表互相转换
原始数据中是一个竖表,每个学生的每个学科一行数据,对其转换成一张横表,即表中学生id为主键,包含语文、数学、英语三列,列值为对应学科分数。原始数据为一张横表,分别有三列成绩列,想要转成竖表,需要转换成三列分别为 学生id、学科、成绩,转换完成之后学生id将不再是主键。因为subject中的别名要作为subject的内容,我们需要使用汉字,同时在语法上是别名,所以需要时`` ,不是用''。今天给大家带来spark的一个新的知识点,pivot,这个不是函数,是一个子句。用于存放反透视列名的列的名称。原创 2024-11-06 19:39:20 · 986 阅读 · 0 评论 -
日常工作中,你是如何优化SQL的?
in 查询会先执行内部查询部分 SELECT customer_id FROM orders,获得 orders 表(大表)中的所有 customer_id,然后在 customers 表(小表)中查找匹配的 id。如果没有的话,可以在自己搞个深分页,或者因为数据量、或者因为没加索引等原因,导致的慢SQL,然后按照这个思路去排查一遍。因此,应考虑在where的条件列,建立索引,尽量避免全表扫描。const:通过一次索引就能找到数据,一般用于主键或唯一索引作为条件,这类扫描效率极高,,速度非常快。原创 2024-10-30 21:25:32 · 873 阅读 · 0 评论 -
慢SQL优化不要只会加索引了
分页优化就相对特殊,因为都是后面慢慢才会发现的。比如说现在要查询第10010后面的10条数据,分页查询会先扫描10010前面的数据都扫描一遍,最后再返回,其实前面的数据,我们根本就不需要,但是分页查询会先扫描前面的数据的。前面我们说到避免使用select*,提到了覆盖索引,假设我们需要查询的字段刚好在二级索引里,这样我们就在二级索引里找到了我们想要的数据,不需要再回表操作。和第三条有那么些管理,因为更新频繁的列,就代表着它的树的维护是非常频繁的,可能我们没插入一条数据就会进行分裂,然后再重构这个树。原创 2024-10-29 14:06:26 · 938 阅读 · 0 评论 -
使用MyBatis推荐几种SQL写法
此示例展示了如何根据传入的条件动态构建查询语句。此示例展示了如何根据不同的搜索类型选择不同的查询条件。MyBatis-Plus是MyBatis的增强工具,提供了便捷的CRUD操作和强大的条件构造器。此示例展示了如何在插入用户后自动获取生成的主键,并将其赋值给传入的User对象的id属性。此示例展示了如何将用户和订单信息映射到一个复杂的对象结构中,实现一对多映射。MyBatis提供了。MyBatis提供了强大的对象关系映射功能,可以处理复杂的表关系。遍历传入的用户列表,将每个用户的信息插入到数据库中。原创 2024-10-23 15:59:54 · 717 阅读 · 0 评论 -
MySQL数据一致性保障:深入理解两阶段提交与redo log、binlog同步机制
MySQL作为最广泛应用的关系型数据库之一,它通过一系列复杂的机制来确保在高并发环境下的数据不丢失和事务的一致性。其中,两阶段提交(2PC, Two-Phase Commit)协议在MySQL中扮演了核心角色,尤其是在确保redo log和binlog数据一致性的场景下。本文将深入浅出地解析这一过程,并附上相关面试题帮助你更好地准备技术挑战。原创 2024-10-23 15:57:16 · 549 阅读 · 0 评论 -
如何做 MySQL 的性能优化
使用EXPLAIN分析查询计划:使用EXPLAIN可以查看MySQL优化器在执行查询时选择的查询计划,可以根据查询计划来优化查询语句。避免在查询语句中使用OR:在查询语句中使用OR会导致查询优化器无法使用索引,影响查询效率。避免使用子查询:子查询是一种方便的查询方式,但是在某些情况下,子查询的性能可能比较低。避免在查询条件中使用函数:在查询条件中使用函数会导致索引失效,影响查询效率。使用LIMIT限制返回的数据行数:使用LIMIT可以限制返回的数据行数,可以减少数据库的负担和网络传输的开销。原创 2024-10-23 15:45:22 · 163 阅读 · 0 评论 -
MySQL存储JSON(使用Mysbatis)
Override@Override@Override@Overridetry {try {> clazz) {static {static {//JsonAutoDetect.Visibility.ANY 代表所有属性或字段都可以序列化//新版用法//以数组的方式存放到Class Type 全类名作为为第一个元素,Json字符串为第二个元素。原创 2024-10-14 09:11:47 · 884 阅读 · 0 评论 -
MySQL间隙锁(范围锁),主要用于防止幻读
间隙锁(Gap Lock)是 InnoDB 存储引擎中的一种锁机制,用于防止幻读现象。幻读是指在一个事务中,两次读取同一个范围的数据时,第二次读取出现了第一次没有出现的数据行。间隙锁通过锁定一个范围内的“间隙”来防止其他事务在该范围内插入新记录,从而避免幻读。锁定范围:间隙锁锁定的是记录之间的间隙,而不是具体的记录。例如,如果表中有记录 1, 2, 4, 5,那么间隙锁可能锁定 (2, 4) 之间的间隙。防止插入:间隙锁可以防止其他事务在锁定的间隙范围内插入新记录。例如,如果间隙 (2, 4) 被锁定,则原创 2024-10-09 15:09:27 · 484 阅读 · 0 评论 -
千万级数据的全表update的正确姿势
刷数据本来是一个异常枯燥的工作内容,但是从这次数据量较大的数据更新从而也对mysql有了一些新的理解。原创 2024-09-29 21:17:56 · 892 阅读 · 0 评论 -
MySql (重点)(聚合非聚合索引,join,MySql函数,SQL 关键字,数据库三范式,存储引擎,数据库事务,隔离级别, 索引,如何避免索引失效,数据库锁,乐观锁悲观锁,MySql 优化)
你们MySQL面试,真的不准备吗。# MySQL # My SQL面试题 # mysql教程 # 运维 # Linux运维复制此链接,打开Dou音搜索,直接观看视频!原创 2024-09-26 21:51:20 · 1467 阅读 · 0 评论 -
MySql Explain优化命令使用(数据库索引优化查询)
EXPLAIN 是一个用于获取 SQL 语句执行计划的命令,用于帮助理解查询的执行过程以及如何优化。这里主要是索引优化。原创 2024-09-26 18:00:26 · 1200 阅读 · 0 评论 -
8. 详细描述一条 SQL 语句在 MySQL 中的执行过程。
如果查询缓存中已经存在相同的SQL语句,并且结果集也是最新的,那么MySQL直接返回缓存中的结果集,跳过后续的执行步骤。一条SQL语句在MySQL中的执行过程涉及多个阶段,包括SQL解析、查询优化、执行计划生成、SQL执行和结果返回。一条SQL语句在MySQL中的执行过程包括多个步骤,从接收到SQL命令到返回结果,这些步骤涉及SQL解析、优化、执行以及最终的结果返回。:MySQL的存储引擎负责实际的数据存储和检索。:MySQL在执行完SQL语句后,会释放在解析、优化和执行过程中占用的资源,如内存、锁等。原创 2024-09-20 17:39:26 · 1349 阅读 · 0 评论 -
7. 在Java中集合mysql如何执行一条简单的SELECT查询,并获取结果集?
在Java中,使用JDBC(Java Database Connectivity)可以执行SQL查询,并获取结果集(ResultSet)。以下是执行一条简单的SELECT查询,并获取和处理结果集的详细步骤:1. 导入必要的包首先,确保导入了必要的JDBC包。2. 建立数据库连接使用JDBC连接数据库时,需要提供数据库的URL、用户名和密码。你可以使用方法来建立连接。3. 创建Statement对象Statement对象用于执行静态SQL语句,并返回生成的结果集。你可以通过方法创建一个。原创 2024-09-19 21:56:07 · 457 阅读 · 0 评论 -
6. 什么是MySQL的事务?如何在Java中使用Connection接口管理事务?
事务中的所有操作要么全部完成,要么全部不完成,不会出现部分完成的情况。如果事务中某个操作失败,系统会回滚(撤销)整个事务,恢复到事务开始前的状态。在MySQL中,InnoDB存储引擎支持事务,因此可以使用事务来管理对数据库的多个操作,确保数据的一致性和完整性。:尽量缩短事务的执行时间,因为事务会锁定数据库的部分资源,长期占用会影响数据库的并发性能。:在事务操作中,务必捕获和处理异常,并在必要时回滚事务,以确保数据的完整性。方法回滚事务,以撤销已经执行的操作,恢复到事务开始前的状态。原创 2024-09-19 21:51:51 · 593 阅读 · 0 评论 -
5. 在使用JDBC连接MySQL时,如何处理连接超时问题?
在使用JDBC连接MySQL时,处理连接超时问题可以通过配置连接超时、Socket读超时、管理闲置连接以及异常处理机制来实现。使用连接池时,通过适当的参数配置,可以进一步优化连接管理,确保在各种网络和负载条件下的稳定性。你可以通过JDBC连接URL参数来设置连接超时时间,确保在指定时间内无法建立连接时抛出异常。在发生连接超时或其他数据库连接问题时,应用程序应该捕获并处理这些异常,以便采取相应的恢复措施或提供友好的错误信息。:设置连接在池中保持空闲状态的最长时间(以秒为单位),超过这个时间的连接将被释放。原创 2024-09-19 21:47:00 · 1536 阅读 · 0 评论 -
3. 什么是连接池?为什么使用数据库连接池?
在一个典型的数据库连接池中,连接池管理器在应用程序启动时创建一组数据库连接(称为连接池),当应用程序需要访问数据库时,它从池中获取一个可用的连接;数据库连接池是一种用于管理数据库连接的技术,通过预先创建和管理连接,提升了应用程序的性能和资源利用率。:连接池可以定期检查和维护连接,如果检测到某些连接失效或闲置时间过长,可以关闭这些连接并从池中移除,然后根据需要创建新的连接。:通过重复使用连接,连接池减少了数据库服务器的负载,避免频繁建立和关闭连接带来的资源消耗,从而提高数据库的处理能力和效率。原创 2024-09-18 21:33:30 · 1432 阅读 · 0 评论 -
2. JDBC驱动是什么?如何在Java项目中配置MySQL的JDBC驱动?
JDBC驱动是JDBC API的实现,负责将Java程序中的标准JDBC方法调用转化为数据库特定的操作。尽管从JDBC 4.0开始,驱动程序会自动注册,但明确地加载驱动程序仍然是一种好习惯,特别是在某些环境下可能需要手动加载。对于MySQL,使用的是Type 4驱动,这是一种纯Java驱动程序,可以直接与MySQL数据库服务器通信。配置MySQL的JDBC驱动主要包括两个步骤:添加驱动程序到项目中,以及在代码中加载和使用驱动程序。JAR文件添加到项目的类路径中,然后在代码中加载驱动并使用。原创 2024-09-18 21:24:35 · 1559 阅读 · 0 评论 -
1. 如何在Java中连接MySQL数据库?请解释使用JDBC连接的步骤。
要在Java中连接MySQL数据库,通常使用JDBC(Java Database Connectivity)API。通过上述步骤,你可以轻松在Java中使用JDBC连接MySQL数据库,执行SQL查询并处理结果。记得遵循最佳实践,确保资源的正确管理和关闭,以避免资源泄漏和其他潜在问题。从JDBC 4.0开始,驱动程序会自动加载,但在某些环境下,显式加载驱动程序仍然是推荐的做法。首先,需要确保项目中包含MySQL的JDBC驱动程序。在使用完数据库后,必须关闭所有的数据库资源,包括。原创 2024-09-18 21:18:41 · 881 阅读 · 0 评论 -
SQL注入
字符串拼接?站位相同动态拼接sql中的数据参数动态拼接SQL中的数据参数不同可以绑定非数据的参数:表名、字段名、SQL关键字只能绑定数据,不能绑定其他SQL关键词和表名字段名有SQL注入风险可以防止SQL注入。建议场景适用于拼接表名、字段名、SQL关键词适用于拼接数据参数。原创 2024-01-30 19:44:39 · 587 阅读 · 0 评论 -
SQL分类
DDL:数据库定义语言,进行库、表、视图、索引等创建和销毁的SQL。DCL:数据库控制语言,对数据库用户进行权限设定和更改的SQL。DML:数据库操作语言,对数据进行增删改的SQL。DQL:数据库查询语言,进行查询操作的SQL。TCL:事务控制语言,控制事务操作的SQL。DCL:通常由数据库超级管理员操作。原创 2024-01-28 22:28:27 · 156 阅读 · 0 评论 -
MySQL封装JDBC为工具类(JDBC简化)
【代码】MySQL封装JDBC为工具类(JDBC简化)原创 2024-01-27 16:29:05 · 1109 阅读 · 0 评论 -
MySQL 数据库 JDBC 简化 JDBCTemplate
2. ResultSet查询结果的列名,不是原表列名,而是select查询结果列名,可以由as进行别名定义。2. 如果查询结果(select后的字段名)的字段由n个单词构成,则Java类的属性名要变成驼峰命名法。1. 如果查询结果(select后的字段名)的字段由一个单词构成,则Java类的属性名要和列名一致。1. ResultSet表示的是查询结果,其数据已经是MySQL返回,并保存在Java程序中的。场景:查询t_person表中的数据,并逐条地将每个字段输出在控制台。原创 2024-01-26 20:49:30 · 979 阅读 · 0 评论 -
简单易懂的 MySQL 原生 JDBC 代码(基于jar-8.0)
【代码】简单易懂的 MySQL 原生 JDBC 代码(基于jar-8.0)原创 2024-01-25 19:54:32 · 541 阅读 · 0 评论 -
mysql 中给表单添加外键的方法
alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);原创 2024-01-24 11:12:37 · 884 阅读 · 0 评论 -
Mysql数据库DQL查询语言之表连接(联合查询)
on e.department_id=d.department_id -- 关系字段:员工表的部门id=部门表的部门id。on e1.manager_id=e2.employee_id -- 连接条件:员工的领导id=领导的员工id。on e.department_id=d.department_id -- 员工的部门id=部门的id。on d.location_id=l.location_id -- 部门表的地址id=地址表的id。原创 2024-01-23 21:21:48 · 1254 阅读 · 0 评论 -
MySQL数据库查询语句之组函数,子查询语句
当一个SQL的执行需要借助另一个SQL的执行结果时,则需要进行SQL嵌套,该语法结构称之为子查询。先筛选出符合要求的数据,再对符合要求的数据进行分组时,分组的工作量会被减少,效率更高。先确定从哪张表进行操作-->对表中数据进行分组-->基于分组结果进行查询操作。执行顺序:优先执行小括号内的子SQL,根据子SQL的执行结果再执行外层SQL。执行顺序:from-->where-->group by-->select。执行顺序:from-->group by-->select。原创 2024-01-22 19:19:28 · 1434 阅读 · 0 评论 -
mysql怎么给用户赋权限
完成以上步骤后,用户就被赋予了相应的权限。username和password必须符合MySQL的命名规则,不包含特殊字符;也可以更换为'%',表示任何IP地址都可以连接;若想删除已经存在的用户及其权限,可以使用DROP USER语句。原创 2024-01-21 08:00:00 · 2181 阅读 · 0 评论 -
Mysql 数据库 DQL 数据查询语言相关sql语句(简单查询,条件查询)
- 查询所有列:select * from 表名(*:是通配符,表示所有列) select * from employees。行:是表的基本组成单位,具体数据,每行信息是一个整体,由固定字段构成。-- 满足when中的条件,便执行对应then中的结果,如果when都不满足,则最终执行else,从上往下判断。select 列名 as 别名,列名 as 别名,列名,... from 表名。列:又称为字段,是表的基本组成单位,相当于Java类中的属性。能够支持的关系运算符:> < >=原创 2024-01-20 15:18:27 · 1410 阅读 · 0 评论 -
如何查看其他电脑的MYSQL数据库 mysql查询另一个ip数据库
文章标签如何查看其他电脑的MYSQL数据库mysql数据库服务器MySQL文章分类MySQL数据库阅读数143如果不从远程登陆,可以用。这个时候只要在的那台电脑,登入后,更改数据库中表里的 字段,把改称,即可。1.2 授权法例如,你想用户使用密码通过 IP 地址连接到 MySQL 服务器,使用:如果你想允许用户从 IP 为的主机连接到 MySQL 服务器,并使用作为密码2.MySQL数据库基本命令2.1 基本命令2.2 注释2.3原创 2024-01-20 14:07:30 · 1584 阅读 · 0 评论 -
解决删除或增加时发生Cannot delete or update a parent row: a foreign key constraint fails报错,删除带有外键关联的数据
【代码】解决删除或增加时发生Cannot delete or update a parent row: a foreign key constraint fails报错,删除带有外键关联的数据。原创 2024-01-11 10:04:52 · 1211 阅读 · 0 评论