1. 数据库基础
1.1 什么是数据库
数据库(Database,简称 DB),简单来说就是长期存储在计算机内、有组织、可共享的数据集合。它就像一个电子化的文件柜,用户可以对文件中的数据进行新增、查询、更新、删除等操作。
与普通的 Excel 表格或文本文件相比,数据库具有以下核心优势:
- 数据结构化:数据按照特定的模型组织,便于高效查询和管理
- 数据共享性高:多个用户可以同时访问和操作数据
- 数据独立性高:数据的存储结构与应用程序相互解耦
- 数据冗余度低:避免重复存储,节省存储空间
- 数据安全性高:提供完善的权限控制和数据保护机制
1.2 主流数据库
| 数据库 | 开发商 | 特点 | 适用场景 |
|---|---|---|---|
| MySQL | Oracle(原 MySQL AB) | 开源免费、性能优异、生态完善、跨平台 | Web 应用、互联网项目、中小企业系统 |
| Oracle | Oracle 公司 | 功能强大、稳定性高、企业级特性丰富 | 大型企业、金融、电信等核心业务系统 |
| SQL Server | 微软 | 与.NET 生态深度集成、易用性好 | Windows 平台、企业级管理系统 |
| PostgreSQL | 加州大学伯克利分校计算机系 | 功能全面、扩展性强、支持复杂查询 | 学术研究、复杂业务系统、数据仓库 |
| SQLite | D. Richard Hipp | 轻量级嵌入式、零配置、单文件存储 | 移动端、嵌入式设备、小型桌面应用 |
MySQL 的地位
MySQL 是世界上最受欢迎的开源数据库,在 DB-Engines 排行榜中长期位居第二,在开源数据库中排名第一。Facebook、Uber、Airbnb、淘宝等众多知名互联网公司都在大规模使用 MySQL。
1.3 基本使用
1.3.1 MySQL安装
网上有很多的关于MySQL的下载安装教程,大家可以自行去网上搜索安装教程,这里就不做介绍了。
1.3.2 连接 MySQL 服务器
打开命令提示符,输入以下命令:
bash
mysql -u root -p
回车后输入密码即可登录。
常用连接参数:
-u:指定用户名-p:使用密码登录-h:指定主机地址(默认localhost)-P:指定端口号(默认 3306)-D:指定默认数据库
完整示例:
bash
mysql -h 127.0.0.1 -P 3306 -u root -p
1.3.3 Windows 下 MySQL 服务器管理
通过服务管理器
- 按下
Win + R,输入services.msc打开服务管理器 - 找到 MySQL 服务(名称如 MySQL80)
- 右键可进行启动、停止、重启等操作
- 在属性中可设置启动类型(自动 / 手动 / 禁用)

1.3.4 服务器、数据库、表的关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 数据库是数据库服务器下的逻辑数据容器,作用是按业务类型对数据进行分类隔离。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
- 表是数据库中数据存储的基本单元,以二维表格的形式组织数据

1.3.5 使用案例
- 创建数据库
sql
create database helloworld;
- 使用数据库
sql
use helloworld;
- 创建数据库表
sql
create table student(
id int,
name varchar(32),
gender varchar(2)
);
- 表中插入数据
sql
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
- 查询表中的数据
sql
select * from student;
1.4 MySQL架构
MySQL 采用了经典的分层架构设计,整体可以分为三大层:连接层、服务层和存储引擎层。
各层详细说明
第一层:连接层
连接层负责处理客户端的连接请求,主要工作包括:
- 连接处理:接收 TCP 连接,为每个连接分配线程
- 身份认证:验证用户名、密码、主机地址
- 权限校验:检查用户是否具备操作权限
- 连接池管理:复用连接,减少创建销毁开销
第二层:服务层(核心层)
这是 MySQL 的核心功能层,所有核心逻辑都在这里实现:
- SQL 接口(SQL Interface)
- 接收客户端发送的 SQL 语句
- 支持 DML、DDL、存储过程、视图、触发器等
- 解析器(Parser)
- 对 SQL 语句进行词法分析和语法分析
- 生成语法解析树
- 检查 SQL 语法是否正确
- 优化器(Optimizer)
- 根据解析树生成多种执行计划
- 基于成本估算选择最优执行计划
- 决定使用哪些索引、表的连接顺序等
- 执行器(Executor)
- 按照执行计划调用存储引擎接口
- 完成数据的增删改查操作
- 系统管理与工具组件
- 包括备份恢复、安全管理、复制、集群等功能
第三层:存储引擎层
存储引擎是 MySQL 最具特色的设计,采用插件式架构,不同的存储引擎负责数据的实际存储和读取。
- 服务层通过统一的 API 与存储引擎交互
- 各种存储引擎实现了相同的接口规范
- 用户可以根据业务需求选择合适的存储引擎
- 不同的表可以使用不同的存储引擎
第四层:文件系统层
MySQL 的数据最终以文件形式存储在磁盘上,主要包括:
- 数据文件:存放表数据和索引
- 日志文件:binlog、redo log、undo log、error log 等
- 配置文件:my.ini(Windows)或 my.cnf(Linux)
- 套接字文件:本地连接使用

1.5 SQL分类
-
DDL(数据定义语言) Data Definition Language ,用于定义数据库对象(数据库、表、索引等)的结构。
常用语句:
create:创建数据库、表、索引等;alter:修改数据库对象结构;drop:删除数据库、表等 -
DML(数据操纵语言) Data Manipulation Language ,用于对数据表中的数据进行增删改操作。
常用语句:
insert:插入数据;update:更新数据;delete:删除数据 -
DQL(数据查询语言) Data Query Language ,用于查询数据。
核心语句:
select:查询数据 -
DCL(数据控制语言) Data Control Language ,用于管理用户权限和事务控制。
常用语句:
grant:授予用户权限;revoke:撤销用户权限
1.6 存储引擎
存储引擎是 MySQL 中负责数据的存储和提取的底层软件组件。不同的存储引擎有不同的存储机制、索引技巧和功能特性。
MySQL 的插件式存储引擎架构是其一大特色,允许用户根据业务场景选择最适合的数据存储方式。可以这样理解:
服务层负责 SQL 解析和优化,存储引擎负责真正的数据存取。同样的 SQL,交给不同的存储引擎,底层的实现方式和性能表现可能截然不同。
查看 MySQL 支持的存储引擎:
sql
show engines;

存储引擎对比:

总结:
- MySQL是一套给我们提供数据存取的服务的网络程序
- 数据库一般指的是在磁盘或者内存中存储的特定结构组织的数据------将来在磁盘上存储的一套数据库方案
- 数据库服务------mysqld
- mysql它是数据库服务的客户端
- mysqld它是数据库服务的服务器端
- mysql本质是基于C(mysql) S(mysqld)模式的一种网络服务