news 2026/10/14 3:15:03

MySQL零基础入门:从安装建库到增删改查全流程教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL零基础入门:从安装建库到增删改查全流程教程

1. MySQL到底是个啥,为什么零基础也要学它

这一篇我们聊聊 MySQL。不管你之前有没有接触过数据库,只要你会用电脑打字,跟着这份超详细的教程,就能把 MySQL 装起来、跑起来,然后亲手写下第一条 SQL。我见过不少零基础学编程的人,一开始听到"数据库"三个字就觉得是特别高深的东西,实际上你只需要把它理解成"专门用来存数据的软件"就够了。MySQL 是目前互联网项目里用得最多的开源数据库之一,小到个人博客,大到电商网站,底层几乎都有 MySQL 的影子。这篇作为第一篇,我会默认你什么都不知道,用大白话把概念、安装、建库、建表、增删改查全部过一遍。

1.1 从"Excel管数据"到"数据库管数据"

很多同学第一次接触数据管理,都是用 Excel 或者 WPS 表格。表格里一行是一条记录,一列是一个属性,比如商品名称、价格、库存。这个理解非常好,因为 MySQL 里的表,本质上和 Excel 的单元格区域是一个思路。区别在于,Excel 适合人工编辑少量数据,而 MySQL 适合让程序自动地、高效地、安全地操作海量数据。

你可以把 MySQL 想象成一个"电子仓库"。仓库里有很多个货架,每个货架就是一张"表";货架上每层格子就是"字段",每个格子的名称就是"字段名",比如价格、库存;货架上放着的每一件货物,就是一行"记录"。我们平时说的"增删改查",就是在往货架上放东西、拿东西、清点东西、整理东西。MySQL 的家族里还有表、库、SQL 这些概念,后面会一点点讲,你先记住这个仓库比喻就行。

1.2 MySQL能干什么,影响范围有多大

MySQL 能做的事情非常多。最常见的场景是网站后端,比如用户注册登录、商品列表、订单记录,这些数据都要存到数据库里;数据分析场景里,MySQL 也经常作为数据仓库的入口,把业务数据存下来再做统计;甚至很多手机 App 的服务端,背后也都是 MySQL。可以说,只要一个系统需要"保存数据"和"查询数据",MySQL 就是一个绕不开的选择。

那为什么零基础第一个数据库要学 MySQL 而不是其他的?原因也很实在:MySQL 开源免费,安装方便,资料多,遇到问题一搜一大把;它够简单,常用功能很快就能上手;同时它又够用,从学生项目到大型生产系统都有不少公司在用。刚开始学数据库,最怕的是用了一个很小众的工具,出了问题没人问。MySQL 的社区足够大,几乎你踩过的坑,前面都有人踩过并留下了解决办法。

2. 正式动手前,花10分钟搞懂3个基础概念

有很多零基础同学安装完 MySQL 之后,打开命令行一闪而过,然后就开始怀疑人生。其实你只是还没搞清楚客户端和服务端的关系。这部分我们先把概念理顺,安装和实操就顺了。

2.1 服务端和客户端:谁是服务器谁是客户

MySQL 本身分为两个重要角色:服务端(Server)和客户端(Client)。服务端是真正存数据、管数据的程序,它一直运行在电脑后台,像仓库管理员一样默默工作。客户端是给用户操作的工具,你打开命令行输入 mysql 命令,这个命令就是客户端,它负责把你的指令发给服务端,再把结果返回来显示在屏幕上。

你可以用淘宝买东西来理解:你用的手机 App 是客户端,淘宝后台的服务器是服务端,你在 App 上搜索商品,其实是在请求服务器,服务器把结果返回给你。MySQL 也一样,我们日常写 SQL 时,并不直接碰数据文件,而是通过客户端发指令,让服务端执行。安装 MySQL 时,通常是把服务端和客户端一起装好了,所以我们只需要关心怎么用客户端连上服务端。

2.2 端口3306:数据库的门牌号

服务端程序要在电脑上监听一个"门牌号",客户端想连上它,就必须知道这个门牌号。MySQL 默认的端口号是 3306,绝大多数安装都使用这个值。如果你只是本机学习和练习,可以不记它,因为默认配置就是 3306。但要知道有这么一个东西,因为以后连接远程数据库、配置防火墙、排查连接失败时,端口号是经常会提到的概念。

另外还有一个词叫"主机地址",本机连接时一般写 localhost 或者 127.0.0.1,意思就是"我这台电脑"。连自己电脑上的 MySQL 时,服务端和客户端在同一台电脑上,不需要网络。以后工作了要连公司服务器上的数据库,主机地址就会换成具体 IP 地址,但端口一般还是 3306。

2.3 字符集和排序规则:为什么中文会变乱码

很多新手在 MySQL 里插入中文数据,结果查出来是一堆问号,根本原因就是字符集没配对。字符集可以简单理解成"文字的编码方式",不同方式支持的文字范围不一样。MySQL 比较老的版本默认字符集是 latin1,不支持中文;现在 8.0 版本默认是 utf8mb4,支持中文和 emoji。

在创建数据库和表的时候,强烈建议统一使用 utf8mb4。它是 UTF-8 的超级版,能覆盖中文、日文、韩文、表情符号,是现在最不容易踩坑的选择。后面遇到乱码时,第一反应检查三处:数据库字符集、表字符集、连接字符集。这几个概念现在不理解细节没关系,但心里要有个底,后面我们实操建库建表时,会直接写上 utf8mb4,照做就行。

2.4 版本怎么选:别纠结,直接装8.0

我碰到过好多新手卡在第一步:下载 MySQL 时看到一堆版本,不知道选哪个。我的建议非常直接:如果你电脑上没有历史项目依赖旧版本,就选最新的 8.0 社区版(Community Server),不要选 5.7,更不要选更老的版本。8.0 默认字符集更合理、性能更好、安全机制也更强,网上新教程大部分也基于 8.0 编写。

用 5.7 的同学也别慌,基础 SQL 语法在 5.7 和 8.0 上绝大多数是通用的,只是身份认证插件等细节有差异。如果你是刚开始学,跟着新环境走,能少遇到很多老版本才有的奇怪问题。

3. 从零安装MySQL:Windows一步步来

这里我以 Windows 为主流程讲,因为大部分零基础同学用的就是 Windows。macOS 和 Linux 的差异我会在小节最后单独说明。

3.1 下载安装包

打开 MySQL 官网,进到下载页面,找 MySQL Community Server。下载页会看到很多安装包形态,我们选 ZIP 解压版还是 MSI 安装版?如果是零基础,推荐用 MSI 安装包,因为它有图形界面,一步步点下来就行。注意选择完整版还是自定义版,新手直接选 Developer Default 可能安装一堆用不上的组件,所以更推荐选 Server only,先只装数据库主体,减小复杂度。

下载时注意选择版本号,比如 8.0.x,以及操作系统位数。现在电脑基本都是 64 位,选 Windows (x86, 64-bit) 即可。如果下载很慢或者始终打不开页面,通常是网络问题,换一个网络环境再试。

3.2 安装过程中的关键选项

安装包运行之后,会进入 Installation 界面。到了 Choose a Setup Type 这一步,建议选 Custom,下一步可以手动勾选项。一定要保证 MySQL Server 被勾选,其他看不懂的组件可以先不装。到了 Type and Networking 页面,默认端口 3306 和 TCP/IP 协议保持勾选,不要乱改。

接下来是 Authentication Method。8.0 默认是 Use Strong Password Encryption for Authentication,保持默认即可。然后就是设置 root 用户的密码。root 是 MySQL 里权限最高的管理员账号,密码一定要牢牢记住。建议单独用一个小本子记下来,或者放在密码管理器里。这一步还会有一个设置服务名和开机启动的界面,记得确认 MySQL 服务是"自动启动",不然以后开机不会自动运行。

3.3 安装完成后的登录验证

安装全部完成后,打开一个命令行窗口,输入 mysql --version,如果能看到版本号,说明安装成功。接着登录:

mysql -u root -p

按回车后输入刚才设置的 root 密码,注意输入密码时屏幕不会显示任何字符,这是正常现象,不是键盘坏了。登录成功后,你会看到一个 mysql> 提示符,这说明你已经进入 MySQL 客户端了,可以敲 SQL 了。

提示:如果 mysql --version 提示"mysql 不是内部或外部命令",说明 MySQL 的安装目录不在系统环境变量里。最简单的办法是打开"编辑系统环境变量",把 MySQL 的 bin 目录路径加进去。比如某同学本机路径是安装目录下的 bin 文件夹,路径里以实际为准。

3.4 macOS和Linux用户怎么办

macOS 用户可以用官方提供的 dmg 安装包,安装过程同样是图形化界面,逻辑与 Windows 类似,也需要设置 root 密码。Homebrew 方式也常见,命令是安装 mysql 并启动服务。Linux 用户则可以用发行版的包管理器,比如 Debian/Ubuntu 系通过 apt 安装 mysql-server,CentOS 系通过 yum 或 dnf 安装。这些方式装好后,还需要执行初始化命令,具体操作可以查官方文档。

零基础同学如果用的是 macOS 或 Linux,不用慌,思路完全一样:装服务、设置 root 密码、启动服务、命令行登录。只是系统包管理器的命令不同。

4. 动手写你的第一个数据库和表

环境装好之后,我们正式开始写 SQL。这一部分我会带你把一个"商品库"完整地建出来,从创建数据库到查询数据,每一步都看得到效果。建议你不要光看,照着手敲一遍,记忆效果完全不一样。

4.1 登录MySQL,先看看里面有什么

登录成功后,先用这个命令看当前 MySQL 里有哪些现成的数据库:

SHOW DATABASES;

注意,SQL 语句结尾要有分号,分号表示"这句话说完了,请执行"。如果忘记分号直接回车,MySQL 会认为语句还没结束,提示符会变成 ->,此时补上分号再回车即可,不需要重新敲。刚装好的 MySQL 通常有几个默认库,比如 information_schema、mysql、performance_schema、sys,这些是系统自带的,先不用管它们。

要退出 MySQL 客户端,可以输入 exit 然后回车,或者按 Ctrl + D 也行。现在我们先不退出,继续往下做。

4.2 创建数据库

我们要建一个叫 shop 的商品数据库。命令:

CREATE DATABASE IF NOT EXISTS shop DEFAULT CHARACTER SET utf8mb4;

细看这句话:CREATE DATABASE 表示创建数据库;IF NOT EXISTS 表示如果同名数据库不存在才创建,避免重复执行时报错;shop 是库名;DEFAULT CHARACTER SET utf8mb4 指定字符集。新手容易忽略后面的字符集部分,但正是这个参数保证了后面中文不乱码。

建好之后,执行 SHOW DATABASES; 能看到库列表里多了 shop。下面要进入这个库,后续操作都发生在这个库里面:

USE shop;

执行成功后,命令行提示通常会跟着变化。USE 并不是标准 SQL 的通用语法,但 MySQL 里非常常用,相当于"切到这个仓库里面去干活"。

4.3 创建表:设计商品的字段

现在我们在 shop 库里创建一张商品表 goods。我需要提前想清楚,商品表要存哪些信息:编号、名称、价格、库存、创建时间。每条记录的编号要唯一,方便查找,所以 id 用自增主键;价格用带两位小数的类型;库存用整数;创建时间用日期时间类型。建表语句:

CREATE TABLE goods ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, price DECIMAL(10,2) NOT NULL, stock INT UNSIGNED NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

每个字段我来解释一下。id 是整数类型 INT,参数 UNSIGNED 表示不允许负数,NOT NULL 表示这个字段必须有值,AUTO_INCREMENT 表示每插入一条记录自动加 1,不用手动填。name 用 VARCHAR(100),这是可变长字符串,最多 100 个字符,商品名称基本够用。price 用 DECIMAL(10,2),表示最多 10 位数字,其中小数点后占 2 位,这种类型非常适合存金额,避免浮点数误差。stock 用 INT UNSIGNED,默认值是 0。created_at 用 DATETIME,DEFAULT CURRENT_TIMESTAMP 表示插入数据时自动填入当前时间。PRIMARY KEY (id) 把 id 设为主键,主键相当于每条记录的唯一识别号。

ENGINE=InnoDB 表示存储引擎,InnoDB 支持事务、行锁,是生产环境推荐的选择。新手记住一点:建表默认用 InnoDB 即可,不需要纠结 MyISAM 和 InnoDB 的细节区别。

4.4 插入数据

表建好后,我们往里面插入三条商品记录。最基本的插入语句:

INSERT INTO goods (name, price, stock) VALUES ('机械键盘', 299.00, 50); INSERT INTO goods (name, price, stock) VALUES ('显示器', 1299.00, 30); INSERT INTO goods (name, price, stock) VALUES ('无线鼠标', 99.00, 100);

一条一条插入,执行后,前面括号里指定了要插入哪些字段,VALUES 后面的括号里按顺序写对应的值。id 和 created_at 都不用写,因为一个是自增,一个会自动取当前时间。如果执行时报错,先检查字符串是否用了单引号括起来,数值不要加引号,字段名是否写错,以及分号有没有漏。

4.5 查询数据:把数据取出来看

数据插入后,查看全部记录:

SELECT * FROM goods;

星号代表所有列,这条语句会把 goods 表里所有字段和所有记录都显示出来。查询结果会以表格形式返回,里面能看到自动生成的 id 和创建时间。

如果表里数据很多,平时不会 SELECT *,而是只查需要的字段:

SELECT id, name, price FROM goods;

这样只显示三列,结果更清爽。SELECT 后面的字段列表可以任意组合,只要表里存在这些字段即可。这是日后最常用的 SQL 之一。

4.6 更新和删除数据

数据如果写错了,可以用 UPDATE 修改。比如机械键盘价格从 299 改成 259:

UPDATE goods SET price = 259.00 WHERE id = 1;

注意这里的 WHERE id = 1 非常重要。WHERE 是"定位条件"的意思,它告诉 MySQL 只更新编号为 1 的那条。如果漏了 WHERE,UPDATE 会更新表中所有记录,把三行商品的价格全部改成 259,这在生产环境里是灾难级操作。每次写 UPDATE 和 DELETE 都要先想清楚 WHERE 条件。

删除一条记录用 DELETE:

DELETE FROM goods WHERE id = 3;

执行后,表里 id 为 3 的无线鼠标就被删掉了。同样地,没有 WHERE 会把整张表清空。为了防止误操作,MySQL 客户端本身没有默认的"撤销"功能,所以务必养成一手写 DELETE、一手盯 WHERE 的习惯。

4.7 条件查询:学会用WHERE和ORDER BY

查询时通常不会一股脑全掏出来,而是带条件。比如查价格小于 300 的商品,按价格从高到低排:

SELECT id, name, price FROM goods WHERE price < 300 ORDER BY price DESC;

WHERE price < 300 过滤出符合条件的记录,ORDER BY price DESC 表示按价格降序。如果要升序,把 DESC 换成 ASC 即可。这里再补充几个常用条件示例:查价格大于等于 100 且库存大于 10 的,用 AND 连接;查名称里包含"键盘"的,用 LIKE:WHERE name LIKE '%键盘%'。这些都属于最常用的查询语法,第一篇学会这几个关键词,后面绝大多数基础查询你都能读懂了。

5. 零基础阶段最容易踩的坑和排查记录

我在帮不少新同学看环境的时候,发现有些问题是重复率非常高的。下面这五个坑,几乎每个零基础同学都会遇到至少一个。如果你现在正卡在某一步,直接对照找解决办法。

5.1 提示"mysql不是内部或外部命令"

安装完 MySQL 后,在命令行里输入 mysql --version,结果提示找不到命令。原因是系统不知道 mysql.exe 在哪个目录。解决办法:找到 MySQL 安装目录下的 bin 文件夹,比如 D:\mysql-8.0.x-winx64\bin,复制这个路径。然后在 Windows 搜索"环境变量",打开系统环境变量设置,在 Path 里新增这个路径。重新打开一个命令行窗口,再执行 mysql --version 就能成功了。

macOS 或 Linux 出现 command not found,通常是没把 mysql 命令所在目录加到 PATH,或者安装没成功。直接用绝对路径执行临时排查:找到安装目录,比如 /usr/local/mysql/bin/mysql,然后运行 /usr/local/mysql/bin/mysql -u root -p,能登录就说明服务没问题。

5.2 SQL语句总是不执行?先检查分号

很多新手在客户端输入语句后敲了回车,结果一直不出结果表格,提示符变成了 ->。这通常是因为语句末尾没有写分号。MySQL 认为你还有后续内容,一直等待输入。解决方法很简单:在 -> 后面补一个分号,再按回车,语句就会执行。

还有一种情况是字符串里的引号和 SQL 语句里的引号混用,比如中文输入法状态下输入了单引号,导致 MySQL 识别出错。在命令行里写 SQL,字符串引号一定要用英文输入法下的单引号。

5.3 中文乱码和问号

插入中文后查询出来是一堆问号,最常见的原因是创建数据库或表时没有指定 utf8mb4,或者连接字符集不是 utf8mb4。如果你已经建好了表和库,可以直接在客户端执行:

SET NAMES utf8mb4;

这个命令会告诉当前会话,使用 utf8mb4 字符集与服务器通信,执行后再查询中文通常就正常了。注意这只会影响当前会话,新开窗口需要重新执行。根治方法是回到建库建表语句,确保 DEFAULT CHARACTER SET utf8mb4 和 DEFAULT CHARSET=utf8mb4 都带上。

5.4 忘记root密码了怎么办

零基础阶段最容易的事,就是装完 MySQL 设置完密码,第二天彻底忘了。如果你只是本机练习环境,最稳妥的思路是临时跳过权限验证进去改密码。以 Windows 为例,先停止 MySQL 服务,然后在命令行用管理员身份执行 mysqld --skip-grant-tables,让服务跳过权限表启动。此时再开一个命令行,登录 mysql -u root,不需要密码就能进去。进去后要立刻把密码改掉:

FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

改完正常重启 MySQL 服务即可。要反复强调,这种方式只建议在本机测试环境使用,生产环境绝对不能直接跳过权限验证,否则任何人连上你的数据库都能拿到全部数据。

5.5 手滑把数据全删了,能恢复吗

再小心也可能写出 DELETE FROM goods 这种不带 WHERE 的语句,一执行整张表就空了。如果没有任何备份,恢复是很麻烦的。零基础阶段,最有效的恢复手段是平时的备份习惯。客户端提供了一个快捷导出命令:

mysqldump -u root -p shop > shop_backup.sql

这条命令会把 shop 库里所有表结构和数据导出成一个文件。需要恢复时执行:

mysql -u root -p shop < shop_backup.sql

建议在练习阶段养成习惯:每次做完一批操作,就备份一下。数据没了还能通过备份捞回来,比事后硬想各种数据恢复软件靠谱得多。

6. 第一篇学完,怎么继续把它学活

既然你已经走到了这里,说明建库、建表、增删改查这些基础动作已经没有大问题了。我再根据自己的经验给你一点后续建议。

6.1 给自己安排一个3天小练习

第一天,把本文的 shop 数据库重新建一遍,保证每一步都能不看文章独立完成。第二天,在同一张表里插入 10 条你感兴趣的数据,比如动漫角色、电影清单、音乐专辑,然后练习各类查询:价格区间查询、模糊查询、排序。数据有没有意义不重要,关键是手要熟。第三天,把表结构改一改,试试增加新字段:

ALTER TABLE goods ADD COLUMN note VARCHAR(200);

然后练习用 UPDATE 修改新字段的值。三天下来,你的手感和对 SQL 的理解会比只看不敲强非常多。

6.2 一个打基础的小技巧

我在实际带新人的过程中发现,零基础学 MySQL 最大的障碍不是不会写 SQL,而是不敢写、写错了不知道怎么办。SQL 是一门"错了不会出大事"的语言,你可以建一堆测试库、测试表,随便插入脏数据,练完了 DROP DATABASE 把整个测试库删掉,完全不心疼。所以放开了去点,去敲,去踩坑。

这一篇停留在这里的目的,是让你先拥有"能干活"的最小能力。下一篇我们再聊索引和约束,比如为什么查数据变慢了,怎么让查询更快,主键、唯一索引、普通索引分别怎么用。这些是每一个写 SQL 的人都要过的坎,但前提是你已经把今天的增删改查练熟了。先把这篇里的东西真正敲一遍,我们下一篇见。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 3:14:49

ORA-12505故障精解:Oracle监听器服务注册与连接描述符匹配原理

1. 问题本质与典型场景还原“ORA-12505, TNS:listener does not currently know of SID given in connect descriptor”——这行报错&#xff0c;我在过去十年带过的二十多个Oracle数据库项目里&#xff0c;几乎每三个月就要亲手处理一次。它不是那种高深莫测的内核级错误&…

作者头像 李华
网站建设 2026/10/14 3:14:10

Spring AOP 从入门到原理:一文搞懂面向切面编程与动态代理

一. 为什么需要AOP&#xff1f;首先&#xff0c;我们先来用一个例子来说明 AOP 存在的意义。就简单地以统计各个接口方法的执行耗时为例&#xff0c;根据我们之前学习的知识来说&#xff0c;我们需要在每个业务方法前后分别统计开始时间、结束时间并计算出所使用的时间&#xf…

作者头像 李华
网站建设 2026/10/14 3:14:02

AI预览版与前沿隐藏能力:普通从业者如何用出专家级效果

前段时间&#xff0c;一位常年泡在 AI 前沿一线的研究者在公开场合说了句话&#xff0c;大意是&#xff1a;外界看到的 AI 能力&#xff0c;其实只是一段“预览版”的演示&#xff1b;真正的前沿系统&#xff0c;早就在处理那些连专业人才都要耗上数年才能完成的活了。这句话让…

作者头像 李华
网站建设 2026/10/14 3:13:21

C++冒泡排序从入门到优化:原理、实现与性能对比

1. 为什么冒泡排序值得你花时间搞懂很多人第一次接触排序算法&#xff0c;学的就是冒泡排序。但也正因为它是"第一课"&#xff0c;不少人学完就扔&#xff0c;觉得这玩意儿除了教学演示&#xff0c;实际开发中根本用不上。我一开始也这么想&#xff0c;直到后来带新人…

作者头像 李华
网站建设 2026/10/14 3:11:11

IT疑难杂症诊疗室:从故障现象到根因定位的实战指南

一、引言&#xff1a;为什么需要一间“IT疑难杂症诊疗室”在IT运维与开发工作中&#xff0c;我们常常会遇到一些看似无解、排查成本极高的“疑难杂症”——它们可能表现为偶发性的服务抖动、难以复现的内存泄漏、诡异的网络超时&#xff0c;或是环境差异导致的“在我机器上明明…

作者头像 李华