
💡Yupureki:个人主页
✨个人专栏:《C++》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》
🌸Yupureki🌸的简介:

目录
[1. 数据库基础](#1. 数据库基础)
[1.1 什么是数据库?](#1.1 什么是数据库?)
[1.2 为什么需要数据库?](#1.2 为什么需要数据库?)
[1.3 主流数据库](#1.3 主流数据库)
[2. 使用数据库](#2. 使用数据库)
[2.1 连接服务器](#2.1 连接服务器)
[2.2 服务器,数据库,表之间的关系](#2.2 服务器,数据库,表之间的关系)
[2.3 使用案例](#2.3 使用案例)
[3. 数据库引擎](#3. 数据库引擎)
[3.1 数据引擎概念](#3.1 数据引擎概念)
[3.2 常见的 MySQL 数据库引擎](#3.2 常见的 MySQL 数据库引擎)
1. 数据库基础
1.1 什么是数据库?
简单来说,数据库 是一个有组织的数据集合,它以电子方式存储在计算机系统中,并且可以被方便、高效地访问、管理和更新。
你可以把它想象成一个超级智能的电子仓库:
-
传统文件系统 就像一堆散落在仓库地面上的文件盒,标签混乱,找东西全靠人工翻找,而且一个人拿走了,别人就看不了。
-
数据库 则像一个配备了专业管理员、索引系统、安全门禁和自动检索机器的现代化仓库。数据被分门别类、整齐地摆放在架子上,你可以通过复杂的条件快速找到需要的数据,多人可以同时访问而不会互相干扰,还能确保数据的安全和完整。
数据库的核心是数据库管理系统(DBMS,Database Management System),它是一个软件,充当用户(或应用程序)和数据库之间的接口,负责所有数据的存储、检索、更新、安全控制等操作。
1.2 为什么需要数据库?
存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
数据库存储介质:
- 磁盘
- 内存
为了解决上述问题,专家们设计出更加利于管理数据的东西--数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。
1.3 主流数据库
关系型数据库 (Relational Database)这是目前最主流、最成熟的数据库类型。它将数据组织成我们熟悉的二维表格 形式(行和列),表与表之间可以通过共同的字段(如ID)建立关系 。它们使用SQL(结构化查询语言) 进行数据操作。
-
特点 :强调数据一致性、完整性、支持复杂查询(如多表连接)。
-
适用场景:金融系统(银行转账)、企业管理系统(ERP、CRM)、电商网站(订单、库存管理)等对数据准确性要求极高的场景。
主流产品:
-
Oracle:由甲骨文公司开发,功能极其强大,性能卓越,安全性高,是大型企业级应用的首选,但价格昂贵。
-
MySQL:开源免费(也有商业版),性能好,社区活跃,是互联网公司最流行的选择之一,常与PHP、Python配合开发Web应用。现属甲骨文公司旗下。
-
Microsoft SQL Server:微软公司开发,与Windows生态、.NET开发语言集成度高,图形化管理界面友好,深受使用微软技术栈的企业青睐。
-
PostgreSQL:功能强大的开源对象-关系型数据库,以其对SQL标准的高度兼容性、丰富的扩展性和稳定性著称,被誉为"开发者最爱",近年来发展迅猛。
-
SQLite:一个轻量级的、嵌入式的数据库,它就是一个文件,无需安装和配置,广泛用于移动应用(如Android、iOS)和桌面软件的本地存储。
而我们一般使用的是MySQL,本系列博客也是主要讲解MySQL

2. 使用数据库
2.1 连接服务器
mysql -h 127.0.0.1 -P 3306 -u root -p
- -h:后面跟要登陆MySQL主机的ip地址
- -P:后面跟MySQL服务器的端口号
- -u:后面跟要登陆的账户
- -p:表明要输入密码
注意:
一开始以root账号登陆MySQL时是不需要输入密码的,但是到后面要设置密码
登陆后:

2.2 服务器,数据库,表之间的关系
-
MySQL 服务器(Server)
指的是运行着的 MySQL 数据库管理系统(DBMS)实例 。它是一个后台进程(或一组进程),是一个服务器(MySQLD) ,负责监听客户端(MySQL)的连接请求、处理 SQL 语句、管理内存、控制并发访问、保证数据安全等。
-
数据库(Database)
在 MySQL 中,数据库是一个 逻辑容器 ,用于组织和管理相关的数据对象(如表、视图、存储过程、函数等)。
每个数据库拥有独立的命名空间,不同数据库中的表可以重名而互不影响。
在 MySQL 中,"数据库"和"模式(Schema)"是等价的概念(
CREATE DATABASE和CREATE SCHEMA效果相同)。 -
表(Table)
表是数据库中存储数据的 基本结构 。它由行(记录)和列(字段)组成,每一列都有特定的数据类型和约束。
数据最终是以行记录的形式存储在表中。一个数据库通常包含多张表,每张表负责存储某一类实体的数据(例如用户表、订单表)。
关系图:

2.3 使用案例
查看数据库
show databases;

创建数据库
create database 数据库名字;

使用数据库
use 数据库名字;

在数据库中创建表
create table 表名字(
......(数据类型)
);

查看表
show tables;

向表中插入数据
insert into 表名字 (表数据类型.......) values (具体值);

查看表的数据
select * from 表名字;

3. 数据库引擎
3.1 数据引擎概念
数据库引擎(也称为存储引擎)是数据库管理系统(DBMS)中负责数据存储、检索、更新和管理的核心软件模块。它定义了数据在磁盘或内存中的存储方式、索引结构、事务支持、锁定机制以及并发控制等底层实现细节。
在 MySQL 中,采用了插件式存储引擎架构,这意味着你可以根据不同的业务需求,为表选择不同的存储引擎,甚至动态加载新的引擎。
3.2 常见的 MySQL 数据库引擎
| 引擎名称 | 主要特点 | 适用场景 |
|---|---|---|
| InnoDB | 默认引擎,支持事务(ACID)、行级锁、外键、崩溃恢复。 | 需要高并发、事务完整性、数据一致性要求高的系统(如电商、金融)。 |
| MyISAM | 不支持事务,表级锁,读取速度快,占用空间小。 | 以查询为主、极少更新、不需要事务支持的应用(如数据仓库、日志记录)。 |
| MEMORY | 数据全部存储在内存中,读写极快,但重启后数据丢失。 | 临时表、缓存、会话管理等对速度要求极高且可丢失的数据。 |
| CSV | 数据以逗号分隔的文本文件存储,便于与其他应用交换数据。 | 数据导入/导出、与电子表格软件交互。 |
| Archive | 仅支持插入和查询(不支持更新/删除),使用 zlib 压缩,节省空间。 | 日志归档、历史数据存储。 |
| Blackhole | 写入的数据会被丢弃,但会正常记录 binlog,常用于复制架构中的分发器。 | 数据复制过滤、性能测试。 |
| Federated | 不存储数据,远程访问其他 MySQL 服务器的表。 | 分布式查询、数据整合。 |
| Merge | 将多个 MyISAM 表合并为一个逻辑表。 | 数据分区、归档查询。 |
| NDB (Cluster) | 内存集群引擎,支持高可用、分布式、无共享架构。 | 电信、实时应用等高可用、高吞吐场景。 |
注意 :不同 MySQL 版本和发行版支持的引擎可能略有差异,可通过
SHOW ENGINES查看当前环境支持的所有引擎。一般MySQL中绝大多数场景用的引擎都是InnoDB
