想系统入门 mysql,核心思路是:先搞懂“数据库是什么”和 sql 分类,再理解 mysql 的分层架构,最后抓住存储引擎(尤其是 innodb)的特点。下面按这个顺序帮你梳理一遍。
前言
在后端开发的世界里,数据库是绕不开的核心。我们写的业务系统产生的用户数据、订单数据、文章数据,总不能只存在程序内存里,程序一关数据就全部消失。数据库就是用来解决数据持久存储、高效查询管理的核心技术。今天就带大家梳理mysql基础知识点,从数据库概念、主流产品、mysql配置、sql分类,再到底层架构和存储引擎,一次性搞懂基础核心。
数据库基础
mysql 是一个关系型数据库管理系统,核心作用是把应用产生的数据持久化存储下来,并提供高效的增删改查(crud)能力。 它按二维表的结构组织数据(类似 excel),由多张相互关联的表组成,通过 sql 语句来操作。
sql 主要分为三类,日常开发中写的最多的是 dml:
- ddl(数据定义语言):维护库和表的结构,比如
create(创建)、drop(删除)、alter(修改)。 - dml(数据操纵语言):操作表里的真实数据,比如
insert(插入)、delete(删除)、update(修改)、select(查询)。 - dcl(数据控制语言):管理权限和事务,比如
grant(授权)、revoke(回收权限)、commit(提交事务)。
一、什么是数据库?为什么要用数据库
数据库诞生于20世纪60年代末,专门解决数据存储、查询、修改、统计这类非数值计算问题。
使用数据库能带来十大核心能力:
- 数据持久化:数据保存到磁盘,程序关闭、服务器重启数据不会丢失。
- 数据结构化:以规范格式存储,方便管理查询。
- 数据完整性:保障数据准确、不出现错乱。
- 并发控制:多人同时读写数据,保证数据不乱。
- 安全性:权限控制、数据加密,防止非法访问。
- 可扩展性:数据量上涨可以横向、纵向扩容。
- 备份恢复:数据损坏丢失可以还原。
- 查询优化:内置优化器,快速执行复杂查询。
- 事务管理:一组操作要么全部成功,要么全部失败。
- 多用户支持:支持大量用户同时操作数据。
主流数据库分类
数据库分为关系型数据库和**非关系型数据库(nosql)**两大类。
关系型数据库(二维表格模型)
- oracle:收费,性能强悍,多用于大型企业项目。
- mysql:开源免费,中小企业最常用,电商、论坛项目首选,归属于oracle。
- postgresql:开源免费,可自由修改分发。
- sql server:微软出品,和windows生态适配好。
- sqlite:超轻量,占用资源极小,多用于手机app、嵌入式设备。
💡关系型数据库核心:以行、列组成二维表格存储数据,多张表可以通过字段建立关联关系。比如学生表通过班级编号关联班级表。
非关系型数据库
- redis:键值对内存数据库,常用来做缓存,支持持久化。
- mongodb:文档型数据库,高性能,易扩展。
二、mysql基础概念:服务器、数据库、表是什么关系
很多新手容易混淆这三个概念,这里一句话理清:
- mysql数据库服务器:就是mysqld服务程序,一台机器上跑起来,可以管理n个数据库。
- 数据库(database):一个应用对应一个数据库,比如电商项目就建一个电商数据库。
- 表(table):数据库里面存放实体数据,一个库可以有多张表,比如用户表、订单表。
简单层级:计算机 → mysql服务 → 多个数据库 → 每个数据库下多张数据表。
mysql配置文件 my.ini
windows下mysql8.0配置文件默认路径:c:\programdata\mysql\mysql server 8.0\my.ini
配置文件分为多个节点:
[client]:所有客户端通用配置,设置端口、字符集[mysql]:仅mysql命令行客户端配置[mysqld]:服务端核心配置,端口3306、数据存放目录datadir、字符集character‑set‑server、默认存储引擎default‑storage‑engine=innodb、各类日志配置。
✨修改配置文件注意:修改完配置,必须重启mysql服务;如果修改数据目录,要把原data文件夹完整复制到新路径。
三、mysql客户端工具,三种常用选择
mysql是c/s架构:客户端发送请求 → mysql服务端处理 → 返回结果。客户端有命令行也有可视化工具。
- mysql命令行(自带)
终端直接连接:
mysql -uroot -p
输入密码就可以写sql,适合熟悉命令行的开发者。
- mysql workbench
- oracle官方免费可视化工具,图形化操作,分为数据库列表区、sql编辑区、结果显示区。
- navicat lite
- 学习强烈推荐,免费轻量。新建连接填写主机
localhost、端口3306、账号root、密码,测试连接成功后,就可以编写sql操作数据库。
- 学习强烈推荐,免费轻量。新建连接填写主机
📌小知识点:mysql通信属于c/s架构,客户端需要安装软件;而我们平时浏览网页属于b/s浏览器服务器架构,浏览器就是客户端,不需要额外安装程序。
四、sql语言三大分类
sql全称结构化查询语言,专门操作关系数据库,分为ddl、dml、dcl。
| 分类 | 全称 | 作用 | 核心命令 |
|---|---|---|---|
| ddl | 数据定义语言 | 维护数据库、表结构 | create创建、drop删除、alter修改 |
| dml | 数据操纵语言 | 操作表里真实数据 | insert插入、delete删除、update修改、select查询 |
| dcl | 数据控制语言 | 权限、事务管理 | grant授权、revoke回收权限、commit提交事务 |
日常开发写的最多的就是dml,也就是增删改查crud。
五、mysql整体架构
mysql是分层架构,从外到内分为四层:
- 连接层:连接池,处理客户端连接、身份认证、线程复用,限制最大连接数。
- 服务层:sql接口、解析器(解析sql语法)、优化器(生成最优执行计划)、缓存、服务管理组件。sql在这里完成语法校验、逻辑优化。
- 存储引擎层:可插拔架构,真正负责数据读写,不同引擎有不同特性。
- 文件系统层:磁盘上真实的文件,数据文件、索引文件、日志文件(错误日志、慢查询日志、binlog等)。
⚠️存储引擎是插件式,不是数据库,是表的属性,一张表选定一个存储引擎。
六、存储引擎怎么选?myisam vs innodb
执行show engines;就可以查看当前mysql支持的全部存储引擎。mysql8.0默认存储引擎是innodb。
| 特性 | myisam | innodb(默认) | memory |
|---|---|---|---|
| 事务支持 | ❌不支持 | ✅支持事务 | ❌ |
| 锁粒度 | 表锁,整张表锁定 | 行锁,只锁被修改行 | 表锁 |
| 外键 | 不支持 | 支持 | 不支持 |
| mvcc多版本并发 | 无 | 支持 | 无 |
| 存储位置 | 磁盘 | 磁盘 | 内存,重启数据丢失 |
使用场景建议
- innodb(绝大多数业务首选)
- 支持事务、行级锁、外键、mvcc,数据安全,适合业务系统,电商、后台管理系统全部用它。
- myisam
- 不支持事务,查询速度快,但是崩溃容易丢数据,现在新项目很少使用。
- memory
- 全部数据放在内存,速度极快,服务器重启数据全部清空,适合临时数据。
七、总结
- 数据库解决数据持久存储、并发访问、安全备份的问题,分为关系型和非关系型。
- mysql是c/s架构,分清服务、数据库、表三级层级,my.ini是核心配置文件。
- 客户端可以使用命令行、workbench、navicat。
- sql分为ddl结构定义、dml数据操作、dcl权限事务控制。
- mysql四层架构:连接层‑服务层‑存储引擎层‑文件层;存储引擎可插拔,innodb是默认,业务开发优先选择innodb。
到此这篇关于mysql从零搞懂数据库基础、架构与存储引擎的文章就介绍到这了,更多相关mysql数据库基础入门内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论