MySQL 数据库学习总结|理论 + SQL 实训完整笔记

一、数据的三种分类

数据按照存储结构分为结构化、半结构化、非结构化三类。

  1. 结构化数据 可以用二维表格描述,先定义结构,再存入数据,典型就是MySQL数据表。每行代表一条实体记录,字段固定,有属性、元组概念。

    例子:学生信息表,学号、姓名、年龄字段提前定义好。

  2. 半结构化数据 介于结构化和无结构之间,自描述数据,先有数据再有结构,自带标记分层。

    例子:JSON、XML、HTML,NoSQL部分数据。

  3. 非结构化数据 没有固定格式,整体存储,不能用二维表表示。

    例子:图片、音频、视频、二进制文件。

二、数据管理发展的三个阶段

  1. 人工管理阶段(50年代中期前) 没有专门管理软件,只有磁带、纸带,全部人工处理,只有批处理。
  2. 文件系统阶段(50后期‑60中期) 磁盘出现,用文件保存数据,可以联机实时处理。缺点:数据冗余大,没有统一访问接口,并发、安全控制弱。
  3. 数据库系统阶段(60年代后期至今) 诞生DBMS数据库管理系统,实现数据共享、低冗余、高独立性,程序和数据解耦,也是我们现在使用的模式。

基础名词概念

  • Database 数据库:长期存储、有组织、可共享的数据集合。
  • DBMS数据库管理系统:操纵管理数据库的大型软件,提供DDL/DML,负责并发、备份、安全、完整性。
  • DBA数据库管理员:负责数据库部署、运维、故障处理,保障稳定性、安全性、高可用。

DBMS分为三代模型:层次模型(树状,一对多,IBM IMS)、网状模型(多对多)、关系模型(二维表,MySQL、Oracle)。

三、E‑R模型 & 实体联系

E‑R图用来做数据库设计,由三部分组成:

  1. 实体(矩形):客观事物,例如学生、课程。
  2. 属性(椭圆形):实体的特征,学生的姓名、学号。
  3. 联系(菱形):实体之间关系。

联系分为3种:

  • 1:1一对一:人 ↔ 身份证
  • 1:n一对多:班级 ↔ 学生
  • m:n多对多:学生 ↔ 课程,需要中间关联表。

四、数据库三大范式(做表设计必看)

范式目的:减少数据冗余,避免异常,一般业务满足3NF即可

  1. 1NF第一范式:原子性 字段不可再拆分,一个单元格只存一个值。 ❌反例:联系方式:手机号,邮箱写在同一列。
  2. 2NF第二范式:消除部分依赖 满足1NF基础上,所有非主键字段必须完全依赖整个主键,不能只依赖联合主键其中一部分。
  3. 3NF第三范式:消除传递依赖 满足2NF,非主键字段不能互相推导、传递依赖主键。 ❌反例:学生表里面同时存学院ID、学院地址;学院地址通过学院ID就能得到,属于传递依赖,需要拆分成两张表。
范式 核心
1NF 字段原子不可拆分
2NF 消除对主键的部分依赖
3NF 消除传递依赖

五、SQL五大语言分类

分类 全称 作用 关键字
DDL 数据定义语言 定义库、表结构 CREATE、DROP、ALTER
DML 数据操纵语言 增删改表内数据 INSERT、DELETE、UPDATE
DQL 数据查询语言 查询数据 SELECT
DCL 数据控制语言 账号权限管理 GRANT、REVOKE
TCL 事务控制 事务提交回滚 BEGIN、COMMIT、ROLLBACK

重点实操命令

