【MySQL数据库基础】(二)MySQL 数据库基础从入门到上手,一篇带你吃透核心知识点!

目录
3.5 MySQL 核心 CRUD 操作,SQL 语句直接运行
4.3 存储引擎层(Pluggable Storage Engines)
5.1 DDL:数据定义语言(Data Definition Language)
5.2 DML:数据操纵语言(Data Manipulation Language)
5.3 DQL:数据查询语言(Data Query Language)
5.4 DCL:数据控制语言(Data Control Language)
前言
作为后端开发、数据开发的必备技能,MySQL 数据库的掌握程度直接决定了程序员的开发效率和项目稳定性。日常开发中用文件存储数据会遇到安全性低、查询困难、海量数据处理乏力等诸多问题,而 MySQL 凭借出色的并发性、轻量性和易用性,成为电商、SNS、论坛等场景的首选数据库。本文将从数据库基础认知出发,一步步讲解 MySQL 的主流应用、安装连接、核心操作、架构设计、SQL 分类和存储引擎,零基础也能轻松上手。下面就让我们正式开始吧!
一、为什么需要数据库?文件存储的痛点全解析
在接触 MySQL 之前,很多初学者会有一个疑问:用 TXT、Excel 这类文件保存数据就够了,为什么还要专门用数据库? 其实在小体量数据、单人开发的场景下,文件存储看似便捷,但在实际的项目开发中,会暴露诸多致命缺点:
文件的安全性无法保障:文件没有完善的权限管理机制,容易被误删、篡改,也无法做到精细化的访问控制,对于企业级数据来说,数据安全就是生命线。不利于数据查询和管理:如果要从几万、几十万行的文件中查询某条特定数据,只能逐行遍历,效率极低;同时文件无法实现数据的关联、筛选、聚合等复杂操作,数据管理杂乱无章。无法支撑海量数据存储:文件的存储结构简单,当数据量达到 GB、TB 级别时,会出现读写卡顿、文件损坏等问题,无法满足项目的规模化发展。程序中控制难度高:文件的读写需要开发者手动编写大量的 IO 操作代码,还需要处理文件锁、数据格式解析等问题,开发效率低,且容易出现 BUG。
而数据库作为专门为数据管理设计的工具,完美解决了以上问题。它的存储介质主要分为磁盘(持久化存储,保障数据不丢失)和内存(临时存储,提升数据读写速度),能实现数据的安全存储、高效查询、海量管理和便捷的程序对接,也是衡量一个程序员技术水平的重要指标。
二、主流数据库大盘点,MySQL 的适用场景是什么?
市面上的数据库种类繁多,不同的数据库有其专属的设计理念和适用场景,我们先对主流数据库做一个清晰的梳理,帮大家理解 MySQL 的定位和优势:
2.1 主流数据库特性对比
SQL Server:微软旗下产品,与.NET 生态深度融合,是.NET 程序员的首选,适合中大型企业项目,在 Windows 服务器环境下兼容性极佳。Oracle:甲骨文的旗舰产品,主打大型项目、复杂业务逻辑场景,功能强大且完善,但对服务器配置要求高,并发处理能力相比 MySQL 稍弱,且商用授权费用昂贵。MySQL:目前世界上最受欢迎的开源关系型数据库,虽被甲骨文收购,但仍保持开源特性。并发性表现优秀,对简单 SQL 的处理效率极高,缺点是不适合过于复杂的业务逻辑,主要应用在电商、SNS 社交平台、论坛、博客等互联网项目中,也是本文的核心讲解对象。PostgreSQL:由加州大学伯克利分校开发的开源关系型数据库,功能全面,支持复杂的查询和数据类型,私用、商用、学术研究均可免费使用、修改和分发,在大数据、数据分析场景中应用广泛。SQLite:轻型嵌入式关系型数据库,遵守 ACID 事务原则,核心代码封装在小型 C 库中,占用资源极低,在嵌入式设备中仅需几百 K 内存即可运行,广泛应用在手机 APP、嵌入式产品、本地小工具中。H2:基于 Java 开发的嵌入式数据库,以类库的形式嵌入到 Java 应用项目中,无需单独部署数据库服务器,适合开发、测试环境的快速搭建。
2.2 MySQL 的核心优势
从上述对比中能看出,MySQL 能成为互联网领域的主流数据库,核心在于这几点:
开源免费,降低企业项目的开发成本;跨平台性好,可运行在 Unix/Linux、Windows、Mac 等几乎所有操作系统;并发性优秀,能支撑高并发的互联网请求;轻量易用,安装部署简单,SQL 语法简洁,开发和维护成本低;社区生态完善,遇到问题能快速找到解决方案,各类第三方工具支持丰富。
三、MySQL 基础操作,从安装到数据 CRUD 手把手教
掌握 MySQL 的基础操作是入门的关键,本节将讲解 MySQL 的安装方式、服务器连接、服务管理,以及最核心的数据库、表、数据的 CRUD 操作,所有操作均提供可直接运行的代码和指令。
3.1 MySQL 的多平台安装方式
MySQL 支持多种操作系统,不同系统的安装方式略有差异,本文整理了企业开发中最常用的几种安装方案,覆盖 Linux(CentOS)和 Windows 平台:
CentOS 6.5:采用编译安装方式,适合需要自定义安装路径、配置的场景,安装版本为 MySQL 5.6.14;CentOS 7:通过yum 包管理器安装 MariaDB(MySQL 的分支,完全兼容 MySQL 语法,是 CentOS 7 的默认数据库),安装步骤简单,适合快速部署;Windows:直接安装 MySQL 安装包,主流版本为 MySQL 5.7,图形化安装界面,新手也能轻松操作。
提示:MySQL 8.0 是目前的主流版本,相比 5.7 增加了诸多新特性,如窗口函数、CTE 公用表表达式等,实际开发中可根据项目需求选择版本。
3.2 连接 MySQL 服务器,核心指令解析
安装完成后,需要通过终端 / 命令行连接 MySQL 服务器,核心 bash 指令如下,这是操作 MySQL 的第一步,必须牢记:
mysql -h 127.0.0.1 -P 3306 -u root -p 指令参数详解
-h:指定要连接的 MySQL 服务器 IP 地址,127.0.0.1表示本地服务器;-P:指定 MySQL 服务器的端口号,MySQL 默认端口为 3306(注意 P 是大写);-u:指定连接使用的数据库用户名,root是 MySQL 的超级管理员账户,拥有最高权限;-p:表示需要输入密码,输入指令后按回车,会提示Enter password:,此时输入数据库密码即可(密码输入时无明文显示,属于正常现象)。
简化连接方式
如果是连接本地的 MySQL 服务器,且使用默认的 3306 端口,可省略-h和-P参数,简化为:
mysql -u root -p 连接成功的反馈
输入正确密码后,会出现如下提示,代表连接成功,进入 MySQL 的交互命令行(以 MySQL 5.7 为例):
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.21-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 重要提示:MySQL 的所有 SQL 语句都必须以分号; 或\g结尾,否则会视为语句未完成,一直等待输入。3.3 MySQL 服务器管理(Windows 平台)
在 Windows 平台下,MySQL 以服务的形式运行,可通过图形化界面进行启动、停止、重启等管理操作,步骤如下:
按下Win+R组合键,打开 “运行” 窗口;输入services.msc,点击回车,打开 Windows服务管理器;在服务列表中找到 MySQL 相关服务(如 MySQL57,名称与安装版本一致);右键点击服务,可选择启动、停止、暂停、重新启动,也可设置启动类型(自动 / 手动 / 禁用)。

