☰
01-MySQL数据库基础
2026/10/5 2:31:10 网站建设 项目流程

目录:

  1. 为什么需要数据库
  2. 主流数据库一览
  3. 安装、连接与管理 MySQL 服务器
  4. 世界观:服务器、数据库、表的三层结构
  5. 实操:建库→建表→插数据→查询的完整闭环
  6. 数据的逻辑存储:行与列
  7. MySQL 架构:一条 SQL 的旅行路线
  8. SQL 分类:DDL / DML / DQL / DCL
  9. 存储引擎:MySQL 的 “可插拔硬盘大脑”
  10. 复习专区:速查表、要点串讲与自测题

1.为什么需要数据库 ⭐
1.1 用文件存数据不行吗?
很多人第一反应是:存数据?写个 txt / csv 文件不就行了?课件给出的回答是:文件保存数据有四个缺点。
很多人第一反应是:存数据?写个 txt / csv 文件不就行了?课件给出的回答是:文件保存数据有四个缺点。

为了解决这些问题,专家们设计出了数据库——它能更有效地管理数据。特别强调一句:数据库的水平是衡量一个程序员水平的重要指标。
数据库把数据存放在什么介质上?两个答案:
磁盘:数据持久化存放的地方,断电不丢(这是数据库的"仓库");
内存:用于缓存、索引等加速手段(这是数据库的"工作台")。

1.2 数据库 vs 数据库管理系统(先把名词掰清楚)
日常我们说"MySQL 是数据库",严格说 MySQL 是数据库管理系统(DBMS):一个管理数据的程序;而"数据库"是它管理起来的那一堆有组织的数据。“所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序”。

2. 主流数据库一览

💡 我的见解:选型记忆口诀——大厂互联网业务选 MySQL,传统大型复杂业务选 Oracle,微软技术栈选 SQL Server,手机里/设备里选 SQLite

3. 安装、连接与管理 MySQL 服务器 🔧
3.1 安装
这里下载大家可以参照网上当作锻炼大家的动手能力
CentOS 6.5 下编译安装 MySQL 5.6.14;
CentOS 7 通过 yum 安装 MariaDB(MySQL 的开源分支);
Windows 下安装 MySQL 5.7(课件给了专门链接,也是初学者主路线)。
beginner 建议直接走 Windows 安装包路线:一路下一步,记住自己设置的 root 密码和端口号(默认 3306),后面连接要用。

3.2 连接服务器 ⭐
课件给出的连接命令:

mysql-h127.0.0.1-P3306-uroot-p


链接成功后显示的内容

怎么读这段输出?

  • Commands end with ; or \g:每条 SQL 语句要以分号 ; 结尾才执行——这是后面所有实操的前提;
  • Server version: 5.7.21-log:告诉你连上的服务器版本;
  • 最后的 mysql> 是命令提示符:看到它,说明你已经"进了数据库的大门",之后输入的都是 SQL。

🔧 动手练:连接成功后先敲两条命令感受环境

show databases;-- 列出服务器上所有数据库selectversion();-- 查看版本号


3.3 服务器管理(Windows 服务视角)🔧
大家也可以在windows上部署mysql
课件操作路径:Win + R → 输入 services.msc → 回车,打开服务管理器,在列表里找到 MySQL 服务,用工具栏的停止 / 暂停 / 重启按钮管理它。

4. 世界观:服务器、数据库、表的三层结构 ⭐

1.安装数据库服务器 = 机器上装了一个数据库管理系统程序;
2.这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库;
3.为保存应用中实体的数据,会在数据库中创建多个表,以保存程序中实体的数据。
它们的关系

5. 实操:建库→建表→插数据→查询的完整闭环 ⭐🔧

第 1 步:创建数据库

create database helloworld;


  • 语法结构:create database 库名;
  • 说明:在服务器上新开一个"房间",名字叫helloworld。结尾的分号不能少。
  • 验证(拓展):show databases;列表里应出现helloworld。
  • 📌 易错点:库名重复会报database exists;可先drop database helloworld;删掉再建(危险命令,练完记得重建)。

第2 步:使用数据库

use helloworld;
  • 说明:告诉服务器"我接下来的操作都默认针对这个库"。不 use 就建表,会报"No database selected"。
  • 验证(拓展):select database();返回当前所在库名。
  • 💡 类比:use就是"走进房间并关上门",之后你说"表",服务器就知道是这个房间里的表。

第 3 步:创建表

