1、逻辑架构剖析

1.1 服务器处理客户端请求

  • 首先MySQL是典型的C/S架构,即Client/Server架构,服务器端程序使用的mysqld。

  • 不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)

  • 那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?这里以查询请求为例展示:

    Read more »

1、用户管理

  • MySQL用户可以分为普通用户和root用户。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理限;普通用户只拥有被授予的各种权限。
  • MySQL提供了许多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器、创用户、删除用户、密码管理和双限管拜等内容。
  • MySQL数据库的安全性需要通过账户管理来保证。
    Read more »

1、MySQL8的主要目录结构

1
2
3
4
5
root@f0796ad75d78:/# find / -name mysql
/etc/mysql
/usr/lib/mysql
/usr/bin/mysql
…………
Read more »

1、各级别的字符集

  • MySQL有4个级别的字符集和比较规则,分别是:

    • 服务器级别。
    • 数据库级别。
    • 表级别。
    • 列级别。
Read more »

1、概述

  • MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。
    Read more »

1、概述

  • 在实际开发中,我们经常会遇到这样的情况:有2个或者多个相互关联的表,如商品信息和库存信息分别存放在2个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时在库存表中添加一条库存记录。
  • 这样一来,我们就必须把这两个关联的操作步骤写到程序里面,而且要用事务包裹起来,确保这两个操作成为一个原子操作,要么全部执行,要么全部不执行。要是遇到特殊情况,可能还需要对数据进行手动维护,这样就很容易忘记其中的一步,导致数据缺失。
  • 这个时候,咱们可以使用触发器。你可以创建一个触发器,让商品信息数据的插入操作自动触发库存数据的插入操作。这样一来,就不用担心因为忘记添加库存数据而导致的数据缺失了。
  • MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。
    Read more »

1、变量

  • 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。
  • 在MySQL数据库中,变量分为系统变量以及用户自定义变量
    Read more »

1、概述

  • MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程 序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可。

存储过程概述

  • 含义:存储过程的英文是Stored Procedure。它的思想很简单,就是一组经过预先编译的SQL语句的封装。

  • 执行过程:存储过程预先存储在MySQL服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列SQL语句全部执行。

  • 好处:

    • 简化操作,提高了sql语句的重用性,减少了开发程序员的压力。
    • 减少操作过程中的失误,提高效率。
    • 减少网络传输量(客户端不需要把所有的 SQL 语句通过网络发给服务器)。
    • 减少了SQL语句暴露在 网上的风险,也提高了数据查询的安全性。
      Read more »

1、概述

  • 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中 存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。

  • 为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑:

    • 实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录。
    • 域完整性(Domain Integrity) :例如:年龄范围0-120,性别范围“男/女”。
    • 引用完整性(Referential Integrity) :例如:员工所在部门,在部门表中要能找到这个部门。
    • 用户自定义完整性(User-defined Integrity) :例如:用户名唯一、密码不能为空等,本部门经理的工资不得高于本部门职工的平均工资的5倍。
  • 约束是表级的强制规定。可以在创建表时规定约束(通过CREATE TABLE语句),或者在表创建之后通过ALTER TABLE语句规定约束。

    Read more »