Linux 平台下可通过systemctl start mysqld、systemctl stop mysqld、systemctl restart mysqld指令管理 MySQL 服务,后续会单独讲解 Linux 下的数据库运维技巧。3.4 服务器、数据库、表的层级关系
很多新手会混淆服务器、数据库、表的概念,这里用一句话讲清核心关系:安装 MySQL 服务器,本质是在机器上安装了一个数据库管理系统程序,该程序可以管理多个数据库;为了存储应用中不同实体的数据,每个数据库中又可以创建多个表。
简单来说,层级关系为:MySQL 服务器 > 数据库(DB) > 表(Table)。
一个服务器对应多个数据库:比如一个 MySQL 服务器中,可创建电商项目的数据库ecommerce、博客项目的数据库blog;一个数据库对应多个表:比如ecommerce数据库中,可创建用户表user、商品表goods、订单表order;表是存储数据的基本单位:表由行(记录)和列(字段)组成,每一行代表一条数据,每一列代表数据的一个属性。

3.5 MySQL 核心 CRUD 操作,SQL 语句直接运行
掌握了连接和管理后,接下来就是 MySQL 的核心操作:对数据库、表、数据进行创建、查询、修改、删除,以下所有 SQL 语句均可在 MySQL 交互命令行中直接运行,我们以创建helloworld数据库和student表为例,手把手教学。
3.5.1 数据库操作:创建 & 使用
1. 创建数据库SQL 语句:创建名为helloworld的数据库
create database helloworld; 拓展:为了避免创建已存在的数据库时报错,可添加if not exists判断:2. 使用数据库创建数据库后,必须先使用该数据库,才能在其中创建表、插入数据,SQL 语句:
use helloworld; 执行成功后,会提示Database changed,代表已切换到helloworld数据库。
3.5.2 数据表操作:创建
使用create table语句创建数据表,指定表名和字段(列),以及每个字段的数据类型。示例:创建student学生表,包含id(学号)、name(姓名)、gender(性别)三个字段
create table student( id int, -- 整型,存储学号 name varchar(32), -- 字符串类型,最大长度32,存储姓名 gender varchar(2) -- 字符串类型,最大长度2,存储性别(男/女) ); 字段类型说明:int是整型,适合存储数字;varchar(n)是可变长度字符串,n表示最大字符数,适合存储姓名、性别、地址等文本信息。
3.5.3 数据操作:插入 & 查询
1. 插入数据:
使用insert into语句向表中插入数据,指定字段名和对应的值,SQL 语句支持单条插入和多条插入:
-- 单条插入:插入学号1,姓名张三,性别男 insert into student (id, name, gender) values (1, '张三', '男'); -- 单条插入:插入学号2,姓名李四,性别女 insert into student (id, name, gender) values (2, '李四', '女'); -- 单条插入:插入学号3,姓名王五,性别男 insert into student (id, name, gender) values (3, '王五', '男'); -- 拓展:多条数据一次性插入,效率更高 insert into student (id, name, gender) values (4, '赵六', '女'), (5, '孙七', '男'); 执行成功后,会提示Query OK, 1 row affected (0.00 sec)(单条插入)或Query OK, 2 rows affected (0.01 sec)(多条插入),代表数据插入成功。
2. 查询数据:
使用select语句查询表中的数据,这是实际开发中使用频率最高的 SQL 语句,基础查询语法如下:
-- 查询student表中的所有字段、所有数据 select * from student; 其中*表示查询所有字段,执行后会显示表中的所有数据,结果如下:
+----+--------+--------+ | id | name | gender | +----+--------+--------+ | 1 | 张三 | 男 | | 2 | 李四 | 女 | | 3 | 王五 | 男 | +----+--------+--------+ 3 rows in set (0.00 sec) 拓展:可指定查询特定字段,比如只查询姓名和性别:
3.5.4 拓展操作:删除表 & 删除数据库
实际开发中如需删除表或数据库,可使用以下语句,注意:删除操作不可逆,执行前务必确认数据是否需要备份!
-- 删除student表,添加if exists避免表不存在时报错 drop table if exists student; -- 删除helloworld数据库,添加if exists避免数据库不存在时报错 drop database if exists helloworld;四、MySQL 架构设计,看懂底层运行逻辑
想要深入掌握 MySQL,不仅要会用,还要理解其底层架构。MySQL 是一个可移植的数据库,能在不同操作系统上运行,且在各个平台上的物理体系结构基本一致,其整体架构分为客户端层、MySQL 服务层、存储引擎层和文件系统层,四层架构相互配合,完成数据的存储和查询。