create table student(idint, name varchar(32), gender varchar(2));

  • 语法结构:create table 表名( 列名 类型, 列名 类型, ... );——最后一列后面没有逗号,括号外以分号结束。
  • 验证(拓展):show tables;看到student;desc student;查看表结构(列名、类型)。
  • 📌 易错点:列之间用逗号分隔、语句结尾用分号;把varchar(32)的括号写成中文括号会直接语法报错。

第 4 步:插入数据

insert into student(id, name, gender)values(1,'张三','男');insert into student(id, name, gender)values(2,'李四','女');insert into student(id, name, gender)values(3,'王五','男');
  • 语法结构:insert into 表名 (列1, 列2, 列3) values (值1, 值2, 值3);——括号里的列和 values 里的值一一对应,顺序、个数、类型都要匹配。
  • 📌 易错点:字符串必须用单引号'张三',写成双引号或不加引号都会报错;数字不加引号。
  • 🔧 动手变体:把三条 insert 里的名字换成你自己和你同学的名字再执行一遍,体会"列值对应"。

第 5 步:查询数据

select* from student;
  • 语法结构:select 列清单 from 表名;,其中*是通配符,表示"所有列"。
  • 预期输出:

  • 注意是 6 行:因为演示时把三条 insert执行了两遍。这恰好暴露一个重要事实——数据库默认不会帮你去重,插两次就有两份一模一样的数据。6 rows in set (0.00 sec)的意思是"结果集 6 行,耗时 0 秒"。
  • 💡 由此引出一个后续课题:如何防止重复?答案是给表加主键 / 唯一约束(比如把 id 设为主键),这里先埋个伏笔。
  • 🔧 动手变体(拓展):只查部分列select name, gender from student;,体会"列清单"的作用。

6. 数据的逻辑存储:行与列 ⭐

课件 1.3.6 用一张select * from student;的结果截图标注了两个概念:

  • 列(Column):竖着看的一竖条,如gender那一列——代表一个字段/属性;
  • 行(Row):横着看的一条,如id=3 王五 男那一横条——代表一条记录。

7. MySQL 架构:一条 SQL 的旅行路线

课件指出:MySQL 是可移植的数据库,几乎能在所有操作系统上运行(Unix/Linux、Windows、Mac、Solaris),各平台底层实现不同,但物理体系结构保持一致。架构图从上到下分为这些部分:



如何记呢?
把这张图读成"一条 SQL 的旅行路线"就好记了:

旁路的Services & utilities(备份恢复、安全、复制、集群、分区、Workbench)是运维侧工具,基础阶段知道存在即可。

8. SQL 分类:DDL / DML / DQL / DCL ⭐.
一般把SQL语句分为四类:

如何记忆:

  • DDL 动"结构":建表、删表、改表结构——对应第 5 章的create database/create table;
  • DML 动"内容":增删改数据——对应insert;
  • DQL 只看不改:select;因为查询太重要太常用,所以单独拎成一类;
  • DCL 管"人和秩序":谁能干什么(grant 授权 / revoke 收权)、事务提交(commit)。

9. 存储引擎:MySQL 的"可插拔硬盘大脑" ⭐

9.1 什么是存储引擎

课件定义:存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。MySQL 的核心就是插件式存储引擎,支持多种存储引擎。

翻译成人话:SQL 是"点菜的语言",存储引擎是"后厨的做法"。同一句select * from student;,交给不同引擎,数据在磁盘上的组织方式、加锁方式、崩溃后的恢复方式都不一样。

9.2 查看存储引擎 🔧

show engines;


这里了解即可
三个核心概念的场景化讲解:

① 事务(Transactions)——“要么全做,要么全不做”。
例子:张三给李四转账 100 元,数据库要做两件事:张三账户 -100、李四账户 +100。如果扣了钱之后服务器断电,加钱没执行,钱就蒸发了。支持事务的引擎(InnoDB)能把这两步捆成一个事务:中途失败就rollback 回滚,当作没发生过;成功后commit 提交,永久生效。不支持事务的引擎(MyISAM)做不到这种保证。

② 锁粒度(表锁 vs 行锁)——“关门 vs 只按住一个座位”。
例子:演唱会开票,1 万人同时抢座。表锁(MyISAM)相当于一个人下单时整张座位表锁住,其余 9999 人排队干等;行锁(InnoDB)只锁被操作的那一行座位记录,抢 A 区的人和抢 B 区的人互不影响,并发能力天差地别。这就是课件说 MySQL(默认 InnoDB)"并发性好"的底层原因之一。

