文章目录
- 一、数据库基础
-
- [1. 为什么使用数据库](#1. 为什么使用数据库)
- [2. 主流数据库](#2. 主流数据库)
- [二、MySQL的安装 和 配置](#二、MySQL的安装 和 配置)
-
- [1. 安装教程](#1. 安装教程)
- [2. mysql-server安装包 含MySQL客户端和服务端](#2. mysql-server安装包 含MySQL客户端和服务端)
- [3. 对MySQL服务端的配置文件进行配置](#3. 对MySQL服务端的配置文件进行配置)
- 三、MySQL的基本使用
-
- [1. 登录MySOL客户端,并与MySQL服务器建立连接](#1. 登录MySOL客户端,并与MySQL服务器建立连接)
- [2. 服务器,数据库,表关系](#2. 服务器,数据库,表关系)
- 四、MySQL架构
- 五、存储引擎
- 六、SQL操作分类
一、数据库基础
1. 为什么使用数据库
存储数据用文件就可以了,为什么还要弄个数据库?
(1)文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
(2)数据库存储介质:
- 磁盘
- 内存
为了解决上述问题,专家们设计出更加利于管理数据的东西 ------ 数据库,它能更有效的管理数据。
2. 主流数据库
- SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
- MySQL: 世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
- PostgreSQL: 加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
- SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
- H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
二、MySQL的安装 和 配置
1. 安装教程
我的云服务器是 Ubuntu24.04,于是参照 CSDN网站上 Albert Edison博主的文章: 【2025最新】Ubuntu22.04 安装 MySQL8.0 教程,安装了 MySQL8.0
使用root用户登录MySQL客户端即可(首次登录无需密码),进入MySQL客户端后修改登录密码,此过程完全参照上述链接中的博客内容即可。
后续直接以root用户登录进行MySQL的操作学习,当然使用root用户操作权限过高,是存在安全隐患,等操作熟练后,补充用户管理的知识,切换到普通用户进行操作。
2. mysql-server安装包 含MySQL客户端和服务端
标准的mysql-server安装包是包含了服务端核心程序以及一个基础的命令行客户端工具。用户通过客户端(如mysql命令行或图形化工具)发送SQL指令,这些指令通过网络或本地套接字传输至MySQL服务进程(mysqld),由服务端执行具体的数据库创建、修改、查询等操作,并将结果返回给客户端。
MySQL客户端:mysql
MySQL服务端:mysqld

3. 对MySQL服务端的配置文件进行配置
MySQL8.0 的配置文件在 /etc/mysql/mysql.conf.d/ 目录文件下:
bash
ubuntu@VM-0-4-ubuntu:~$ ls /etc/mysql/mysql.conf.d
mysql.cnf mysqld.cnf
一共有两个配置文件,一个是 mysql.cnf 是MySQL客户端 的配置文件 , mysqld.cnf 是MySQL服务端(mysqld) 的配置文件
MySQL客户端只是一个命令行客户端工具,负责在用户 和 MySQL服务端间进行数据传输,所以它的配置文件一般无需修改,使用默认即可
- 接下来对 MySQL服务端(mysqld) 的配置文件 mysqld.cnf 进行配置:


三、MySQL的基本使用
1. 登录MySOL客户端,并与MySQL服务器建立连接
MySOL服务端默认运行在本地的3306端口(在它的配置文件中有相关信息)
登录MySOL客户端时,要与MySOL服务端建立连接
- 在bash命令行输入:
bash
mysql -h 127.0.0.1 -P 3306 -u root -p
以 root 身份登录MySOL客户端,并与本地 3306端口的MySQL服务器建立连接,这样用户在MySOL客户端的图形化界面输入SQL语句时,MySOL客户端就能把语句传递给服务端!
还可以这样输入(省略ip和端口号,MySOL客户端默认会与本地 3306端口的MySQL服务器建立连接):
bash
mysql -u root -p
- 输出内容:
(输入密码后,进入MySOL客户端,后续用户在MySOL客户端的命令行输入SQL语句)

2. 服务器,数据库,表关系
-
所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多
个数据库,一般开发人员会针对每一个应用创建一个数据库。
-
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库 和 表的关系如下:

用户通过客户端(如mysql命令行或图形化工具)发送SQL指令,这些指令通过网络或本地套接字传输至MySQL服务进程(mysqld),由服务端执行具体的数据库创建、修改、查询等操作,并将结果返回给客户端。
- 创建数据库,实际就是在 /var/lib/mysql 目录下,创建一个文件夹
bash
# 查看MySQL服务端(mysqld)的配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf


创建一个名为 test_db 的数据库,/var/lib/mysql 目录下 就会新增一个名为 test_db 的文件夹

- 在数据库下创建表格,实际就是在 数据库对应的目录文件下,创建文件

四、MySQL架构
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。 各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

五、存储引擎
存储引擎是 数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是 插件式存储引擎,支持多种存储引擎。
- 查看存储引擎的指令
bash
show engines;

- 存储引擎对比

MySQL 8.0 目前最常用的存储引擎主要是 InnoDB 和 MyISAM,其中InnoDB是默认存储引擎,也是绝大多数业务场景的首选
- 最常用的 InnoDB vs MyISAM 核心差异对比
| 对比项 | InnoDB | MyISAM |
|---|---|---|
| 事务支持 | ✅ 支持完整ACID事务 | ❌ 不支持事务 |
| 锁机制 | 行级锁+表级锁,并发高 | 仅表级锁,并发写性能差 |
| 外键约束 | ✅ 支持 | ❌ 不支持 |
| 崩溃恢复 | ✅ 日志自动恢复 | ❌ 易损坏,修复复杂 |
| COUNT(*)性能 | 需要全表扫描,较慢 | 缓存总行数,极快 |
| 适用场景 | 核心业务、高并发读写 | 读多写少、无事务需求 |
(1)InnoDB:
- MySQL 5.5+版本的默认存储引擎,专为事务处理、高并发场景设计,核心特性包括:支持完整的ACID事务、行级锁+MVCC多版本并发控制、外键约束,依靠redo/undo日志实现崩溃后自动恢复,数据可靠性高。
- 适用场景: 几乎所有核心业务表,比如电商订单、支付流水、用户账户等对数据一致性要求高、并发读写频繁的场景。你做电池管理系统时,存储电池状态、运行数据这类核心业务表,默认用InnoDB即可。
(2)MyISAM:
- MySQL早期版本的默认存储引擎,不支持事务和外键,仅支持表级锁,优势是查询速度快、占用磁盘空间小,SELECT COUNT(*)性能极高(直接缓存总行数),原生支持全文索引。劣势是宕机后容易出现表损坏,修复复杂,并发写性能差。
- 适用场景: 仅适合读多写少、不需要事务保障的场景,比如网站访问日志统计、静态配置表、只读报表等场景,核心业务不推荐使用。
六、SQL操作分类
-
DDL【data definition language】 数据定义语言 ,用来维护存储数据的结构
代表指令: create, drop, alter
-
DML【data manipulation language】 数据操纵语言 ,用来对数据进行操作
代表指令: insert,delete,update
DML中又单独分了一个 DQL,数据查询语言,代表指令: select
- DCL【Data Control Language】 数据控制语言 ,主要负责权限管理和事务
代表指令: grant,revoke,commit