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
[虚拟图表:数据库与文件存储对比] +---------------------+ +---------------------+ | 文件存储系统 | | 数据库系统 | +---------------------+ +---------------------+ | - 数据分散 | | - 数据集中管理 | | - 无统一访问接口 | | - 标准SQL接口 | | - 安全性低 | | - 完善的权限体系 | | - 查询效率低 | | - 高效查询优化 | +---------------------+ +---------------------+
二、主流数据库产品对比
MySQL在众多数据库产品中脱颖而出,下面是几种主流数据库的对比:
数据库 | 开发商 | 适用场景 | 特点 |
---|---|---|---|
MySQL | Oracle | 电商、SNS、论坛 | 并发性好,简单SQL处理高效 |
Oracle | Oracle | 大型企业级应用 | 功能全面,适合复杂业务逻辑 |
SQL Server | Microsoft | .NET生态应用 | 与Windows平台深度集成 |
PostgreSQL | 开源社区 | 各类规模应用 | 功能丰富,支持高级特性 |
SQLite | 开源 | 嵌入式设备 | 轻量级,零配置 |
H2 | Java社区 | Java嵌入式应用 | 纯Java实现,内存数据库 |
表:主流数据库产品比较
三、MySQL安装与基本操作
3.1 安装MySQL
MySQL支持多种安装方式:
Linux:
yum install mysql-server
或源码编译安装Windows:下载MSI安装包图形化安装
MacOS:使用Homebrew
brew install mysql
3.2 连接MySQL服务器
基本连接命令:
mysql -h 127.0.0.1 -P 3306 -u root -p
连接参数说明:
-h
:主机地址,默认localhost
-P
:端口号,默认3306
-u
:用户名
-p
:提示输入密码
3.3 服务管理
在Windows系统中,可以通过服务管理器(services.msc)来启动、停止MySQL服务。
[虚拟图表:MySQL服务管理界面] +-----------------------------------+ | Windows服务管理器 | +-----------------------------------+ | 名称 状态 启动类型 | |-----------------------------------| | MySQL57 正在运行 自动 | | MySQL80 已停止 手动 | | Apache 正在运行 自动 | +-----------------------------------+ | 启动 停止 暂停 重启动 属性 | +-----------------------------------+
四、什么是数据库
首先我们给出结论:MySQL本质上是一个网络服务
它可以简单的分为两部分:mysql和mysqld,其中mysql可以看作数据库服务的客户端,mysqld是数据库服务的服务器端,所以mysql实际上是基于C/S架构的网络服务
因为mysql是网络服务,所以我们可以查看到mysql的特定端口号:
五、数据库基本操作实战
5.1 创建和使用数据库
-- 创建数据库
CREATE DATABASE helloworld;
-- 使用数据库
USE helloworld;
4.2 创建表并插入数据
-- 创建学生表
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 查询数据
-- 查询所有数据
SELECT * FROM student;
查询结果示例:
id | name | gender |
---|---|---|
1 | 张三 | 男 |
2 | 李四 | 女 |
3 | 王五 | 男 |
五、MySQL架构解析
MySQL采用分层架构设计,主要组件包括:
[虚拟图表: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 查看存储引擎
SHOW ENGINES;
7.3 主流存储引擎对比
引擎 | 事务支持 | 锁粒度 | 外键支持 | 适用场景 |
---|---|---|---|---|
InnoDB | 支持 | 行级锁 | 支持 | 事务型应用 |
MyISAM | 不支持 | 表级锁 | 不支持 | 读密集型应用 |
Memory | 不支持 | 表级锁 | 不支持 | 临时数据缓存 |
Archive | 不支持 | 行级锁 | 不支持 | 日志归档 |
表:MySQL存储引擎比较
[虚拟图表:存储引擎性能对比] +-------------------+-----------+-----------+ | 存储引擎 | 读取性能 | 写入性能 | +-------------------+-----------+-----------+ | InnoDB | ★★★★☆ | ★★★★☆ | | MyISAM | ★★★★★ | ★★★☆☆ | | Memory | ★★★★★ | ★★★★★ | | Archive | ★★☆☆☆ | ★★★★☆ | +-------------------+-----------+-----------+
八、总结
总之mysql的学习还是非常重要的,这篇的重点还是入门,对于数据库的具体操作后面还会有更详细的讲解,这篇我们主要要理解mysql的架构
本篇笔记:
创作不易,还望各位大佬点赞支持!!!