一、什么是数据库
存储数据使用文件就可以了 , 为什么还要弄个数据库 ?
1 . 一般的文件 , 具备读写能力 , 确实提供了数据的存储功能 ;但是没有非常好的数据管理能力 。 比如 , 有一亿行的内容 , 需要给出其中以120开头的数据 , 使用文件存储就不是很方便了 。
- 文件保存数据具有以下几个缺点:
为了解决上述问题 , 专家们设计出更加利于管理数据的东西 -- 数据库 , 能够有效的管理数据 。数据库的水平是衡量一个程序员水平的重要指标。
数据库存储介质:
- 磁盘
- 内存
数据库的存储逻辑:

1.1 mysql & mysqld

ps ajx | grep mysql
ps ajx:列出系统中几乎所有进程的详细信息,包括父进程 ID、进程组 ID 等,方便查看进程间的关系。a:显示所有用户的进程,而不仅仅是当前用户。j:以作业格式(jobs format)显示,会包含父进程 ID(PPID)、进程组 ID(PGID)等信息,方便查看进程间的关系。x:显示没有控制终端的进程(守护进程通常属于此类)
| grep mysql:通过管道将ps的输出传递给grep,筛选出包含 "mysql" 关键词的行,用于查找与 MySQL 相关的进程。- 从输出可以看到,
/usr/sbin/mysqld进程正在运行**,这是 MySQL 的服务守护进程**。
which mysql
which命令用于在系统的PATH环境变量指定的目录中,查找指定命令的可执行文件位置。- 输出
/usr/bin/mysql表示:mysql这个命令的可执行文件位于/usr/bin目录下。
which mysqld
- 输出
/usr/sbin/mysqld表示:mysqld这个命令的可执行文件位于/usr/sbin目录下。
/usr/bin/mysql是**MySQL 客户端程序(Client)。**它是一个命令行工具,供用户或应用程序连接到 MySQL 服务器,发送 SQL 指令并接收返回结果。/usr/sbin/mysqld是MySQL 服务器守护进程(Server Daemon)。它是后台运行的核心服务程序,负责管理数据库文件、处理客户端连接、执行 SQL 操作、维护数据一致性等。
| 名称 | 角色 | 核心作用 | 典型路径 |
|---|---|---|---|
mysql |
客户端(Client) | 提供交互界面,让用户 / 应用发送 SQL 命令,与服务器通信 | /usr/bin/mysql |
mysqld |
服务器(Server) | 后台守护进程,负责数据存储、查询处理、事务管理等核心服务 | /usr/sbin/mysqld |
1. MySQL 本质上是一个基于 C/S 模式的网络服务
2. 数据库一般指的是 , 在磁盘 或者 内存 中存储的特定结构组织的数据(将来在磁盘上存储的一套数据库方案)
1.2 主流数据库
市面上的数据库种类繁多,不同数据库的设计初衷、适用场景各有差异,选对数据库能让开发效率事半功倍,以下是几款主流数据库的核心特点和适用场景:
- SQL Server:微软旗下产品,是.NET 程序员的首选,适配中大型项目开发,与微软生态的兼容性极佳。
- Oracle:甲骨文的经典产品,适合超大型项目和复杂业务逻辑的场景,缺点是并发处理能力不如 MySQL。
- MySQL:目前世界上最受欢迎的数据库,现归属甲骨文,并发性能优秀,对简单 SQL 的处理效率高,缺点是不适合复杂业务逻辑,主要应用于电商、SNS、论坛等互联网项目,也是本文的核心学习对象。
- PostgreSQL:由加州大学伯克利分校开发的关系型数据库,开源免费,支持私用、商用和学术研究,支持自由修改和分发,功能扩展性强。
- SQLite:轻型嵌入式关系型数据库,遵守 ACID 原则,封装在小型 C 库中,占用资源极低,嵌入式设备中仅需几百 K 内存即可运行,广泛应用于各类嵌入式产品。
- H2:基于 Java 开发的嵌入式数据库,以类库形式存在,可直接嵌入应用项目中,适配 Java 开发的轻量级应用场景。
关系型数据库 , 使用起来会比较规范 , 相对而言 , 约束较多 , 适合磁盘级管理 , 代表产品:MySQL、PostgreSQL、Oracle、SQL Server。
非关系型数据库 : 不依赖固定表结构,支持灵活的数据模型(文档、键值、列族、图等),代表产品:MongoDB(文档型)、Redis(键值型)、HBase(列族型)、Neo4j(图型)。适合内存级管理 。
二、连接数据库
连接 MySQL 服务器的核心命令为客户端指令,通过指定主机、端口、用户名和密码实现连接,基础命令如下:
mysql -h 127.0.0.1 -P 3306 -u root -p
执行命令后,终端会提示Enter password:,输入数据库 root 账户的密码即可完成连接。
- 省略
-h 127.0.0.1时,默认连接本地服务器; - 省略
-P 3306时,默认连接 3306(MySQL 默认端口号); - 连接成功后会进入 MySQL 交互界面,指令以
;或\g结尾才会执行。 - 退出数据库使用quit

