
一、Ubuntu 系统下 MySQL 的安装、校验与登录
1.1 检查 MySQL 是否已安装
在 Linux 环境中,我们可以通过which命令快速定位 MySQL 的客户端与服务端程序,判断是否完成安装:
which mysql # 查看MySQL客户端程序路径
which mysqld # 查看MySQL服务端程序路径
如果命令返回了对应的文件路径(例如/bin/mysql、/sbin/mysqld),则说明系统中已经安装了 MySQL。
除此之外,MySQL 服务端默认会监听 3306 端口,我们也可以通过端口监听状态,确认服务是否正常运行:
netstat -anp | grep 3306
正常运行时,会看到 tcp6 协议的 3306 端口处于LISTEN状态,对应的进程正是mysqld。
这里我们先明确两个基础概念:
mysql:MySQL 的客户端程序,是我们和数据库服务交互的工具mysqld:数据库服务的服务器端进程,是真正提供数据存取服务的后台程序
MySQL 本质上就是一套基于 C(客户端 mysql)/S(服务端 mysqld)模式的网络服务。
1.2 普通用户登录 MySQL
安装并启动服务后,我们通过 MySQL 客户端命令登录数据库,基础登录语法为:
mysql -u 用户名 -p
执行命令后终端会提示输入密码,输入正确密码即可进入 MySQL 交互终端。
-u:指定登录的数据库用户名-p:表示使用密码验证,注意-p和密码之间不要加空格;也可以直接写-p密码,但不推荐该写法(密码会明文显示在命令行中)
登录成功后,我们就可以在终端中执行 SQL 语句,完成数据库的各类操作。
二、实战:创建学生信息库与数据操作
我们通过一个学生信息表的简单案例,快速上手数据库的基础增查操作。
2.1 创建并进入数据库
首先创建一个独立的数据库,用来存放学生相关数据:
create database helloworld;
创建完成后,使用use命令切换到目标数据库:
use helloworld;
看到Database changed的提示,就说明已经成功进入该数据库,后续操作都会默认作用在这个库上。
2.2 创建学生数据表
接下来我们创建一张student表,存储学生的姓名、年龄、性别信息:
create table student(
name varchar(32),
age int,
gender varchar(2)
);
语句说明:
create table:属于 DDL 语句,作用是创建数据表name varchar(32):姓名字段,可变长度字符串类型,最长支持 32 个字符age int:年龄字段,整数类型gender varchar(2):性别字段,可变长度字符串类型
2.3 插入学生数据
使用insert语句向表中插入数据:
insert into student(name,age,gender) values('张三',20,'男');
执行成功后会返回Query OK, 1 row affected,表示一行数据插入完成。我们可以重复执行该语句,插入多条测试数据。
2.4 查询与退出
使用select语句查询表中的全部数据:
select * from student;
其中*代表查询表中所有字段,执行后会以表格形式返回全部学生记录。
操作完成后,输入quit或exit即可退出 MySQL 终端,回到 Linux 命令行。
三、MySQL 核心基础概念全解
很多初学者容易混淆数据库、数据库服务器、表等概念,我们结合图示把这些基础概念梳理清楚。
3.1 服务器、数据库、表的层级关系
很多人会把 “数据库” 和 “数据库服务器” 混为一谈,二者是完全不同的概念:
- 数据库(DB):是在磁盘或内存中存储的、有特定结构组织的数据集合,简单理解就是 “存放数据的仓库”,是一套持久化的数据存储方案。
- 数据库服务器:指安装在机器上的数据库管理系统程序(也就是
mysqld进程),它负责管理所有数据库,提供数据增删改查、权限控制、事务保障等能力。