1. 库操作
bash 复制代码
-- 创建数据库
CREATE DATABASE school DEFAULT CHARACTER SET utf8mb4;
-- 查看数据库
SHOW DATABASES;
-- 删除数据库
DROP DATABASE IF EXISTS school;
2. 表操作
bash 复制代码
USE school;
CREATE TABLE info (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
score DECIMAL(5,2),
address VARCHAR(50) DEFAULT '南京'
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

DESC info; -- 查看表结构
3. DML增删改
bash 复制代码
insert into info(name,score) values ('张三',88);
update info set score=90 where id=1;
delete from info where id=1;

⚠️ update / delete 一定要加where条件 ,否则全表修改/删除!生产禁止裸写delete from 表名;。

4. DQL查询,单表常用
bash 复制代码
select * from info;
select name,score from info where score>60;
select * from info order by score desc;
select * from info limit 0,3; --分页
select count(*),avg(score) from info group by gender;

六、多表连接查询(面试高频)

  1. INNER JOIN 内连接:只返回两边匹配成功的数据(交集)
  2. LEFT JOIN 左连接:左表全部保留,右表匹配不到填NULL
  3. RIGHT JOIN 右连接:右表全部保留,左表匹配不到填NULL
  4. CROSS JOIN交叉连接:笛卡尔积,开发几乎不用
  5. 自连接:一张表自己连接自己,处理上下级、邀请关系
  6. UNION / UNION ALL:把查询结果上下拼接,UNION自动去重,UNION ALL更快不去重

MySQL不直接支持FULL JOIN全外连接,用LEFT JOIN UNION RIGHT JOIN模拟。

七、MySQL用户与权限

MySQL账号格式:'用户名'@'允许访问的主机',用户名+主机才是完整账号。 %代表通配符,允许任意IP访问。

bash 复制代码
-- 创建用户
create user 'test'@'192.168.108.%' identified by '123456';
-- 授权
grant all on school.* to 'test'@'192.168.108.%';
-- 回收权限
revoke all on school.* from 'test'@'192.168.108.%';
-- 查看权限
show grants for 'test'@'192.168.108.%';

注意:新建用户只有连接权限USAGE,必须授权才能操作库表。

八、LAMP架构实战理解

LAMP = Linux + Apache + MySQL + PHP,搭建动态网站。

  • L:Linux操作系统
  • A:Apache httpd网页服务
  • M:MySQL数据库,存放网站数据
  • P:PHP,解析动态网页代码

实验部署WordPress博客:

  1. web节点安装httpd、php相关扩展;
  2. mysql节点创建wordpress数据库、创建业务账号并授权远程访问;
  3. web下载wordpress源码,配置虚拟主机;
  4. 修改windows hosts做域名解析,浏览器访问完成博客安装。

九、备份与恢复

数据丢失原因:人为误操作、程序bug、磁盘硬件损坏、灾难。

  • 逻辑备份:mysqldump,导出SQL语句,数据库运行状态下做备份。
  • 物理备份:直接复制数据库底层数据文件;冷备份需要关闭数据库。

生产环境必须定期备份,防止删库跑路!

相关推荐
oradh2 小时前
Oracle 索引深度解析(从内部原理到实战案例)
数据库·oracle
.冰块.2 小时前
MySQL下篇 运维实战:备份恢复 + 主从复制 + MHA 高可用,含完整拓扑
运维·mysql·读写分离·高可用·主从复制·mha
~kiss~2 小时前
LangGraph 之 Human-in-the-loop,人机协作/在环
学习
Yyyyyy~2 小时前
[Mysql] 数据类型
数据库·mysql
FITA阿泽要努力2 小时前
第 1 周·第 3 讲|工具如何交给模型:工具定义、参数与结构化调用
服务器·数据库·python·agent
需要8262 小时前
缓存与数据库一致性:延迟双删与订阅 binlog 的取舍
数据库·缓存
陈年老古董2 小时前
Hive 分区表学习笔记:语法、操作、二级分区与动态分区
hive·笔记·学习
li星野2 小时前
The 3 Common Tenses — Notes & Supplements
学习
小弥儿2 小时前
GitHub今日热榜 | 2026-10-09:PS5 移植登顶,AI 创作工具占三席
人工智能·学习·开源·github