③ Memory 引擎——数据放在内存里(Hash 组织),速度极快,但重启/断电数据即丢失,所以课件注释说它 “useful for temporary tables”(适合临时表),不能当主存储。

其余引擎一句话扫盲:Archive 擅长压缩归档历史数据(存储成本 Very Low、批量插入 Very High);NDB 用于集群场景;Blackhole 是"黑洞",写进去的数据直接消失,用于特殊复制拓扑;CSV 把表存成 csv 文件。

  1. 复习专区:速查表、要点串讲与自测题
    10.1 命令速查表

10.2 要点串讲

  1. 文件存数据有四大缺点:不安全、难查询、难海量、难程序控制 → 所以需要数据库;数据落磁盘,索引进内存。
  2. 六大主流库:SQL Server(微软/.Net)、Oracle(大型复杂)、MySQL(流行/并发好/电商 SNS 论坛)、PostgreSQL(伯克利/免费自由)、SQLite(嵌入式几百 K)、H2(Java 类库)。
  3. 连接命令四参数-h -P -u -p,默认本地 + 3306;SQL 以分号结尾;MySQL 是后台服务,关窗口≠关服务。
  4. 三层结构:服务器 → 数据库(一应用一库)→ 表(一实体一表)。
  5. 最小闭环五步:create database → use → create table → insert → select。
  6. 行 = 记录、列 = 字段;查改删动行,定义结构动列。
  7. 架构路线:连接器 → 连接池 → SQL 接口 → 解析器 → 优化器 → 存储引擎 → 文件/日志;引擎可插拔。
  8. SQL 四类:DDL(create/drop/alter)、DML(insert/delete/update)、DQL(select)、DCL(grant/revoke/commit)。
  9. 存储引擎 = 存储/索引/更新查询数据的实现方法;show engines;看清单,InnoDB 是 DEFAULT;InnoDB 胜在事务、行锁、外键、聚簇索引,MyISAM 胜在批量插入与低存储成本。

10.3 自测题(先答后对)

  1. 文件保存数据的四个缺点是什么?
  2. mysql -h 127.0.0.1 -P 3306 -u root -p中-P和-p分别是什么?不写-h和-P时默认连哪里?
  3. 服务器、数据库、表三者是什么关系?一般按什么原则建库、建表?
  4. 写出"建库 hw → 使用它 → 建一张只有 id(int) 和 title(varchar(64)) 的表 → 插入一条数据 → 查全部"的完整 SQL。
  5. 课件 select 结果截图为什么是 6 行?这说明数据库默认会去重吗?
  6. 行和列分别对应什么概念?delete from student where id=3;操作的是行还是列?
  7. 一条 SQL 从客户端到落盘经过哪些组件?
  8. 把create / insert / select / grant / update / drop / commit / delete归入 DDL、DML、DQL、DCL。
  9. 什么是存储引擎?用哪条命令查看?默认引擎是哪个?
  10. InnoDB 相对 MyISAM 的四个核心优势?转账场景为什么必须用支持事务的引擎?

参考答案

  1. 安全性问题;不利于查询和管理;不利于存储海量数据;程序中控制不方便。
  2. -P端口(大写)、-p密码提示(小写);默认连接本地、默认 3306 端口。
  3. 一个服务器管理多个数据库,一个数据库含多个表;一般一个应用建一个库,一个实体建一张表。
  4. create database hw; use hw; create table t(id int, title varchar(64)); insert into t (id, title) values (1, 'hello'); select * from t;
  5. 因为三条 insert 被执行了两遍;说明数据库默认不去重,需要主键/唯一约束保证(后续内容)。
  6. 行 = 一条记录,列 = 一个字段;delete 按条件删除记录,操作的是行。
  7. 连接器 → 连接池(认证)→ SQL 接口 → 解析器 → 优化器 → 存储引擎 → 文件系统/日志。
  8. DDL:create、drop;DML:insert、update、delete;DQL:select;DCL:grant、commit。
  9. 存储引擎是 DBMS 存储数据、建索引、更新查询数据等技术的实现方法;show engines;;默认 InnoDB(Support 列 DEFAULT)。
  10. 事务、行级锁、外键、聚簇索引(另有 MVCC);转账涉及"扣款+加款"两步,事务保证要么全部成功要么全部回滚,避免中途故障导致资金丢失。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询