
MySQL学习:
https://blog.csdn.net/2301_80220607/category_12971838.html?spm=1001.2014.3001.5482
前言:
这里是MySQL学习的第一篇,本篇主要是讲解一些MySQL的基础操作,但这并不是重点,本篇我们主要是要理解MySQL的本质是什么,它在操作系统中是以何种方式存在的,以及它的层次架构是什么。话不多说,下面我们开始今天的讲解。
注:我们下面的内容都是在Linux操作系统下进行的,所以首先需要先在Linux下安装MySQL,具体的操作流程可以去找个视频看一下
在计算机系统中,我们确实可以使用简单的文件来存储数据,但随着数据量的增长和复杂度的提高,文件存储方式暴露出诸多问题:
文件存储缺点 | 数据库解决方案 |
|---|---|
安全性问题 | 提供用户权限管理和数据加密机制 |
不利于数据查询 | 支持高效的SQL查询语言和索引机制 |
难以管理海量数据 | 优化存储结构,支持TB级数据处理 |
程序控制不便 | 提供标准API和事务管理 |
数据库按照存储介质可分为:
[虚拟图表:数据库与文件存储对比]
+---------------------+ +---------------------+
| 文件存储系统 | | 数据库系统 |
+---------------------+ +---------------------+
| - 数据分散 | | - 数据集中管理 |
| - 无统一访问接口 | | - 标准SQL接口 |
| - 安全性低 | | - 完善的权限体系 |
| - 查询效率低 | | - 高效查询优化 |
+---------------------+ +---------------------+MySQL在众多数据库产品中脱颖而出,下面是几种主流数据库的对比:
数据库 | 开发商 | 适用场景 | 特点 |
|---|---|---|---|
MySQL | Oracle | 电商、SNS、论坛 | 并发性好,简单SQL处理高效 |
Oracle | Oracle | 大型企业级应用 | 功能全面,适合复杂业务逻辑 |
SQL Server | Microsoft | .NET生态应用 | 与Windows平台深度集成 |
PostgreSQL | 开源社区 | 各类规模应用 | 功能丰富,支持高级特性 |
SQLite | 开源 | 嵌入式设备 | 轻量级,零配置 |
H2 | Java社区 | Java嵌入式应用 | 纯Java实现,内存数据库 |
表:主流数据库产品比较
MySQL支持多种安装方式:
yum install mysql-server 或源码编译安装
brew install mysql
基本连接命令:
mysql -h 127.0.0.1 -P 3306 -u root -p连接参数说明:
-h:主机地址,默认localhost
-P:端口号,默认3306
-u:用户名
-p:提示输入密码

在Windows系统中,可以通过服务管理器(services.msc)来启动、停止MySQL服务。
[虚拟图表:MySQL服务管理界面]
+-----------------------------------+
| Windows服务管理器 |
+-----------------------------------+
| 名称 状态 启动类型 |
|-----------------------------------|
| MySQL57 正在运行 自动 |
| MySQL80 已停止 手动 |
| Apache 正在运行 自动 |
+-----------------------------------+
| 启动 停止 暂停 重启动 属性 |
+-----------------------------------+首先我们给出结论:MySQL本质上是一个网络服务
它可以简单的分为两部分:mysql和mysqld,其中mysql可以看作数据库服务的客户端,mysqld是数据库服务的服务器端,所以mysql实际上是基于C/S架构的网络服务
因为mysql是网络服务,所以我们可以查看到mysql的特定端口号:

-- 创建数据库
CREATE DATABASE helloworld;-- 使用数据库
USE helloworld;-- 创建学生表
CREATE TABLE student(
id INT,
name VARCHAR(32),
gender VARCHAR(2)
);
-- 插入数据
INSERT INTO student (id, name, gender) VALUES (1, '张三', '男');
INSERT INTO student (id, name, gender) VALUES (2, '李四', '女');
INSERT INTO student (id, name, gender) VALUES (3, '王五', '男');-- 查询所有数据
SELECT * FROM student;查询结果示例:
id | name | gender |
|---|---|---|
1 | 张三 | 男 |
2 | 李四 | 女 |
3 | 王五 | 男 |
MySQL采用分层架构设计,主要组件包括:
[虚拟图表:MySQL架构图]
+---------------------------------------+
| 客户端连接层 |
| (JDBC/ODBC/.NET/PHP/Python/PERL) |
+---------------------------------------+
| 服务层 |
| +---------------+ +----------------+ |
| | 连接池 | | SQL接口 | |
| | 认证/安全 | | DML/DDL/视图 | |
| +---------------+ +----------------+ |
| +---------------+ +----------------+ |
| | 查询缓存 | | 解析器 | |
| | 表缓存 | | 词法/语法分析 | |
| +---------------+ +----------------+ |
| +---------------+ |
| | 优化器 | |
| | 查询重写/执行 | |
| +---------------+ |
+---------------------------------------+
| 存储引擎层 |
| +-------+ +-------+ +-------+ |
| |InnoDB | |MyISAM | |Memory| ... |
| +-------+ +-------+ +-------+ |
+---------------------------------------+
| 文件系统层 |
| 数据文件/日志文件/索引文件 |
+---------------------------------------+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, COMMIT |
表:SQL语言分类及常用命令
存储引擎是MySQL中负责数据的存储、索引和检索的核心组件。MySQL采用插件式存储引擎架构,允许用户根据需要选择最适合的引擎。
SHOW ENGINES;引擎 | 事务支持 | 锁粒度 | 外键支持 | 适用场景 |
|---|---|---|---|---|
InnoDB | 支持 | 行级锁 | 支持 | 事务型应用 |
MyISAM | 不支持 | 表级锁 | 不支持 | 读密集型应用 |
Memory | 不支持 | 表级锁 | 不支持 | 临时数据缓存 |
Archive | 不支持 | 行级锁 | 不支持 | 日志归档 |
表:MySQL存储引擎比较
[虚拟图表:存储引擎性能对比]
+-------------------+-----------+-----------+
| 存储引擎 | 读取性能 | 写入性能 |
+-------------------+-----------+-----------+
| InnoDB | ★★★★☆ | ★★★★☆ |
| MyISAM | ★★★★★ | ★★★☆☆ |
| Memory | ★★★★★ | ★★★★★ |
| Archive | ★★☆☆☆ | ★★★★☆ |
+-------------------+-----------+-----------+总之mysql的学习还是非常重要的,这篇的重点还是入门,对于数据库的具体操作后面还会有更详细的讲解,这篇我们主要要理解mysql的架构
本篇笔记:
