MySQL保姆级入门教程:从安装配置到索引事务与存储过程
从零开始折腾MySQL:一篇喂到嘴边的保姆级入门梳理
如果你第一次接触MySQL,八成是卡在“老师直接让你建表写SQL”和“网上的教程默认你啥都会”之间的这种尴尬位置。这篇文章就是为完全没基础、甚至不知道MySQL怎么装、装完怎么连、连完该干嘛的读者准备的。我会把从下载安装、建库建表、增删改查,到索引、事务、存储过程这些入门必踩的知识点全部过一遍,尽量用大白话讲清楚“为什么”,而不只是“怎么操作”。内容量大,建议先收藏,然后找一个下午边看边动手操作一遍。
这篇东西覆盖面比较广——既能解决你“MySQL 安装配置”的问题,也会把“MySQL 常用 SQL 语句”、“MySQL 索引原理”、“事务隔离级别”、“存储过程怎么写”、“自动备份脚本怎么做”这些高频话题全部带一遍。适合刚上完数据库课但实际没怎么动过手的同学、转行准备面试的选手,以及工作里需要自学的Java后端和测试同学。看完全文,你可以自己独立搭一套MySQL环境,写出规范的基础SQL,知道索引大概是怎么回事,还能给自己写一个一键备份的bat脚本。
1. 环境准备:MySQL的下载、安装与连接
1.1 版本选择和安装包怎么挑
很多新手第一步就卡在下载上——一搜“MySQL 下载官网”出来一堆第三方站,点进去全是广告和大大的下载按钮,一不留神就装了一堆全家桶。记住一句话:MySQL 认准官方,也就是 mysql.com,进 Downloads 页面,选 MySQL Community Server 版本,这是免费的开源社区版,开发和学习完全够用。
版本上建议直接选 8.0 系列,比如 8.0.4x 的压缩版或安装版。老项目可能还在用 5.7,但新学的没必要追老,8.0 的窗口函数、CTE、更好用的默认字符集,以及更强的性能优化,都值得你从它开始。Windows 下有两种包:一种是 ZIP 压缩版,免安装,解压就能用;另一种是 MSI 安装程序,图形化点击下一步。我的建议是——新手优先用 MSI 安装版,减少你折腾环境的时间;如果以后你需要在多台机器快速部署,再接触压缩版。
压缩版的自定义安装步骤大概是:解压到一个纯英文路径,比如 D:\mysql-8.0.46-winx64,然后在根目录新建 my.ini 配置文件,里面至少要有 [mysqld] 和 basedir、datadir 这仨关键项,然后再用管理员权限的 cmd 执行 mysqld --initialize-insecure(记住这个参数,后面谈初始密码时会细说)初始化数据目录,最后 mysqld --install 注册成 Windows 服务,net start mysql 启动。
1.2 第一次连接:初始密码这个坑
踏入MySQL的第一步不是写SQL,而是先能连上它。安装完成后,第一次用命令行连接时新手最常见的灵魂发问是:“MySQL 的初始密码是什么?”
不同安装方式不一样。如果是 MSI 安装版,安装过程中会让你设置 root 密码(比如 root/123456),这个是你自己的密码,没问题。如果你用的是 ZIP 压缩版,用了 mysqld --initialize-insecure 这个初始化命令,那么默认的 root 账号是空密码,直接 mysql -u root -p 回车再回车就能进去。如果你用了 mysqld --initialize(不带 insecure),系统会在数据目录的 .err 日志文件里生成一个临时密码,你需要把这个日志打开,找 a temporary password is generated for root@localhost 这一行,后面那串乱码一样的字母数字就是临时密码。第一次登录后立刻执行 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; 修改掉。
命令行的连接姿势也有讲究:在 Windows 下,建议把 MySQL 安装目录下的 bin 文件夹路径加到系统环境变量的 Path 里,这样在任何路径下都能直接输入 mysql,不用每次 cd 到安装目录。连接命令的完整形态是 mysql -h 127.0.0.1 -P 3306 -u root -p,其中 -h 是主机地址、-P 是端口号(默认3306)、-u 是用户名、-p 表示需要输入密码。
1.3 可视化工具:MySQL Workbench 还是 Navicat
命令行当然可以操作一切,但对学习阶段来说,可视化工具有一个巨大的优势:你能直观看到一张表长什么样、一张表里有几行数据、哪些字段是索引,这对建立数据库的“空间感”非常有帮助。我见过太多纯命令行选手,建了几张表之后逻辑开始混乱,最后连自己都搞不清楚表之间的关系。
MySQL 官方自带的 Workbench 完全免费,功能也足够了。安装MSI包时可以选择附带安装,或者去官网单独下载。打开后新建连接,填主机名、端口、用户名和密码,点击 Test Connection 测试通不通。如果之前用命令行已经建了库表,这里都能看到。它的左侧栏有 Administration 标签页,可以看服务状态、配置、导入导出数据,非常省事。商用环境下很多团队用 Navicat,界面更友好,但它是收费的,初学阶段用 Workbench 完全够用。
提示:如果 Workbench 连接时报 2059 错误,一般是因为 MySQL 8.0 修改了默认认证插件为 caching_sha2_password,而旧版客户端不支持。解决方式是改密码时显式指定 mysql_native_password,稍后在第7章会给出具体命令。
2. 建库建表与增删改查:SQL基本功要打牢
2.1 库和表:先搞清楚MySQL里到底有什么
MySQL 是一个数据库管理系统,你可以在里面创建多个“数据库(database)”,每个数据库里放若干“表(table)”,表是真正存数据的地方。用一个最朴素的类比:数据库像是一个仓库,表是仓库里的货架,每一行是货架上的一个货品,每一列是货品的一个属性。你要做的第一步,不是急着写 SELECT,而是先建仓库、再摆货架。
建库的SQL很简单:
这里的 utf8mb4 是 MySQL 8.0 的默认字符集,它比老的 utf8 多支持了 Emoji 和更多特殊符号,实际项目中几乎都推荐用它。库建好后,你后面对表的操作之前要先 USE school,告诉 MySQL“我要在这个库里面干活”。忘记USE就操作表,系统会报“No database selected”,这是新手接触最多的报错之一。
2.2 建表语句:字段类型和主键怎么选
表的创建是数据库设计最核心的动作。还是以 student 表为例,把一张学生表的结构设计出来,你就能理解大部分字段类型怎么选: