![](https://img-blog.csdnimg.cn/direct/afd0e8af1fb84b8bb5847a734201ec88.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 90
MySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQL
时间瑾
梦想永在凌云意意气风发,代码成就万世基积沙镇海
展开
-
drop、delete 与 truncate 区别
`drop`、`delete` 与 `truncate` 都是 MySQL 语句中与删除有关的语法, 但是他们的具体含义和用法还是有区别的.原创 2024-07-21 20:20:18 · 744 阅读 · 1 评论 -
一文了解MySQL的索引语法及其使用
当字段类型为字符串(varchar, text等)时,有时候需要索引很长的字符串,这会让索引变得很大,查询时,浪费大量的磁盘IO,影响查询效率,此时可以只降字符串的一部分前缀,建立索引,这样可以大大节约索引空间,从而提高索引效率。前缀长度:可以根据索引的选择性来决定,而选择性是指不重复的索引值(基数)和数据表的记录总数的比值,索引选择性越高则查询效率越高,唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。联合索引中,出现范围查询(),范围查询右侧的列索引失效。原创 2024-07-21 08:59:11 · 620 阅读 · 0 评论 -
一文了解MySQL的子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入, 本篇文章介绍MySQL中的子查询的用法.原创 2024-07-20 18:27:00 · 1349 阅读 · 6 评论 -
一文了解MySQL explain详解
MySQL 的 EXPLAIN 是一个用于查询优化的关键字。它用于分析和评估查询语句的执行计划,帮助开发者理解查询语句的性能问题以及优化查询的方式。使用EXPLAIN关键字,可以获取关于查询执行计划的详细信息,包括表的访问顺序、连接方式、索引使用情况等,这些信息能够帮助你确定查询是否有效利用了索引,以及是否存在潜在的性能瓶颈。要使用EXPLAIN执行以上语句后,MySQL会返回一个结果集,包含了查询执行计划的详细信息。原创 2024-07-20 06:30:00 · 986 阅读 · 1 评论 -
一文了解MySQL的性能分析
表示 SELECT 的类型,常见取值有 SIMPLE(简单表,即不适用表连接或者子查询)、PRIMARY(主查询,即外层的查询)、UNION(UNION中的第二个或者后面的查询语句)、SUBQUERY(SELECT/WHERE之后包含了子查询)等。select 查询的序列号,表示查询中执行 select 子句或者操作表的顺序(id相同,执行顺序从上到下;id不同,值越大越先执行)慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志。原创 2024-07-19 15:26:11 · 966 阅读 · 2 评论 -
一文了解MySQL的行级锁
本文详细介绍了MySQLInnoDB中的行级锁机制,包括共享锁和排他锁的使用,以及行锁、间隙锁和临键锁的区别和应用场景。重点讨论了不同隔离级别下锁的行为,以及如何通过索引优化锁的性能和避免升级为全表锁。原创 2024-07-19 08:48:30 · 1663 阅读 · 0 评论 -
一文了解MySQL的全局锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。MySQL中的锁,按照锁的粒度分,分为以下三类:● 全局锁:锁定数据库中的所有表。● 表级锁:每次操作锁住某一张表。● 行级锁:每次操作锁住对应的行数据。原创 2024-07-18 08:43:49 · 830 阅读 · 0 评论 -
一文了解MySQL的索引分类
本文详细介绍了InnoDB存储引擎中的不同索引类型,包括B-Tree索引、聚集索引(如主键或唯一索引)、全文索引、空间索引和组合索引,以及它们在MySQL中的应用和查询效率影响。原创 2024-07-17 08:56:05 · 518 阅读 · 0 评论 -
一文了解MySQL的索引结构
本文介绍了数据库索引在MySQL中的重要性,重点讲解了B-Tree、B+Tree以及Hash索引的优缺点和适用场景,探讨了InnoDB为何选择B+Tree作为主要索引结构,适合技术面试准备。本文介绍了数据库索引在MySQL中的重要性,重点讲解了B-Tree、B+Tree以及Hash索引的优缺点和适用场景,探讨了InnoDB为何选择B+Tree作为主要索引结构,适合技术面试准备。原创 2024-07-16 09:06:42 · 663 阅读 · 0 评论 -
一文了解MySQL的InnoDB引擎
MySQL5.5 版本开始,默认使用InnoDB存储引擎,它擅长事务处理,具有崩溃恢复特性,在日常开发中使用非常广泛。下面是InnoDB架构图,左侧为内存结构,右侧为磁盘结构。当我们创建了上面的这张表,我们在查看表结构的时候,就可以显式的看到这三个字段。隐藏字段含义DB_TRX_ID最近修改事务ID,记录插入这条记录或最后一次修改该记录的事务ID。回滚指针,指向这条记录的上一个版本,用于配合undo log,指向上一个版本。DB_ROW_ID隐藏主键,如果表结构没有指定主键,将会生成该隐藏字段。原创 2024-07-15 15:45:48 · 1069 阅读 · 1 评论 -
一文了解MySQL的存储引擎
本文详细比较了InnoDB的事务支持、行级锁和外键约束,MyISAM的表锁和速度优势,以及Memory的内存存储和临时表角色。针对不同应用场景,讨论了如何选择合适的存储引擎。原创 2024-07-15 08:53:32 · 830 阅读 · 0 评论 -
一文了解MySQL的事务
事务是逻辑上一组操作的集合,事务会把所有操作作为一个整体一起向系统 提交 或 撤销 操作请求,即这些操作要么同时成功,要么同时失败。原创 2024-07-14 17:38:52 · 882 阅读 · 1 评论 -
一文了解MySQL的表级锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。MySQL中的锁,按照锁的粒度分,分为以下三类:● 全局锁:锁定数据库中的所有表。● 表级锁:每次操作锁住某一张表。● 行级锁:每次操作锁住对应的行数据。原创 2024-07-12 09:21:29 · 1344 阅读 · 1 评论 -
一文了解MySQL的多表查询
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。原创 2024-07-11 07:30:00 · 859 阅读 · 6 评论 -
一文了解MySQL的约束
MySQL 约束是用于确保数据库中数据完整性和一致性的规则。它们定义了对表中数据的限制,以确保数据的准确性和可靠性。主键约束(Primary Key Constraint):主键约束用于唯一标识表中的每一行数据。主键必须是唯一且非空的,每个表只能有一个主键。通过定义主键约束,可以确保表中的每一行都可以被唯一地标识。唯一约束(Unique Constraint):唯一约束确保表中的某个列或一组列的值是唯一的,但允许空值(NULL)。唯一约束可用于确保某些列的数值不重复,但允许其中部分为空。外键约束。原创 2024-07-10 17:56:48 · 775 阅读 · 0 评论 -
一文了解MySQL的MySQL的聚合函数使用
什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。聚合函数类型AVG() 求平均值SUM() 求和MAX() 求最大值MIN() 求最小值COUNT() 求总行数聚合函数语法SELECT SUM(某字段) FROM TABLE_NAME WHERE ...聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。原创 2024-07-10 14:10:04 · 1149 阅读 · 0 评论 -
MySQL8.0索引新特性
在MySQL 8.0版本中查看数据表ts1的结构,从结果可以看出,索引已经是降序了。当表中没有显示主键时,表中的第一个唯一非空索引会成为隐式主键,也不能设置为隐藏索引。查询优化器不再使用这个索引(即使使用force index(强制使用索引),优化器也不会使用该索引),在MySQL 5.7版本中查看数据表ts1的结构,从结果可以看出,索引仍然是默认的升序。注意 当索引被隐藏时,它的内容仍然是和正常索引一样实时更新的。降序索引只对查询中特定的排序顺序有效,如果使用不当,反而查询效率更低。原创 2024-07-09 08:49:23 · 1362 阅读 · 0 评论 -
MySQL的日期函数
本文详细介绍了如何在SQL和MySQL中使用各种函数来获取当前日期时间、格式化日期、计算日期间隔、判断星期以及执行其他相关操作,适合数据库开发者和系统管理员参考。原创 2024-06-26 08:19:15 · 436 阅读 · 2 评论 -
MySQL的函数
AVG():计算某列的平均值SUM():计算某列值的总和COUNT():计算某列的行数MAX():返回某列的最大值MIN():返回某列的最小值CONCAT():连接两个或多个字符串LENGTH():返回字符串的长度:返回字符串的子串REPLACE():替换字符串中的子串:将字符串转换为大写 / 小写NOW():返回当前日期和时间:将日期按指定格式进行格式化:提取日期中的年、月、日信息:计算两个日期之间的差值ROUND():对数值进行四舍五入ABS():返回数值的绝对值SQRT():返回数值的平方根。原创 2024-06-25 08:38:43 · 645 阅读 · 0 评论 -
MySQL的DQL语句
MySQL 通用语法分类● DDL: 数据定义语言,用来 定义数据库对象(数据库、表、字段)● DML: 数据操作语言,用来对数据库表中的数据进行增删改● DQL: 数据查询语言,用来 查询 数据库中表的记录● DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限。原创 2024-06-24 08:20:28 · 981 阅读 · 0 评论 -
MySQL的DCL语句
通过 DCL,数据库管理员可以控制哪些用户或角色可以访问数据库中的特定数据或执行特定的操作,从而确保数据的安全性和完整性。DCL 在数据库管理中扮演着重要的角色,有助于管理数据库的权限和访问控制,保护敏感信息不被未经授权的用户访问。:DCL 允许数据库管理员通过授权(GRANT)和回收(REVOKE)权限,控制谁可以访问数据库以及他们可以执行的操作。:通过限制对敏感操作的权限,DCL 减少了用户误操作的风险。数据控制语言(DCL)的重要性体现在其在数据库管理和数据安全中的关键作用。更多权限请看权限一览表。原创 2024-06-23 21:12:51 · 753 阅读 · 2 评论 -
MySQL的DML语句
MySQL 通用语法分类● DDL: 数据定义语言,用来 定义数据库对象(数据库、表、字段)● DML: 数据操作语言,用来对数据库表中的数据进行增删改● DQL: 数据查询语言,用来 查询 数据库中表的记录● DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限。原创 2024-06-22 08:37:42 · 544 阅读 · 11 评论 -
MySQL的DDL语句
MySQL 通用语法分类● DDL: 数据定义语言,用来 定义数据库对象(数据库、表、字段)● DML: 数据操作语言,用来对数据库表中的数据进行增删改● DQL: 数据查询语言,用来 查询 数据库中表的记录● DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限DDL指的是数据定义语言(Data Definition Language),它是用来定义数据库结构和布局的语言。通常用于创建和修改数据库对象,比如表、视图、索引等。DDL 包括了一些常见的命令,比如CREATE。原创 2024-06-22 06:41:39 · 1093 阅读 · 0 评论 -
MySQL事务的ACID四大特性以及实践问题
解决了脏读、不可重复读,快照读(普通查询,读取历史数据)使用MVCC解决了幻读,当前读(读取最新提交数据)通过间隙锁解决幻读(lock in share mode、for update、update、detete、insert),间隙锁在可重复读下才生效。而执行 insert 操作的时候,由于记录锁(Record Lock)只能锁住已经存在的记录,为了避免插入新记录,需要依赖间隙锁(Gap Lock)。读已提交:读操作不加锁,写操作加排他锁,解决了脏读。幻读其实可以看作是不可重复读的一种特殊情况,原创 2024-06-19 08:29:33 · 861 阅读 · 1 评论 -
MySQL:多表查询(全面详解)
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。原创 2024-06-18 08:41:53 · 3723 阅读 · 14 评论 -
MySQL DDL DML DQL DCL 通用语法
CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [COLLATE 排序规则 ];DROP DATABASE [ IF EXISTS ] 数据库名;USE 数据库名;注意事项UTF8字符集长度为3字节,有些符号占4字节,所以推荐用utf8mb4字符集。原创 2024-06-18 08:28:45 · 820 阅读 · 0 评论 -
Docker 安装 MySQL5.7 和 MySQL8
将宿主机的 /app/mysql57/conf 目录挂载到容器的 /etc/mysql/conf 目录,用于存储 MySQL 的配置文件。:将宿主机的 /app/mysql57/data 目录挂载到容器的 /var/lib/mysql 目录,用于存储 MySQL 数据库文件。:将宿主机的 /app/mysql57/log 目录挂载到容器的 /var/log/mysql 目录,用于存储 MySQL 日志文件。mysql:5.7:指定所使用的 MySQL 的镜像和版本。:设置容器中的时区为亚洲/上海时区。原创 2024-06-16 09:13:07 · 915 阅读 · 4 评论 -
MySQL 数据类型剖析
整数类型一共有 5 种,包括TINYINTSMALLINTMEDIUMINT和BIGINT。它们的区别如下表所示:浮点数和定点数类型的特点是可以 处理小数 ,你可以把整数看成小数的一个特例。因此,浮点数和定点 数的使用场景,比整数大多了。MySQL支持的浮点数类型,分别是 FLOAT、DOUBLE、REAL。FLOAT 表示单精度浮点数;DOUBLE 表示双精度浮点数;问题1:FLOAT 和 DOUBLE 这两种数据类型的区别是啥呢?FLOAT 占用字节数少,取值范围小;原创 2024-06-15 17:46:13 · 767 阅读 · 3 评论 -
MySQL浓缩下来也就这么多
HAVING 在 GROUP BY 之后,可以使用分组字段和分组中的计算函数,对分组的结果集进行筛选,这个功能是 WHERE 无法完成的。因为 WHERE 可以先筛选, 用一个筛选后的较小数据集和关联表进行连接,这样占用的资源比较少,执行效率也比较高。HAVING 则需要先把结果集准备好,也就是用未被筛选的数据集进行关联,然后对这个大的数据集进行筛选,这样占用的资源就比较多,执行效率也较低。这样,我们就既利用了 WHERE 条件的高效快速,又发挥了 HAVING 可以使用包含分组统计函数的查询条件的优点。原创 2024-06-14 09:26:39 · 672 阅读 · 6 评论