三、服务器管理
在 Windows 系统中,可通过图形化界面快速管理 MySQL 服务(启动、暂停、停止、重启),操作步骤:
- 按下
Win+R,输入services.msc,打开系统服务管理器;- 在服务列表中找到 MySQL 相关服务(如 MySQL57);
- 通过界面左侧的按钮,执行停止、暂停、重启等操作。

四、服务器 、 数据库 、 表关系
- 安装数据库服务器,本质是在机器上安装了一个数据库管理系统程序;
- 一个数据库服务器可以管理多个数据库,开发中一般为每个应用单独创建一个数据库,实现数据隔离;
- 一个数据库中可以创建多个表,表是实际存储应用实体数据的载体(如用户表、商品表、学生表)。
五、使用案例

步骤 1:创建数据库
创建名为helloworld的数据库,命令:
create database helloworld;
步骤 2:使用数据库
操作表之前,需先指定要操作的数据库,命令:
use helloworld;

步骤 3:创建数据库表
创建名为student的学生表,包含id(编号) 、name(姓名) 、gender(性别) 三个字段,命令:
create table student(
id int,
name varchar(32),
gender varchar(2)
);

步骤 4:向表中插入数据
向 student 表中插入 3 条学生数据,支持单条逐行插入,命令:
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
步骤 5:查询表中数据
查询 student 表中的所有数据,*代表查询所有字段,命令:
select * from student;

- 建立数据库 , 本质就是在 linux相对应的 /var/bin/mysql 目录下创建新目录
- 在数据库建表 , 本质是在对应的目录中创建对应的新文件
六、MySQL架构
MySQL 是一款可移植性极强的数据库,几乎能在 Unix/Linux、Windows、Mac、Solaris 等所有主流操作系统上运行,尽管不同系统的底层实现有差异,但 MySQL 能保证各平台物理体系结构的一致性。
MySQL 的整体架构从上到下可分为三大核心层,各层各司其职,协同完成数据的存储、查询和管理:
- 客户端连接层(Client Connectors):提供各类编程语言的连接接口,支持 JDBC、ODBC、.NET、PHP、Python、PERL、C API 等,实现客户端与 MySQL 服务器的通信;
- MySQL 服务层(MYSQL SERVER) :核心管理层,包含连接池、权限认证、SQL 解析、优化、缓存、存储过程 / 触发器 / 视图等功能,是 MySQL 的 "大脑",负责处理 SQL 指令的逻辑解析和执行规划;
- 存储引擎层(Pluggable Storage Engines) :MySQL 的核心特色 ------插件式存储引擎,负责数据的实际存储和读取,支持 MyISAM、InnoDB、Memory、Archive 等多种引擎,不同引擎有不同的存储和性能特点,可根据业务场景灵活选择。

七、SQL 核心分类
7.1 DDL:数据定义语言
核心作用 :维护存储数据的结构,即定义数据库、表、字段等对象的结构,指令执行后会改变数据的存储结构。
- 代表指令 :create(创建)、drop(删除)、alter(修改)
- 示例 :
create database(创建数据库)、create table(创建表)、alter table(修改表结构)。
7.2 DML:数据操纵语言
核心作用 :对表中的实际数据进行增、删、改操作,不改变数据的存储结构,仅操作数据本身。
- 代表指令 :insert(插入)、delete(删除)、update(修改)
- 示例 :
insert into(插入数据)、update ... set(修改数据)、delete from(删除数据)。
7.3 DQL:数据查询语言
DQL 是 DML 的一个独立分支,也是开发中使用频率最高的 SQL 类型
核心作用:查询表中的数据,不会对数据进行任何修改,仅做数据读取。
- 代表指令:select
- 示例 :select * from 表名(查询所有数据)、select 字段 from 表名(查询指定字段)。
7.4 DCL:数据控制语言
核心作用 :主要负责数据库权限管理 和事务管理,控制数据库的访问权限和数据操作的原子性。
- 代表指令 :grant(授予权限)、revoke(回收权限)、commit(提交事务)
- 示例 :
grant all on 数据库.* to 用户名(授予用户数据库所有权限)、commit;(提交事务)。
八、MySQL 存储引擎
存储引擎是 MySQL 的核心技术,本质是数据库管理系统存储数据、建立索引、更新 / 查询数据的技术实现方法,MySQL 的插件式设计让其支持多种存储引擎,可按需灵活切换,接下来讲解存储引擎的基础操作和核心对比。
MYSQL的核心就是插件式存储引擎,支持多种存储引擎。
查看存储引擎;
show engines;