4.1 客户端层(Client Connectors)
这是 MySQL 与外部程序的交互层,提供了多种编程语言的连接驱动,让不同语言的程序能访问 MySQL 数据库,主流的连接方式包括:
JDBC:Java 语言的数据库连接驱动,是 Java 开发的标配;ODBC:通用的数据库连接接口,支持多种编程语言;.NET/PHP/Python/PERL:对应编程语言的专属连接库;C API:C/C++ 语言的底层连接接口,性能最高。
客户端层的核心作用是建立连接、发送 SQL 指令、接收返回结果,不参与数据库的核心处理。
4.2 MySQL 服务层(MYSQL SERVER)
这是 MySQL 的核心层,负责处理所有的业务逻辑,包含多个核心模块,是 SQL 语句的解析、优化、执行的核心区域,主要模块如下:
连接池与连接管理:负责管理客户端的连接,实现连接的复用,减少频繁创建和销毁连接的开销,同时处理用户的身份认证和权限校验;SQL 接口:接收客户端发送的 SQL 语句,支持 DML、DDL、DQL 等所有 SQL 类型;解析器(Parser):对 SQL 语句进行词法分析和语法分析,判断 SQL 语句是否符合语法规范,若有语法错误则直接返回错误信息;优化器(Optimizer):对解析后的 SQL 语句进行优化,选择最优的执行计划(比如选择哪个索引、如何连接表),提升 SQL 的执行效率;缓存(Caches):包含全局缓存和引擎专属缓存,缓存常用的查询结果,当再次执行相同的查询时,可直接从缓存中返回结果,无需重新执行,提升查询速度;其他核心功能:支持分区、存储过程、触发器、视图等高级特性,处理事务、复制、集群等核心功能。
4.3 存储引擎层(Pluggable Storage Engines)
这是 MySQL 的特色层,插件式存储引擎是 MySQL 的核心设计,也是其灵活性的体现。存储引擎的本质是:数据库管理系统如何存储数据、如何为存储的数据建立索引、如何更新和查询数据的技术实现方法。
MySQL 支持多种存储引擎,可根据项目需求灵活选择,主流的存储引擎包括MyISAM、InnoDB、Memory、Archive等,其中InnoDB是 MySQL 5.5 及以后版本的默认存储引擎,支持事务和行级锁,是企业开发的首选。
4.4 文件系统层(File System)
这是 MySQL 的底层存储层,负责将数据以文件的形式存储在磁盘上,包括数据文件、日志文件、索引文件等,同时支持 SAN、NAS 等分布式存储系统,保障数据的持久化存储。
五、SQL 语句大分类,按功能吃透核心指令
SQL(结构化查询语言)是操作关系型数据库的标准语言,MySQL 完全兼容 SQL 标准,并在此基础上做了少量扩展。根据功能的不同,SQL 可分为四大类,分别是 DDL、DML、DQL、DCL,每一类对应不同的操作场景,掌握分类能让我们更系统地学习 SQL 语句。
5.1 DDL:数据定义语言(Data Definition Language)
核心作用:维护存储数据的结构,即创建、修改、删除数据库、表、索引等数据库对象,不会对表中的数据进行操作。
代表指令:create(创建)、drop(删除)、alter(修改)
常用场景:项目初始化时创建数据库和表、需求变更时修改表结构(如添加字段、修改字段类型)、删除无用的数据库 / 表。
示例语句:
-- 创建数据库(DDL) create database helloworld; -- 创建表(DDL) create table student(id int, name varchar(32)); -- 修改表:为student表添加age字段(整型)(DDL) alter table student add column age int; -- 删除表(DDL) drop table student; 5.2 DML:数据操纵语言(Data Manipulation Language)
核心作用:对表中的数据进行增、删、改操作,是实际开发中使用频率最高的 SQL 类型之一。
代表指令:insert(插入)、delete(删除)、update(修改)
常用场景:用户注册时插入用户数据、用户修改信息时更新数据、删除无用的业务数据。
示例语句:
-- 插入数据(DML) insert into student (id, name) values (1, '张三'); -- 修改数据:将id=1的学生姓名改为“张三丰”(DML) update student set name = '张三丰' where id = 1; -- 删除数据:删除id=1的学生数据(DML) delete from student where id = 1; 重要提示:使用update和delete时,务必添加 where 条件,否则会修改 / 删除表中的所有数据,造成不可逆的损失!
5.3 DQL:数据查询语言(Data Query Language)
核心作用:从表中查询数据,是所有 SQL 语句中最复杂、使用频率最高的类型,单独从 DML 中划分出来,体现其重要性。
代表指令:select
常用场景:页面展示数据、数据统计、报表生成、业务逻辑中的数据查询。
基础示例:
-- 查询所有数据 select * from student; -- 条件查询:查询性别为男的学生 select * from student where gender = '男'; -- 排序查询:按学号降序排列 select * from student order by id desc; 拓展:DQL 支持联表查询、分组查询、聚合函数、子查询等复杂操作,是 MySQL 进阶学习的核心内容。
5.4 DCL:数据控制语言(Data Control Language)
核心作用:主要负责权限管理和事务管理,控制数据库的访问权限和数据的一致性。
代表指令:grant(授予权限)、revoke(回收权限)、commit(提交事务)、rollback(回滚事务)
常用场景:为开发人员创建数据库账户并分配权限、回收离职人员的数据库权限、处理业务中的事务(如转账、下单等需要保证数据一致性的操作)。
示例语句:
-- 授予权限:给用户test分配helloworld数据库的所有表的查询、插入权限,允许从本地访问 grant select, insert on helloworld.* to 'test'@'localhost' identified by '123456'; -- 回收权限:回收test用户的插入权限 revoke insert on helloworld.* from 'test'@'localhost'; -- 提交事务:确认事务中的所有操作 commit; -- 回滚事务:撤销事务中的所有操作,恢复到事务开始前的状态六、MySQL 存储引擎,核心特性与查看方式
存储引擎是 MySQL 的核心特性,插件式的设计让 MySQL 能适应不同的业务场景,本节讲解存储引擎的基础概念、查看方式,以及主流存储引擎的核心对比。
6.1 存储引擎的核心概念
存储引擎是 MySQL 中特有的概念,不同的存储引擎对应不同的数据存储机制,简单来说,存储引擎决定了表的存储方式、索引方式、事务支持、锁机制等。对于 MySQL 来说,不同的表可以使用不同的存储引擎,这意味着我们可以为一张高频查询的表选择适合查询的存储引擎,为一张需要保证数据一致性的表选择支持事务的存储引擎,灵活性拉满。
6.2 查看 MySQL 支持的存储引擎
通过简单的 SQL 语句,即可查看当前 MySQL 服务器支持的所有存储引擎,以及默认存储引擎:
-- 查看所有存储引擎 show engines; 执行该语句后,会显示存储引擎的名称、是否支持事务、是否支持索引、是否支持行级锁等核心特性,其中Support列的值为DEFAULT的即为当前 MySQL 的默认存储引擎。

