【MySQL基础】MySQL基础:MySQL基本操作与架构
MySQL学习:
https://blog.csdn.net/2301_80220607/category_12971838.html?spm=1001.2014.3001.5482
前言:
这里是MySQL学习的第一篇,本篇主要是讲解一些MySQL的基础操作,但这并不是重点,本篇我们主要是要理解MySQL的本质是什么,它在操作系统中是以何种方式存在的,以及它的层次架构是什么。话不多说,下面我们开始今天的讲解。
注:我们下面的内容都是在Linux操作系统下进行的,所以首先需要先在Linux下安装MySQL,具体的操作流程可以去找个视频看一下
一、为什么需要数据库?在计算机系统中,我们确实可以使用简单的文件来存储数据,但随着数据量的增长和复杂度的提高,文件存储方式暴露出诸多问题:
文件存储缺点
数据库解决方案
安全性问题
提供用户权限管理和数据加密机制
不利于数据查询
支持高效的SQL查询语言和索引机制
难以管理海量数据
优化存储结构,支持TB级数据处理
程序控制不便
提供标准API和事务管理
数据库按照存储介质可分为:
磁盘数据库:数据持久化存储,如MySQL、Oracle
内存数据库:数据存储在内存中,如Redis、Memcached
代码语言:javascript复制[虚拟图表:数据库与文件存储对比]
+---------------------+ +---------------------+
| 文件存储系统 | | 数据库系统 |
+---------------------+ +---------------------+
| - 数据分散 | | - 数据集中管理 |
| - 无统一访问接口 | | - 标准SQL接口 |
| - 安全性低 | | - 完善的权限体系 |
| - 查询效率低 | | - 高效查询优化 |
+---------------------+ +---------------------+二、主流数据库产品对比MySQL在众多数据库产品中脱颖而出,下面是几种主流数据库的对比:
数据库
开发商
适用场景
特点
MySQL
Oracle
电商、SNS、论坛
并发性好,简单SQL处理高效
Oracle
Oracle
大型企业级应用
功能全面,适合复杂业务逻辑
SQL Server
Microsoft
.NET生态应用
与Windows平台深度集成
PostgreSQL
开源社区
各类规模应用
功能丰富,支持高级特性
SQLite
开源
嵌入式设备
轻量级,零配置
H2
Java社区
Java嵌入式应用
纯Java实现,内存数据库
表:主流数据库产品比较
三、MySQL安装与基本操作3.1 安装MySQLMySQL支持多种安装方式:
Linux:yum install mysql-server 或源码编译安装
Windows:下载MSI安装包图形化安装
MacOS:使用Homebrew brew install mysql
3.2 连接MySQL服务器基本连接命令:
代码语言:javascript复制mysql -h 127.0.0.1 -P 3306 -u root -p连接参数说明:
-h:主机地址,默认localhost
-P:端口号,默认3306
-u:用户名
-p:提示输入密码
3.3 服务管理在Windows系统中,可以通过服务管理器(services.msc)来启动、停止MySQL服务。
代码语言:javascript复制[虚拟图表:MySQL服务管理界面]
+-----------------------------------+
| Windows服务管理器 |
+-----------------------------------+
| 名称 状态 启动类型 |
|-----------------------------------|
| MySQL57 正在运行 自动 |
| MySQL80 已停止 手动 |
| Apache 正在运行 自动 |
+-----------------------------------+
| 启动 停止 暂停 重启动 属性 |
+-----------------------------------+四、什么是数据库首先我们给出结论:MySQL本质上是一个网络服务
它可以简单的分为两部分:mysql和mysqld,其中mysql可以看作数据库服务的客户端,mysqld是数据库服务的服务器端,所以mysql实际上是基于C/S架构的网络服务
因为mysql是网络服务,所以我们可以查看到mysql的特定端口号:
五、数据库基本操作实战5.1 创建和使用数据库代码语言:javascript复制-- 创建数据库
CREATE DATABASE helloworld;代码语言:javascript复制-- 使用数据库
USE helloworld;4.2 创建表并插入数据代码语言:javascript复制-- 创建学生表
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, '王五', '男');4.3 查询数据代码语言:javascript复制-- 查询所有数据
SELECT * FROM student;查询结果示例:
id
name
gender
1
张三
男
2
李四
女
3
王五
男
五、MySQL架构解析MySQL采用分层架构设计,主要组件包括:
代码语言:javascript复制[虚拟图表:MySQL架构图]
+---------------------------------------+
| 客户端连接层 |
| (JDBC/ODBC/.NET/PHP/Python/PERL) |
+---------------------------------------+
| 服务层 |
| +---------------+ +----------------+ |
| | 连接池 | | SQL接口 | |
| | 认证/安全 | | DML/DDL/视图 | |
| +---------------+ +----------------+ |
| +---------------+ +----------------+ |
| | 查询缓存 | | 解析器 | |
| | 表缓存 | | 词法/语法分析 | |
| +---------------+ +----------------+ |
| +---------------+ |
| | 优化器 | |
| | 查询重写/执行 | |
| +---------------+ |
+---------------------------------------+
| 存储引擎层 |
| +-------+ +-------+ +-------+ |
| |InnoDB | |MyISAM | |Memory| ... |
| +-------+ +-------+ +-------+ |
+---------------------------------------+
| 文件系统层 |
| 数据文件/日志文件/索引文件 |
+---------------------------------------+六、SQL语言分类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存储引擎详解7.1 什么是存储引擎?存储引擎是MySQL中负责数据的存储、索引和检索的核心组件。MySQL采用插件式存储引擎架构,允许用户根据需要选择最适合的引擎。
7.2 查看存储引擎代码语言:javascript复制SHOW ENGINES;7.3 主流存储引擎对比引擎
事务支持
锁粒度
外键支持
适用场景
InnoDB
支持
行级锁
支持
事务型应用
MyISAM
不支持
表级锁
不支持
读密集型应用
Memory
不支持
表级锁
不支持
临时数据缓存
Archive
不支持
行级锁
不支持
日志归档
表:MySQL存储引擎比较
代码语言:javascript复制[虚拟图表:存储引擎性能对比]
+-------------------+-----------+-----------+
| 存储引擎 | 读取性能 | 写入性能 |
+-------------------+-----------+-----------+
| InnoDB | ★★★★☆ | ★★★★☆ |
| MyISAM | ★★★★★ | ★★★☆☆ |
| Memory | ★★★★★ | ★★★★★ |
| Archive | ★★☆☆☆ | ★★★★☆ |
+-------------------+-----------+-----------+八、总结 总之mysql的学习还是非常重要的,这篇的重点还是入门,对于数据库的具体操作后面还会有更详细的讲解,这篇我们主要要理解mysql的架构
本篇笔记: