MySQL 简介与安装
🎯 引言
学完这篇文章,你能说清楚数据库是什么、关系型数据库和 SQL 语言是什么关系,还能用 Docker 在自己的电脑上运行一个 MySQL 8 数据库,并成功连上去执行第一条 SQL 语句。这是我们从纯前端走向全栈开发的重要一步。
🧱 什么是数据库
做前端开发时,我们的数据通常存在内存变量、localStorage 里,页面一刷新就没了。而真实项目中的用户数据需要长期保存,并且能被很多人同时读写,这就需要数据库来帮忙。
数据库(Database)就是一套专门用来存储和管理数据的软件。如果你觉得抽象,可以拿 Excel 来类比:
- 一个数据库就像一个 Excel 工作簿(一个 .xlsx 文件)。
- 数据库里的一张**表(Table)**就像工作簿里的一个 sheet。
- 表里的一**行(Row)**就像 sheet 里的一条记录,比如一个用户的信息。
- 表里的一**列(Column)**就像 sheet 里的一个字段,比如用户名、年龄、城市。
比如一张 user 用户表,看起来就是这样的:
| id | username | age | city |
|---|---|---|---|
| 1 | 小明 | 18 | 北京 |
| 2 | 小红 | 20 | 上海 |
和 Excel 不同的是,数据库能高效处理海量数据、支持多人同时访问、还能严格约束数据格式,这些是 Excel 做不到的。
⚡ 什么是关系型数据库和 SQL
数据库有很多种类型,其中应用广泛的一类叫关系型数据库。它的特点是:数据存放在一张张二维表里,表和表之间可以通过字段建立关联(比如文章表记录作者的 id,就能关联到用户表)。常见的还有 PostgreSQL、SQLite,MySQL 也是其中一员。
操作关系型数据库要用一门专门的语言:SQL(Structured Query Language,结构化查询语言)。它的语法接近自然语言,比如查询所有用户:
SELECT * FROM user;
意思是:从 user 表中选出全部数据。SQL 语法在各种关系型数据库之间基本通用,学会 MySQL 的 SQL,换到其他数据库也能很快上手。
SELECT、FROM),表名和字段名小写。这门课程的所有示例都遵循这个约定。✨ 为什么学 MySQL
数据库产品不少,为什么我们选 MySQL?主要有三个原因:
- 开源免费:可以自由下载和使用,学习零成本。
- 足够主流:国内外大量公司的业务系统都在使用 MySQL,招聘要求里出现频率很高。
- 生态成熟:文档、教程、工具都很丰富,和 Node.js 搭配开发是非常常见的组合。
对前端同学来说,学会 MySQL 就等于补上了后端开发里数据存储这一环,之后写接口、做项目就有了完整的链路。
🛠 用 Docker 安装 MySQL
安装 MySQL 有多种方式,本课程推荐用 Docker 运行。好处是:一条命令就能启动一个干净的 MySQL 环境,不污染你的电脑,不想要了删掉容器就行。
本文及本课程基于 MySQL 8.x、Docker 运行环境编写和验证。
如果你还没有安装 Docker,先安装 Docker Desktop(官网下载对应系统版本即可)。装好后打开终端,执行:
docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:8
这条命令各部分的意思是:
--name mysql8:给容器起名叫mysql8,方便后续操作。-e MYSQL_ROOT_PASSWORD=123456:设置 root 用户的密码为123456,学习阶段用简单密码即可。-p 3306:3306:把容器的 3306 端口映射到本机的 3306 端口,3306 是 MySQL 的默认端口。-d:让容器在后台运行。mysql:8:使用 MySQL 8 版本的镜像。
第一次执行会自动下载镜像,耐心等待下载完成即可。
docker run 启动容器,操作时以你本地的实际界面和命令行为准。docker start mysql8 就能再次启动,不需要重新执行 docker run。🛠 连接 MySQL 并验证
容器启动后,我们用 MySQL 自带的命令行客户端连上去验证一下。执行:
docker exec -it mysql8 mysql -uroot -p
回车后会提示输入密码,输入刚才设置的 123456(输入时不会显示字符,正常现象),再按回车。看到 mysql> 提示符,就说明连接成功了。
接着执行第一条 SQL 语句,查看数据库版本:
SELECT VERSION();
能看到类似 8.x.x 的版本号输出,恭喜你,MySQL 环境已经准备就绪。想退出客户端时,输入 exit 回车即可。
🧾 小节总结
- 数据库是长期存储和管理数据的软件,可以用 Excel 类比:数据库像工作簿,表像 sheet,行像一条记录。
- MySQL 是关系型数据库,数据存放在二维表中,表和表之间可以建立关联。
- SQL 是操作关系型数据库的通用语言,语法接近自然语言。
- MySQL 开源免费、使用广泛,和 Node.js 搭配开发很常见。
- 用 Docker 一条命令即可运行 MySQL 8:
docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:8。 - 用
docker exec -it mysql8 mysql -uroot -p进入客户端,执行SELECT VERSION();验证连接。
❓ 知识问答
Q1:localStorage 也能存数据,为什么还要学数据库?
localStorage 存在浏览器里,只能存少量文本,且换台设备就没有了。数据库存储在服务器上,容量大、能多人同时读写、数据有统一的管理和备份,是真实项目的标准做法。
Q2:SQL 和 MySQL 是一回事吗?
不是。SQL 是一门查询语言,MySQL 是一个数据库软件,我们用 SQL 语言去操作 MySQL。可以类比:SQL 像普通话,MySQL 像一个听得懂普通话的人。
Q3:为什么推荐用 Docker 而不是直接安装 MySQL?
直接安装需要处理系统配置、服务启动等细节,容易遇到环境差异问题。Docker 把环境打包好了,一条命令就能得到一致的 MySQL 环境,删除时也不留残余,适合学习阶段。
Q4:容器删掉后,里面的数据还在吗?
容器删除后数据会一起消失。学习阶段这反而方便,随时可以推倒重来。需要长期保存数据时,可以挂载数据卷,本文暂不展开。
Q5:端口 3306 被占用了怎么办?
说明本机 3306 端口已有程序在使用。可以把映射改成本机的其他端口,比如 -p 3307:3306,连接时使用 3307 即可。
🧪 小练习
- 停掉容器再启动一次:分别执行
docker stop mysql8和docker start mysql8,然后重新进入客户端,验证容器可以反复使用。 - 进入 MySQL 客户端后,执行一条 SQL 查看当前时间,试着自己写出来:
-- 提示:使用 NOW() 函数
-- 请在这里编写 SQL
🎉 恭喜你已经掌握了数据库的基本概念,并在本地成功运行了 MySQL!下一篇我们学习数据库和数据表的增删改查,亲手创建属于我们的第一张 user 表。