6.3 主流存储引擎核心对比
MySQL 支持的存储引擎众多,其中InnoDB和MyISAM是最常用的两个,也是面试中的高频考点,这里对两者的核心特性做详细对比,同时补充其他常用存储引擎的适用场景:
| 存储引擎 | 事务支持 | 行级锁 | 表级锁 | 索引类型 | 数据缓存 | 崩溃恢复 | 适用场景 |
|---|---|---|---|---|---|---|---|
| InnoDB | 支持 | 支持 | 支持 | B + 树索引 | 支持 | 支持 | 电商、金融等需要事务、高并发的场景,默认存储引擎 |
| MyISAM | 不支持 | 不支持 | 支持 | B + 树索引 | 不支持 | 不支持 | 静态网站、高频查询、无需事务的场景 |
| Memory | 不支持 | 支持 | 支持 | 哈希 / BTREE | 内存存储 | 不支持 | 临时数据、缓存、高频访问的临时表 |
| Archive | 不支持 | 不支持 | 支持 | 无索引 | 不支持 | 支持 | 日志存储、海量数据归档、仅插入和查询的场景 |

核心总结:
- InnoDB:企业开发的首选,支持事务、行级锁、崩溃恢复,能保证数据的一致性和安全性,适应高并发的业务场景;
- MyISAM:查询效率高,但不支持事务和行级锁,适合无事务要求的静态场景;
- Memory:数据存储在内存中,读写速度极快,但数据重启后丢失,适合临时数据存储;
- Archive:适合海量数据的归档和日志存储,仅支持插入和查询操作,不支持索引。
总结
MySQL 的学习是一个循序渐进的过程,入门阶段重点掌握基础操作和核心概念,后续通过不断的实战和进阶学习,才能真正做到熟练运用,甚至优化 MySQL 的性能。希望本文能成为大家 MySQL 入门的敲门砖,后续会持续更新 MySQL 的进阶知识点,敬请关注!
如有问题可在评论区留言,一起交流学习~