
MySQL数据库成长记
文章平均质量分 95
数据为今时要务,MySQL 乃治数之利器。本专栏循阶而探,明存储、查问之法,析优化、管驭之要,期学者由此登堂,渐悟数据库之奥理也。
手握风云-
[就读于河北科技大学]
[23级 软件工程专业]
[目标:拿到一个大厂offer]
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL数据库精研之旅第十八期:存储过程,数据处理的全能工具箱(一)
本文介绍了MySQL存储过程和变量的使用。存储过程是一组预编译的SQL语句,具有封装性、可维护性和可重用性等优点,能够提高性能、确保安全性和降低耦合度,但也存在可移植性差、调试困难等缺点。文章详细说明了存储过程的创建、调用、查看和删除语法,并提供了计算平均分的示例。 第二部分讲解MySQL变量类型,包括系统变量(全局/会话)、用户自定义变量和局部变量。重点演示了变量的声明、赋值和使用方法,特别对比了用户变量和局部变量的作用域差异。 第三部分介绍SQL编程中的条件判断和参数传递。通过分数评级案例展示了IF语句原创 2025-09-28 22:24:01 · 869 阅读 · 22 评论 -
MySQL数据库精研之旅第十七期:深度拆解事务核心(下)
本文详细介绍了MySQL事务的四种隔离级别(读未提交、读已提交、可重复读、串行化),分析了各级别存在的并发问题(脏读、不可重复读、幻读)及其解决机制。重点比较了不同隔离级别在性能与安全性上的权衡,读未提交性能最高但安全性最低,串行化则完全解决并发问题但性能最差。文章还提供了查看和设置全局/会话隔离级别的SQL语法,帮助开发者根据业务需求选择合适的隔离级别。InnoDB引擎通过next-key锁在可重复读级别下有效缓解了幻读问题。原创 2025-09-06 21:20:36 · 823 阅读 · 20 评论 -
MySQL数据库精研之旅第十六期:深度拆解事务核心(上)
MySQL事务是指将一组SQL语句打包执行,要么全部成功,要么全部失败。文章通过转账案例说明事务的四大特性(ACID):原子性(全部执行或全部回滚)、一致性(数据完整性)、隔离性(并发控制)和持久性(数据落盘)。介绍了事务的基本语法(BEGIN/COMMIT/ROLLBACK)和保存点功能,以及自动提交与手动提交模式的设置方法。事务能简化编程模型,确保数据安全,是数据库操作的重要保障机制。原创 2025-09-05 22:29:37 · 1286 阅读 · 39 评论 -
MySQL数据库精研之旅第十五期:索引的 “潜规则”(下)
本文详细介绍了MySQL索引的分类与使用方法。主要内容包括:1)索引分类:主键索引、普通索引、唯一索引等7种类型及其特性;2)索引操作:自动/手动创建、查看、删除索引的方法;3)核心概念:解释了回表查询和索引覆盖的原理;4)使用建议:强调在高频查询列创建索引,同时指出过多索引会影响性能。文章配有具体SQL示例,适合开发人员掌握MySQL索引的优化技巧。原创 2025-09-02 16:56:20 · 1117 阅读 · 23 评论 -
MySQL数据库精研之旅第十四期:索引的 “潜规则”(上)
MySQL索引采用B+树数据结构,通过优化查询性能减少磁盘IO次数。索引类似于字典目录,支持快速数据定位和范围查询。InnoDB以16KB页为最小交互单元,利用页目录和二分查找提高页内查询效率。B+树非叶子节点存储索引,叶子节点存储真实数据,三层树高可支持2100万条记录查询仅需3次IO。这种设计结合局部性原理,通过缓存索引页进一步提升查询性能,是数据库高效检索的关键机制。原创 2025-08-29 23:06:32 · 776 阅读 · 43 评论 -
MySQL数据库精研之旅第十三期:吃透用户与权限管理,筑牢数据库安全第一道防线
本文介绍了MySQL数据库的用户管理和权限控制方法。主要内容包括:1)用户管理操作:查看用户、创建用户(支持IP范围限制)、修改密码和删除用户;2)权限管理:内置权限列表、授权语法(GRANT)和回收权限(REVOKE)操作。文章特别强调了在实际应用中应为不同应用创建独立用户并限制其权限范围,确保数据库安全。所有操作都配有详细语法说明和实用示例,如创建指定IP范围的用户、为特定数据库授权等。最后还提醒授权后需刷新权限才能生效。原创 2025-08-28 17:45:22 · 779 阅读 · 36 评论 -
MySQL数据库精研之旅第十二期:探秘视图,数据库中的 “虚拟表” 魔法
本文介绍了MySQL视图的概念及使用方法。视图是虚拟表,基于基础表查询生成,不存储实际数据。文章详细讲解了视图的创建语法,通过实例演示如何处理列名冲突、为视图指定别名等操作。同时说明了视图与真实表的交互方式,包括通过视图修改基础表数据的注意事项和限制条件。最后总结了视图的三大优点:简化复杂查询、提高数据安全性、实现逻辑数据独立性。通过视图可以在数据库和应用之间建立解耦层,有效应对表结构变更带来的影响。原创 2025-08-27 22:46:46 · 773 阅读 · 32 评论 -
MySQL数据库精研之旅第十一期:打造高效联合查询的实战宝典(二)
本文介绍了MySQL数据库中的高级查询技术,包括自连接、子查询、合并查询和数据插入操作。自连接部分讲解了如何通过表别名实现行转列比较;子查询涵盖了单行、多行、多列子查询及from子句用法;合并查询介绍了union和union all的区别;最后展示了如何将查询结果插入到新表中。通过具体示例演示了"比较不同课程成绩"、"查询同班同学"、"合并表数据"等典型应用场景,为复杂SQL查询提供了实用解决方案。原创 2025-08-24 22:36:39 · 1068 阅读 · 34 评论 -
MySQL数据库精研之旅第十期:打造高效联合查询的实战宝典(一)
一次查询需要从多张表中获取到数据,成为联合查询,或者叫表联合查询。在数据设计时由于范式的要求,数据被拆分到多个表中,那么要查询⼀个条数据的完整信息,就要从多个表中获取数据,如下图所示:要获取学生的基本信息和班级信息就要从学生表和班级表中获取,这时就需要使用联合查询。原创 2025-04-23 22:53:56 · 2002 阅读 · 104 评论 -
MySQL数据库精研之旅第九期:深入数据库设计的智慧迷宫
在⼀个表中出现了两个强相关的关系,而且这两个强相关关系又存在传递现象,即通过学生Id可以找到学生记录,学生记录中包含学院名,每个学院又有自己的电话和地址。关系数据库有六种范式:第⼀范式(1NF)、第⼆范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式),越高的范式数据库冗余越小。比如我们登录CSDN账号时,账号与密码可以保存在一个账号,登录成功之后,会显示自己的用户信息,一个账号对应一个用户,那我们就可以创建两张表user和account。原创 2025-04-17 15:42:31 · 1241 阅读 · 68 评论 -
MySQL数据库精研之旅第八期:玩转数据库约束
指定了唯一约束的列,该列的值在所有记录中不能重复,比如⼀个⼈的身份证号,学生的学号等。之所以要使用外键,是因为外键可以更方便地维护数据,比如上图中班级编号就可以简化为1个数字,又比如在填表过程中填到一半,系统出现了崩溃,导致数据不全。通常把主键列设置为自动增长,让数据库维护主键值,这样我们写入数据时,不用人为的去维护主键值,只需要写入业务值即可。外键约束也是对数据的一种校验,从表中使用了主表中的某个值,这个值必须存在于主表中。应用于⼀个或多个列,用于限制列中可接受的数据值,从而确保数据的完整性和准确性。原创 2025-04-15 15:27:19 · 1805 阅读 · 73 评论 -
MySQL数据库精研之旅第七期:CRUD的趣味探索(下)
可以创建⼀张与 t_recored 表结构相同的表,把去重的记录写⼊到新表中,以后查询都从新表中查,这样真实的数据不丢失,同时⼜能保证查询效率。因为*是SQL语言级别的,对于所有的数据库软件都通用,并且在MYISAM存储引擎中有一个变量记录了行数,count(*)就可以直接通过这个变量返回数据数量,效率相对来说更高。执行Delete时不加条件会删除整张表的数据,谨慎操作。AUTO_INCREMENT是自增操作,当插入一条数据时,当前列的值加1,数据库会自动帮我们维护这个值,并且这个值会被记录在数据库内部。原创 2025-04-05 20:55:10 · 976 阅读 · 59 评论 -
MySQL数据库精研之旅第六期:CRUD的趣味探索(中)
至于原因:查询结果是根据表中的列或者是根据表中列进行运算的结果,from用来确定是在哪个表里面查,先经过where条件过滤,再返回到查询列表中得到我们想要的结果。上面这条SQL语句不能有效地去限制结果集的个数,这样的查询是不安全的,因为这样查询,结果集过大有可能会把服务器的资源消耗殆尽。并且两个列的值是在同一个数据中的,不能进行跨行比较,比如王五的语文成绩不能与钱七的英语成绩进行比较。指定了排序的列,返回的结果集是针对当前排序列进行排序的结果,排序是在额外的空间中进行的(使用的是临时表的空间)。原创 2025-04-02 08:02:47 · 1363 阅读 · 55 评论 -
MySQL数据库精研之旅第五期:CRUD的趣味探索(上)
CURD是对数据库中的记录进行基本的增删改查操作:Create(创建)、Retrieve(检索)、Update(更新)、Delete(删除)。原创 2025-03-30 16:12:36 · 1356 阅读 · 66 评论 -
MySQL数据库精研之旅第四期:解锁库操作高阶技能
"ADD"表示添加,"FIRST"表示加到表的第一列,"AFTER"表示加到某一列的后面;"DROP"表示删除;前面我们讲到过,MySQL软件里面管理着很多数据库,数据库里面又管理着很多表,表里面又管理着很多数据行。"Field"是列名,"Type"是数据类型,"NULL"表示当前列是否可以为空,"Key"表示是否创建了索引,"Default"是当前列的默认值,"Extra"表示扩展信息。如果我们在可视化工具上查看,右键想要查看的表,点击“设计图”,表里面的数据行一目了然,尤其是在数据行比较多的情况下。原创 2025-03-26 21:19:32 · 1134 阅读 · 51 评论 -
MySQL数据库精研之旅第三期:数据类型背后的秘密
关于DECIMAL是如何实现精度不受损失的,其实是对一个大数每9位进行拆分,每一份用int来储存,int最大可以储存21亿的数字,再用诺干个int进行表示,而剩余的小数部分则用最小的数据类型来存储。对于文本类型和二进制类型,我们用记事本的形式打开一个Excel文档,会发现里面都是我们看不懂的一堆乱码,这就是二进制类型。我们知道,库是管理数据的最大集合,库里面有很多的数据表,表是由数据行构成的。类是⾯向对象中的概 念,对应到数据库中的概念就是实体,类中的属性对应实体中的属性。原创 2025-03-25 10:55:02 · 845 阅读 · 53 评论 -
MySQL数据库精研之旅第二期:库操作的深度探索
已有库里面的“sakila”“world”这些属于测试库,我们可以进行修改或者删除的,“information_schema”“mysql”“performance_schema”“sys”这些都属于系统库,记录的是MySQL自身信息和一些配置项,其中也包含我们的用户名和登录密码。大括号里的内容必须存在;对字符集的编码,相当于两个人用不同的语言进行交流,一个人用汉语,另一个人用英语,他们就相当于对相同的内容进行编码。如果我们再去创建一个同名称的数据库,就会发出警告,并会告诉我们警告信息该数据库已经存在。原创 2025-03-22 16:14:33 · 1269 阅读 · 57 评论 -
MySQL数据库精研之旅第一期:开启数据管理新旅程
数据库是20 世纪 60 年代末发展起来的⼀项重要技术,已经成为计算机科学与技术的一个重要分支。数据库技术主要是⽤来解决数据处理的⾮数值计算问题,数据处理的主要内容是数据的存储、查询、修改、排序和统计等。SQL(Structured Query Language)是结构化查询语⾔的简称,是⼀种数据库查询和程序设计语⾔, ⽤于存取数据以及查询、更新和管理关系数据库。MySQL语言的学习本质也是SQL语言去操作数据库,SQL相当于一个标准,不同的厂商运行不同的数据库会略微有不同的差别,但总体还是在大的框架以内。原创 2025-03-19 15:27:33 · 1125 阅读 · 56 评论