目录
1.数据库的基本概念
(1)数据库概念:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,是长期存储在计算机内、有组织、可共享的大量数据的集合。
(2)存储数据文件就可以了,那为什么需要数据库呢?
文件存储数据存在以下主要不足:
- 安全性隐患较突出
- 数据查询和管理效率较低
- 难以应对海量数据存储需求
- 在程序中的控制操作不够便捷
为解决这些问题,专家们开发了数据库这一工具,它能更高效地进行数据管理。
(3)数据存储介质:磁盘与内存
(4)数据库系统由服务器端和客户端两部分组成。MySQL服务器本质上是一个网络服务程序,当使用mysql命令连接时,实际上是客户端向服务器发起连接请求。成功建立连接后,客户端会将用户输入的SQL语句发送给服务器端,服务器则根据收到的SQL指令执行相应的数据操作。
-
MySQL 是数据库服务的客户端程序
-
mysqld 是数据库服务的服务器端程序
-
MySQL 本质上是一个基于 C/S(客户端/服务器)架构的网络服务
2.主流数据库
主流数据库概述
下面列举一些主流的数据库:
SQL Server
微软开发的数据库产品,深受.NET程序员青睐,适合中大型项目开发。
Oracle
甲骨文公司推出的企业级数据库,擅长处理大型项目和复杂业务逻辑,但并发性能通常不如MySQL。
MySQL
全球最流行的开源数据库(现属甲骨文公司),具有出色的并发性能,广泛应用于电商、社交网络和论坛等领域。其优势在于简单SQL查询的高效处理,但对复杂业务支持较弱。
PostgreSQL
由加州大学伯克利分校开发的关系型数据库,完全开源免费(包括私用、商用和学术研究),允许自由修改和分发。
SQLite
轻量级关系型数据库,完全兼容ACID特性。其设计目标是为嵌入式系统服务,整个数据库以小型C库形式存在,内存占用极低(仅需几百KB),已广泛应用于各种嵌入式产品。
H2
使用Java开发的嵌入式数据库,本质上是一个可直接集成到应用程序中的类库。
3.基本使用
3.1连接服务器

连接参数说明:
-h:指定MySQL服务器主机地址
-p:设置访问端口号(可通过参数变量配置,默认3306)
-u:指定登录用户名
-p:输入登录密码
注意:若不指定 -h 127.0.0.1
参数,系统默认连接本地地址。
若未设置 -P 3306
参数,系统默认使用 3306 端口。
3.2服务器管理

输入 quit
命令可退出 MySQL 服务器连接
要重启 MySQL 服务器,可以使用命令:systemctl restart mysqld
也可以分两步操作:
- 停止服务:
systemctl stop mysqld
- 启动服务:
systemctl start mysqld
3.3服务器,数据库,表关系
安装数据库服务器实际上是在计算机上部署一个数据库管理系统(DBMS)。该系统能够同时管理多个数据库,开发人员通常为每个应用程序单独创建一个数据库。
在具体应用中,数据库通过建立多个数据表来存储实体信息。
数据库服务器、数据库与数据表之间的关系可概括为:

上图说明:
DB:数据库
Client:MySQL客户端
MySQL:MySQL服务端
3.4使用案例
1.创建数据库

执行show databases;
命令后,可以看到新增的helloworld数据库已出现在列表中。

2.使用数据库

3.创建数据库表(我们可以理解为cd到对应的数据库目录当中)

4.表中插入数据

5.查询表中的数据

3.5数据逻辑存储
表格数据采用二维结构呈现,包含行和列两种维度。示例如下:

4.MySQL框架
MySQL 是一款高度可移植的数据库系统,支持包括 Unix/Linux、Windows、Mac 和 Solaris 在内的主流操作系统。尽管不同系统在底层实现上存在差异,但 MySQL 能够确保其物理体系结构在各平台间保持高度一致。

从图中可以看出,MySQL的架构主要分为以下四层:
- 连接层(Connection Layer)
- 负责处理客户端连接请求
- 包含连接池、身份验证等功能
- 典型应用场景:数据库连接管理、用户权限验证
- 示例:当Java应用通过JDBC连接MySQL时,首先会经过这一层进行账号验证
- 服务层(Server Layer)
- 核心功能层,包含查询解析、优化、执行等
- 主要组件:
- 查询解析器(SQL Parser)
- 查询优化器(Optimizer)
- 缓存(Cache)
- 处理流程示例:SELECT语句首先被解析为语法树,然后优化器选择最优执行计划
- 存储引擎层(Storage Engine Layer)
- 负责数据的存储和提取
- 支持多种存储引擎(InnoDB、MyISAM等)
- 关键功能:
- 事务处理(ACID)
- 锁机制
- 索引实现
- 应用场景:InnoDB适合需要事务支持的OLTP系统
- 文件系统层(File System Layer)
- 实际数据存储层
- 包括:
- 数据文件(.ibd)
- 日志文件(redo log)
- 配置文件
- 典型文件示例:
- ibdata1: 系统表空间文件
- ib_logfile0: 重做日志文件
各层之间通过定义良好的接口进行通信,这种分层架构使得MySQL具有很好的扩展性和灵活性。
5.SQL分类
DDL(数据定义语言)
用于定义和维护数据库结构
常用指令:CREATE
, DROP
, ALTER
DML(数据操纵语言)
用于操作数据库中的数据
常用指令:INSERT
, DELETE
, UPDATE
DQL(数据查询语言)
DML 的子分类,专门用于数据查询
核心指令:SELECT
DCL(数据控制语言)
负责权限管理和事务控制
常用指令:GRANT
, REVOKE
, COMMIT
6.存储引擎
6.1存储引擎概念
什么是存储引擎呢?
数据存储引擎是数据库管理系统的核心组件,它负责实现数据的物理存储、索引构建以及数据更新和查询等功能。
6.2查看存储引擎
执行SHOW ENGINES;
命令可查看当前数据库支持的存储引擎列表。

6.3存储引擎对比
