MySQL基础总结

一、基础概念​

核心定义:​

        数据库(DB):数据存储的仓库;​

        数据库管理系统(DBMS):管理 DB 的工具(如 MySQL,C/S 架构的关系型 DBMS);​

        核心功能:数据的增、删、改、查(CRUD);​

        数据(data):客观事务的原始记录(数字、文字、视频等);​

        信息(info):经加工后的有效数据。​

数据结构分类:​

        结构化数据:表格形式(行 + 列,字段类型固定);​

        半结构化数据:HTML、XML、JSON、YAML;​

        非结构化数据:聊天记录、评论、视频、语音。​

二、数据库分类​

分类维度​

具体类型​

核心特点​

数据模型​

关系型(RDBMS)​

结构化存储,用 SQL 操作(如 MySQL)​

非关系型(NoSQL)​

半 / 非结构化存储,无固定 schema​

部署方式​

本地部署​

存储在本地服务器​

云部署​

云厂商提供的托管服务​

用途场景​

OLTP(在线事务处理)​

日常业务操作(如订单提交、用户注册)​

OLAP(在线分析处理)​

数据统计与分析(如报表生成)​

HTAP(混合)​

兼顾事务处理与数据分析​

架构模式​

集中式​

所有数据存储在单台服务器​

分布式​

数据拆分到多台服务器,支持无限扩容​

云原生​

基于虚拟化 + 分布式,云厂商提供服务​

存储介质​

磁盘​

持久化存储,断电不丢失,I/O 性能较低​

内存​

临时缓存,I/O 性能高,断电数据丢失​

三、SQL 核心语法​

语言类型​

作用范围​

核心操作命令​

DDL(数据定义)​

库 / 表 / 索引 / 用户等结构​

CREATE(创建)、ALTER(修改)、DROP(删除)、SHOW(查看)​

DML(数据操纵)​

表中数据​

INSERT(新增)、UPDATE(修改)、DELETE(删除)​

DQL(数据查询)​

数据查询​

SELECT(支持筛选、分组、排序、联查、分页)​

DCL(数据控制)​

权限 / 事务​

GRANT(授权)、REVOKE(回收权限)、USE(切换数据库)​

DTL(事务控制)​

事务管理​

COMMIT(提交)、ROLLBACK(回滚)​

四、核心实操命令​

1. 库表操作​

        查看所有库:SHOW DATABASES;​

        创建库:CREATE DATABASE 库名;​

        删除库:DROP DATABASE 库名;(谨慎使用,会删除库内所有数据)​

        切换库:USE 库名;​

        创建表:CREATE TABLE 表名(字段名 数据类型 约束条件,...);​

        修改表名:ALTER TABLE 原表名 RENAME TO 新表名;​

        添加字段:ALTER TABLE 表名 ADD COLUMN 字段名 类型 [约束];​

        删除字段:ALTER TABLE 表名 DROP 字段名;​

        删除表:DROP TABLE 表名;​

2. 基础 CRUD​

        插入数据:INSERT INTO 表名(字段1,字段2...) VALUES(值1,值2...);​

        修改数据:UPDATE 表名 SET 字段=新值 WHERE 条件;(必须加 WHERE,避免全表更新)​

        删除数据:DELETE FROM 表名 WHERE 条件;(必须加 WHERE,避免全表删除)​

        查询数据:SELECT 字段 FROM 表名 [WHERE 条件];​

3. 密码重置(安全模式)​

        停止 MySQL 服务:systemctl stop mysqld​

        启动安全模式:mysqld_safe --skip-grant-tables &​

        无密码登录:mysql -u root​

        切换系统库:USE mysql;​

        刷新权限:FLUSH PRIVILEGES;​

        修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';(MySQL8.x);兼容旧插件:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';​

        退出重启:EXIT; → systemctl start mysqld​

五、数据类型与约束​

1. 常用数据类型​

类别​

类型​

核心用途​

数值型​

INT​

存储整数(ID、年龄、数量)​

BIGINT​

大整数(订单号、海量数据 ID)​

DECIMAL(M,D)​

定点数(金额、税率,无精度误差)​

字符串型​

VARCHAR (长度)​

可变长字符串(姓名、备注)​

CHAR (长度)​

固定长字符串(手机号、身份证号)​

日期时间型​

DATETIME​

日期 + 时间(订单创建时间,范围 1000-9999 年)​

TIMESTAMP​

时间戳(自动更新,范围 1970-2038 年)​

DATE​

仅日期(生日、注册日期)​

2. 约束条件(保障数据完整性)​

约束类型​

核心作用​

特点​

主键(PRIMARY KEY)​

唯一标识表中记录​

非空 + 唯一,一张表仅一个​

外键(FOREIGN KEY)​

关联两张表,保证表间数据一致性​

关系型数据库特有,可多个​

非空(NOT NULL)​

强制字段必须赋值​

不允许空值​

唯一(UNIQUE)​

强制字段值不重复​

允许一个空值,一张表可多个​

3. 数据完整性分类​

        实体完整性:通过主键 / 唯一约束实现(记录唯一可识别);​

        域完整性:通过数据类型、非空约束实现(字段值符合规则);​

        参照完整性:通过外键实现(多表关联合法);​

        用户定义完整性:自定义业务规则(如订单金额 > 0)。​

六、查询进阶​

1. 核心查询功能​

查询类型​

语法关键词 / 核心用法​

比较查询​

WHERE 字段 运算符 值(=、!=、IS NULL 等)​

范围查询​

BETWEEN...AND...、IN (值 1, 值 2...)、NOT IN​

模糊查询​

LIKE(% 匹配任意字符,_匹配单个字符)​

分组查询​

GROUP BY 字段 + HAVING 聚合条件(过滤分组结果)​

排序查询​

ORDER BY 字段 [ASC/DESC](默认升序)​

分页查询​

LIMIT [偏移量,] 记录数(第 N 页:LIMIT (N-1)*M,M)​

多表联查​

INNER JOIN(匹配记录)、LEFT JOIN(左表全显)、RIGHT JOIN(右表全显)​

联合查询​

UNION(去重)、UNION ALL(保留重复)​

子查询​

嵌套在主查询中的查询,结果作为主查询条件 / 数据源​

2. 聚合函数​

        COUNT ():统计记录数;​

        SUM ():求和;​

        AVG ():求平均值;​

        MAX ():求最大值;​

        MIN ():求最小值。​

七、用户与权限​

用户标识:用户名@主机名(主机名:localhost= 本机,%= 任意地址);​

常用操作命令:​

        创建用户:CREATE USER '用户名'@'地址' IDENTIFIED BY '密码';​

        授权:GRANT 权限1,权限2 ON 库.表 TO '用户名'@'地址';(ALL = 所有权限,.= 所有库表)​

        回收权限:REVOKE 权限 ON 库.表 FROM '用户名'@'地址';​

        刷新权限:FLUSH PRIVILEGES;​

        修改密码(MySQL8.x):ALTER USER '用户名'@'地址' IDENTIFIED BY '新密码';​

        删除用户:DROP USER '用户名'@'地址';​

八、数据备份​

备份分类:​

逻辑备份:生成 SQL 文件(mysqldump 工具,适合中小型数据);​

物理备份:复制数据目录(XtraBackup 工具,热备,适合大数据量);​

全量备份:备份所有数据;​

增量备份:仅备份新增 / 变更数据。

​常用命令:​

本地备份:mysqldump -uroot -p 库名 > 备份文件名.sql;​

远程备份:mysqldump -uroot -p -hIP地址 库名 > 备份文件名.sql;​

XtraBackup 安装核心步骤:安装依赖(libssl1.1)→ 配置 Percona 仓库 → 安装 percona-xtrabackup-80。​

九、核心特性​

1. 事务(ACID 特性)​

        原子性(Atomicity):操作要么全成,要么全败;​

        一致性(Consistency):事务前后数据状态合法;​

        隔离性(Isolation):并发事务互不干扰(默认 RR 级别,避免脏读);​

        持久性(Durability):提交后数据永久保存。​

        并发问题:脏读(读未提交数据)、不可重复读(同一数据多次读取结果不一致)、幻读(查询无数据但插入时冲突);​

        隔离级别:Read uncommitted(读未提交)→ Read committed(读已提交)→ Repeatable read(可重复读,MySQL 默认)→ Serializable(串行化,最高级别)。​

2. 视图​

        定义:基于 SELECT 语句的虚拟表,不存储实际数据,原表变更会同步;​

        功能:简化复杂查询、隐藏敏感字段、统一数据访问接口;​

        常用命令:CREATE VIEW 视图名 AS 查询语句;、ALTER VIEW 视图名 AS 新查询;、DROP VIEW 视图名;。​

3. 存储引擎​

引擎​

核心特点​

适用场景​

InnoDB(默认)​

支持事务、行级锁、聚簇索引​

高并发、高安全场景(金融、电商)​

MyISAM​

不支持事务、表级锁、读性能好​

读多写少场景(博客、静态网站)​

MEMORY​

内存存储、读写快、断电丢失​

临时缓存数据​

CSV​

文本存储、逗号分隔、兼容性强​

简单数据存储(日志、数据交换)​

4. 索引​

        定义:基于 B + 树等数据结构,加速查询(类似字典目录);​

        优缺点:查询提速,但占用存储,降低增删改效率;​

        核心类型:​

        主键索引:聚簇索引,唯一非空;​

        唯一索引:值唯一,允许一个空值;​

        普通索引:无唯一性约束;​

        联合索引:多字段组合;​

        覆盖索引:包含查询所需所有字段(无需回表);​

        底层结构(InnoDB):B + 树(叶子节点存数据 / 主键,非叶子节点存索引键 + 指针,支持范围查询 / 排序)。​

5. 锁机制​

        作用:解决并发事务冲突(脏读、幻读等);​

        核心分类:​

        颗粒度:全局锁(锁整个库)、表级锁(锁整张表)、行级锁(锁单行数据);​

        属性:共享锁(读读共享、读写互斥)、排他锁(写写 / 读写互斥);​

        模式:悲观锁(先锁后操作,写多读少)、乐观锁(先操作后验证,读多写少);​

        死锁:多事务循环等待对方锁资源,需按固定顺序锁资源避免。​

十、数据类型命令使用​

        5种常用数据类型​

        INT(数值型):存储学生 ID、年龄;​

        BIGINT(数值型):存储订单号、海量用户 ID;​

        VARCHAR(字符串型):存储姓名、地址;​

        CHAR(字符串型):存储手机号、身份证号;​

        DATETIME(日期型):存储订单创建时间、登录时间。​        

        创建 student 表:​

CREATE TABLE student(​

id INT PRIMARY KEY AUTO_INCREMENT,​

name VARCHAR(50) NOT NULL,​

age INT,​

score FLOAT(5,2),​

create_time DATETIME DEFAULT CURRENT_TIMESTAMP​

);​

        插入单条数据:​

INSERT INTO student(name, age, score) VALUES('张三', 21, 89.00);​

        查询所有数据并按 score 降序:​

SELECT * FROM student ORDER BY score DESC;​

        查询 age18-22、score≥80 的姓名和分数(按 age 升序):​

SELECT name, score FROM student WHERE age BETWEEN 18 AND 22 AND score >= 80 ORDER BY age;​

        5 个聚合函数:​

        COUNT ():统计记录总数;​

        SUM ():计算字段总和;​

        AVG ():计算字段平均值;​

        MAX ():获取字段最大值;​

        MIN ():获取字段最小值。​

        按 age 分组统计人数和平均分数(人数≥2):​

SELECT age, COUNT(*) AS num, AVG(score) AS avg_score FROM student GROUP BY age HAVING num >= 2;​

        更新 id=5 的学生信息:​

UPDATE student SET score = 95, age = 20 WHERE id = 5;​

        删除 score<60 且 age>25 的学生:​

DELETE FROM student WHERE score < 60 AND age > 25;​

        主键与外键的核心区别:​
  • 主键(PRIMARY KEY):作用于单表,唯一标识记录(非空 + 唯一),一张表仅一个;​
  • 外键(FOREIGN KEY):作用于两张表,关联主从表数据(保证一致性),一张表可多个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值