一台 MySQL 服务器(一个mysqld进程)可以管理多个数据库,开发中通常会给每个业务应用创建一个独立的数据库;而一个数据库中又会创建多张数据表,用来对应业务中的不同实体(比如学生表、课程表、成绩表)。
整体层级关系为:客户端 → MySQL服务端 → 数据库 → 数据表。
3.2 为什么不用普通文件存储数据?
有人会提出疑问:普通文件也能存储数据,为什么一定要用数据库?
普通文件确实具备基础的数据存储能力,但从用户和开发者的角度,它缺乏完善、高效的数据管理能力:
- 查询效率:在文件中查找特定数据需要遍历整个文件,数据量大时效率极低;数据库可以通过索引实现秒级精准查询。
- 并发控制:多用户同时修改文件时,很容易出现数据覆盖、错乱;数据库提供了事务和锁机制,保障并发场景下的数据一致性。
- 数据约束:数据库可以定义字段类型、非空、唯一、外键等约束,从底层保证数据的合法性;普通文件无法原生支持这类校验。
- 权限管控:数据库可以精细控制不同用户的读写、修改权限;文件只能做操作系统级别的粗粒度权限控制。
- 备份与恢复:数据库提供了完善的备份、容灾、故障恢复机制;文件备份只能手动拷贝,数据出错后恢复成本极高。
3.3 SQL 语言的三大分类
SQL(结构化查询语言)是操作关系型数据库的标准语言,按照功能可以分为三大类:
- DDL(Data Definition Language,数据定义语言)
作用:维护数据的存储结构,对库、表、索引等结构对象进行创建、修改、删除。
代表指令:
create:创建数据库、数据表、索引等drop:删除数据库、数据表等alter:修改表结构、库属性等
- DML(Data Manipulation Language,数据操纵语言)
作用:对数据表中的数据进行增、删、改操作。
代表指令:
insert:插入数据delete:删除数据update:修改数据
其中DQL(Data Query Language,数据查询语言)通常被单独划分出来,专门负责数据查询,核心指令就是select,也是日常开发中最常用的 SQL 语句。
- DCL(Data Control Language,数据控制语言)
作用:负责数据库的权限管理和事务控制。
代表指令:
grant:给用户授予操作权限revoke:收回用户的操作权限commit:提交事务,持久化数据修改
3.4 存储引擎:MySQL 的底层数据内核
存储引擎是数据库管理系统中,实现数据存储、索引构建、数据更新与查询的底层技术方案。
MySQL 最核心的设计特点就是插件式存储引擎,它支持多种存储引擎,我们可以根据业务场景灵活选择,就像更换零件一样自由切换。
我们可以通过命令查看当前 MySQL 支持的所有存储引擎:
show engines;
返回结果中会展示每个引擎的支持状态、功能说明,以及是否支持事务、XA、保存点等能力。
常见的存储引擎特点:
- InnoDB:MySQL 的默认存储引擎,支持事务、行级锁、外键约束,是最通用的事务型引擎,适合绝大多数业务场景。
- MyISAM:不支持事务,仅支持表级锁,读操作速度快,适合读多写少的非事务场景。
- Memory:数据直接存储在内存中,访问速度极快,但服务重启后数据会丢失,适合做临时表、热点数据缓存。
四、MySQL 内核架构全景解析
我们通过 MySQL 的整体架构图,来理解一条 SQL 语句从客户端发出,到底经历了哪些处理环节。
整个 MySQL Server 从上到下可以分为几个核心层级:
4.1 连接池层(Connection Pool)
这是客户端请求进入 MySQL 的第一层,负责连接处理、身份认证与安全校验。
- 管理客户端的网络连接,验证用户名、密码和主机访问权限
- 负责连接复用、线程管理,避免每次请求都新建连接,提升性能
- 做基础的安全校验,比如权限初判、基础注入检测
4.2 SQL 接口与解析优化层
这一层是 MySQL 的 “处理大脑”,负责 SQL 语句的解析与优化:
- SQL Interface(SQL 接口)
接收客户端发来的 SQL 语句,支持 DML、DDL、存储过程、触发器、视图等各类 SQL 语法。 - Parser(解析器)
对 SQL 语句进行词法分析、语法分析,检查 SQL 语法是否合法,然后生成语法解析树,交给后续环节处理。 - Optimizer(优化器)
这是 MySQL 的性能核心,它会对解析后的 SQL 进行执行优化:比如选择哪个索引、表的连接顺序、如何改写 SQL 效率更高,最终生成最优的执行计划。 - Caches(缓存)
包含全局查询缓存和各引擎专属的缓存,把常用的查询结果、数据页缓存在内存中,大幅提升查询速度。(注:MySQL 8.0 版本后已移除全局查询缓存)
4.3 插件式存储引擎层
存储引擎是真正负责数据读写的底层模块,MySQL 通过插件式架构支持 InnoDB、MyISAM、Memory、Archive 等多种引擎。
不同存储引擎的实现逻辑完全不同:有的支持事务,有的不支持;有的数据持久化到磁盘,有的只存在内存中。上层的 SQL 层不关心底层用什么引擎,只需要和存储引擎的标准接口交互即可,这就是插件化架构的灵活性。
4.4 文件系统与日志层
最底层是操作系统的文件系统和各类日志文件:
- File System:数据最终会持久化存储在磁盘文件系统上,比如 Linux 的 ext4、Windows 的 NTFS,也支持 SAN、NAS 等网络存储设备。
- Logs and Files:包含各类日志和数据文件,比如二进制日志 binlog、错误日志、慢查询日志,以及 InnoDB 的 redo 日志、undo 日志,还有数据文件、索引文件等。这些文件保障了数据的持久化、故障恢复和事务安全。
4.5 服务与工具集
除了核心的 SQL 执行链路,MySQL 还提供了一整套管理工具与服务,比如备份恢复、安全管理、主从复制、数据库集群、表分区等功能,支撑数据库的日常运维与高可用部署。
以上就是 MySQL 入门的全部基础内容,从环境安装到实战操作,再到核心概念与内核架构,我们建立了完整的知识框架。后续我们会继续深入学习 SQL 进阶用法、索引原理、事务与锁机制等内容,一步步掌握 MySQL 的核心能力。
最后科普一下数据库分类:
数据库整体可以分为关系型数据库(SQL)、非关系型数据库(NoSQL) 两大体系,同时还有面向专项场景的领域数据库、融合架构的 NewSQL 等类别,下面按分类介绍主流的数据库产品。
一、关系型数据库(SQL 型)
这类数据库基于关系模型设计,以「表 - 行 - 列」的结构化方式存储数据,支持标准 SQL 语言,严格遵循 ACID 事务特性,适合数据结构稳定、要求数据强一致性的业务场景。
- MySQL
最主流的开源关系型数据库,轻量易用、生态完善,默认 InnoDB 引擎支持事务与行级锁,是 Web 后端开发的标配数据库,广泛应用于互联网、中小企业各类业务系统。 - PostgreSQL
开源的 “全功能” 关系型数据库,支持复杂查询、JSON/JSONB、地理信息、自定义类型等高级特性,并发处理能力强,常被用于数据仓库、GIS 系统、复杂业务系统。 - Oracle
老牌商业闭源数据库,功能、稳定性、安全性都属于顶级,支持海量数据与复杂企业级场景,是金融、运营商、大型国企的主流选择,但授权成本极高。 - Microsoft SQL Server
微软推出的商业关系型数据库,和 Windows 生态、.NET 技术栈深度绑定,内置丰富的报表、BI、数据分析工具,适合 Windows 平台的企业级应用。 - SQLite
轻量嵌入式文件型数据库,不需要独立的服务进程,体积只有几百 KB,直接集成在应用程序中使用。广泛用于手机 APP、桌面软件、嵌入式设备、浏览器本地存储。 - IBM DB2
IBM 推出的企业级商业数据库,主打大型机、高端服务器场景,在金融、银行等传统大型企业中应用较多,稳定性与兼容性极强。
二、非关系型数据库(NoSQL 型)
这类数据库不强制要求固定的表结构,支持灵活的数据模型,主打高并发读写、海量数据存储、横向扩展,是对传统关系型数据库的补充,适合数据结构多变、高并发的互联网场景。
1. 键值型数据库(Key-Value)
以「键 - 值」的格式存储数据,读写性能极高,结构最简单。
- Redis:最流行的内存键值数据库,支持字符串、哈希、列表、集合等多种数据结构,性能极强,常用来做缓存、会话存储、排行榜、限流、分布式锁。
- Memcached:轻量级纯内存缓存,功能比 Redis 简单,仅支持字符串键值,多用于简单的热点数据缓存。
2. 文档型数据库
以类 JSON 的文档格式存储数据,结构灵活,支持嵌套数据。
- MongoDB:最主流的文档数据库,使用 BSON(二进制 JSON)存储,无需提前定义表结构,适合数据模型不固定的场景,比如内容管理、社交应用、物联网数据。
3. 列存储数据库
以 “列” 为单位存储数据,适合海量数据的批量写入与查询,主打大数据场景。
- HBase:基于 Hadoop 生态的分布式列存数据库,支持 PB 级数据存储,适合海量日志、用户画像、历史数据归档等大数据场景。
- Cassandra:分布式高可用列存数据库,无单点故障,支持跨区域部署,适合高写入、高可用要求的场景。
4. 图数据库
专门存储「实体与实体之间的关系」,擅长处理关联数据查询。
- Neo4j:最流行的图数据库,原生图存储与图计算,适合社交关系、知识图谱、推荐系统、路径规划等强关联场景。
- NebulaGraph:国产开源高性能图数据库,支持超大规模图数据,适合企业级知识图谱、风控等场景。
三、专项领域数据库
面向特定业务场景设计的垂直领域数据库:
- 时序数据库(TSDB)
专门存储时间序列数据(带时间戳的指标数据),针对海量时序数据的写入、压缩、查询做了深度优化。
代表:InfluxDB、TDengine(国产物联网时序库)、Prometheus(监控指标存储)。
适用场景:设备监控、运维监控、物联网传感器数据、金融行情数据。 - 全文检索数据库
专门做全文索引与模糊检索,支持分词、相关性排序、复杂搜索。
代表:Elasticsearch(ES)、Solr,均基于 Lucene 引擎开发。
适用场景:站内搜索、商品搜索、日志分析、数据检索系统。 - 向量数据库
专门存储与检索高维向量数据,是 AI 大模型时代的核心基础设施,用于语义检索、知识库匹配。
代表:Milvus、Pinecone、Weaviate。
四、NewSQL 分布式关系型数据库
融合了关系型数据库的 SQL 支持、事务 ACID 特性,和 NoSQL 的分布式扩展、高可用能力,解决传统关系型数据库海量数据下的扩容瓶颈。
- TiDB:国产开源 NewSQL,完全兼容 MySQL 语法,支持水平扩展,适合高并发、海量数据的互联网业务。
- Google Spanner:谷歌自研的全球分布式 NewSQL,是分布式数据库的标杆产品。
以上就是本期内容了,感谢各位观看
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/mogreat/article/details/164453658




