MySQL 基础篇(一):MySQL 必备基础知识
目录本文内容概要一、数据库基础1.1 为什么需要数据库1.2 什么是数据库1.3 主流数据库二、MySQL 数据库基本理解2.1 连接服务器2.2 MySQL 服务器、数据库、数据表的关系2.3 MySQL 的整体架构2.3.1 客户端层2.3.2 MySQL Server 层2.3.3 存储引擎层2.3.4 物理存储层2.4 MySQL的存储引擎2.5 SQL语句的分类本文内容概要本文主要介绍MySQL 学习过程中需要掌握的基础知识首先从数据库的基本概念出发了解为什么需要数据库以及常见的主流数据库随后介绍 MySQL 服务器、数据库与数据表之间的关系并从整体上认识MySQL 的体系架构以及存储引擎最后介绍SQL 语句的基本分类为后续学习数据库与数据表操作、数据增删改查、索引、事务等知识打下基础。一、数据库基础1.1 为什么需要数据库在计算机系统中数据是非常重要的资源。例如一个电商系统需要保存用户、商品、订单等数据一个学校管理系统需要保存学生、课程、成绩等数据。其中对数据的存储最简单的方式是直接将数据保存到文件中student.txt1 张三 19 计科2 李四 20 软工3 王五 21 数媒当数据量较小时使用文件保存数据并没有太大的问题。但是随着数据量不断增加以及应用程序越来越复杂仅仅依靠普通文件管理数据会变得越来越困难。数据查询困难数据修改和删除困难难以处理大量数据难以处理并发访问难以保证数据安全和可靠性当数据规模和应用程序复杂度不断增加时仅仅依靠普通文件已经难以高效、可靠地完成数据的存储、查询、修改和管理因此需要专门的数据库系统来统一管理数据。1.2 什么是数据库数据库(Database, DB)一种按照一定规则组织、存储和管理数据的集合。例如学校需要记录学生张三、李四、王五的基本信息张三 19岁 计科李四 20岁 软工王五 21岁 数媒在没有数据库的情况下程序员可以通过 C/C 等高级语言来对文件进行读写将学生信息保存到文件中。对于文件的写入操作是很容易的但是如果希望程序能够准确地读取并解析每一条学生记录就需要约定数据的组织格式。例如[姓名长度][姓名][年龄][专业长度][专业]程序按照约定好的格式对数据进行序列化和反序列化才能正确地保存和读取数据。而数据库提供一种功能把数据按照一定的结构进行组织并提供相关接口方便程序员对数据进行保存、获取、查询等功能。ID姓名年龄专业1张三19计科2李四20软工3王五21数媒1.3 主流数据库类型主流数据库特点关系型数据库MySQL开源、应用广泛Web/后端开发常见PostgreSQL功能强、SQL 标准支持较好、扩展能力强Oracle Database商业数据库大型企业场景常见Microsoft SQL Server微软生态中常见SQLite轻量、嵌入式、无需独立服务器键值数据库Redis内存数据库常用于缓存、排行榜、分布式锁等文档数据库MongoDB以文档形式存储数据模式相对灵活分布式/宽列数据库Apache Cassandra、HBase面向大规模分布式数据场景搜索/分析引擎Elasticsearch全文搜索、日志检索与分析常见二、MySQL 数据库基本理解2.1 连接服务器mysql -h 127.0.0.1 -P 3306 -u root -p-hMySQL 服务端程序的 IP 地址-PMySQL 服务端程序绑定的 Port 端口号-u以某种身份连接 MySQL 服务端-p登录的密码注意如果没有带 -h 选项默认采用 127.0.0.1 本地环回地址如果没有带 -P 选项默认采用 3306 端口号2.2 MySQL 服务器、数据库、数据表的关系我们在命令行使用的 mysql 是 MySQL 提供的客户端它用来连接 MySQL 服务器而数据库和数据表的管理均有 MySQL 服务器来管理。mysql 客户端下达对应的 SQL 语句MySQL 解析得到后进行对数据库、数据表进行相关操作。2.3 MySQL 的整体架构理解一条 SQL 语句是如何被 MySQL 接收、处理并最终完成数据读写的。MySQL 的架构可以划分为客户端层、MySQL Server 层、存储引擎层以及物理存储层。2.3.1 客户端层客户端层是用户与 MySQL Server 进行交互的入口。我们平时使用的 MySQL 命令行客户端、Navicat、DBeaver以及通过 C、Java、Python 等语言编写的应用程序本质上都属于 MySQL 的客户端。客户端首先需要与 MySQL Server 建立连接连接成功后便可以向服务器发送 SQL 请求MySQL Server 接收到请求后会对 SQL 语句进行进一步处理。2.3.2 MySQL Server 层MySQL Server 层是整个 MySQL 架构中非常重要的一部分主要负责连接管理以及 SQL 语句的解析、优化和执行。当客户端尝试连接 MySQL 时服务器首先需要处理连接请求并完成用户身份认证、权限检查等工作。连接建立以后客户端发送的 SQL 语句便会进入 SQL 处理流程。这个过程可以简单概括为SQL 语句 → 解析 → 优化 → 生成执行计划 → 执行首先MySQL 会对 SQL 语句进行词法、语法等方面的分析判断 SQL 是否符合基本语法规则并确定语句需要完成的操作。随后查询优化器会根据表结构、索引、统计信息等内容为 SQL 选择一个成本相对较低的执行方案。在基础学习阶段我们只需要理解 Server 层负责理解 SQL 并决定如何执行 SQL 即可具体的优化器原理可以在后续 SQL 优化部分继续学习。2.3.3 存储引擎层经过 Server 层处理以后真正的数据读取和写入工作还需要交给存储引擎完成。存储引擎可以理解为 MySQL 中真正负责组织、存储和访问数据的模块。MySQL 支持多种存储引擎例如 InnoDB、MyISAM、Memory 等不同存储引擎具有不同的特点。其中InnoDB 是目前 MySQL 默认并且最常用的存储引擎支持事务、行级锁、MVCC、外键等重要功能。因此后续学习 MySQL 的事务、锁、MVCC、索引以及数据持久化等内容时通常都会重点围绕 InnoDB 展开。可以通过下面的 SQL 查看当前 MySQL 支持的存储引擎SHOW ENGINES;2.3.4 物理存储层最终数据还需要真正保存到磁盘中这便涉及 MySQL 的物理存储。例如 InnoDB 中的数据和索引可以存储在.ibd等文件中MySQL 在运行过程中还会涉及各种日志和配置文件。因此从整体角度来看一条 SQL 语句的执行过程可以简单概括为客户端发送 SQL → MySQL Server 接收并解析 SQL → 优化器选择执行方案 → 调用存储引擎 → 存储引擎完成数据读写 → 数据最终保存到物理存储中。需要注意的是这里介绍的只是 MySQL 的宏观架构。实际上 InnoDB 内部还包含 Buffer Pool、锁、事务、redo log、undo log 等大量重要机制这些内容将在后续学习 MySQL 原理时进一步展开。通过这一架构我们目前只需要建立一个基本认识Server 层主要负责 SQL 的处理与执行控制而存储引擎主要负责数据真正的存储和访问。理解这个分层关系以后再学习索引、事务、锁以及 InnoDB 等内容时就能够更加清楚这些机制分别处于 MySQL 的哪个位置以及它们解决了什么问题。2.4 MySQL的存储引擎2.5 SQL语句的分类SQLStructured Query Language结构化查询语言是用于操作和管理关系型数据库的语言。根据 SQL 语句所完成的功能可以将其划分为以下几类分类全称作用常见关键字DDLData Definition Language数据定义语言用于定义和管理数据库对象CREATE、ALTER、DROPDMLData Manipulation Language数据操作语言用于对表中的数据进行增、删、改INSERT、UPDATE、DELETEDQLData Query Language数据查询语言用于查询数据库中的数据SELECTDCLData Control Language数据控制语言用于管理用户以及访问权限GRANT、REVOKE
上一篇/下一篇内容由系统自动关联
返回资讯列表 →