mysql技术

MySQL 核心知识总结

一、数据库基础

1. 数据分类

  • 结构化数据:可通过二维表表达,有固定格式和长度,适用于关系型数据库存储,如用户信息表。

  • 半结构化数据:介于结构化与非结构化之间,无严格表结构但含语义标记,例如 HTML、JSON、XML 数据。

  • 非结构化数据:无固定结构和长度,无法用二维表呈现,常见类型有音视频文件、二进制文件等。

2. 数据管理发展阶段

阶段 时间 核心特点
人工管理 20 世纪 50 年代中期前 依赖人工管理,仅支持科学计算,采用批处理方式
文件系统 20 世纪 50 年代后期 - 60 年代中期 出现磁盘存储设备,数据可长期保存,支持批处理与联机实时处理
数据库系统 20 世纪 60 年代后期至今 高数据独立性、低冗余度,通过 DBMS 统一管理数据

3. 核心概念

  • 数据库(Database):长期存储在计算机内的有组织、可共享的大量数据集合。

  • 数据库管理系统(DBMS):操纵和管理数据库的软件,负责数据库的建立、使用和维护。

  • 数据库管理员(DBA):负责数据库全生命周期管理,保障其稳定性、安全性和高可用性。

  • 关系型数据库(RDBMS):采用二维表结构组织数据,常见产品有 MySQL、Oracle、SQL Server 等。

二、MySQL 概述

1. 发展历程

  • 1995 年首次发布,2008 年被 Sun 收购,2009 年随 Sun 并入 Oracle。

  • 核心分支包括 MariaDB(MySQL 之父主导)、Percona Server(兼容 MySQL 并优化性能)。

  • 全球 Top20 网站中 90% 使用 MySQL,国内淘宝、百度、腾讯等均有广泛应用。

2. 核心特性

  • 开源免费,支持标准 SQL 语言。

  • 跨平台运行,支持多编程语言。

  • 采用插件式存储引擎(如 InnoDB、MyISAM),可灵活选择。

  • 基于单进程多线程模式,提供丰富测试组件和扩展功能。

3. 多实例配置

  • 定义:一台服务器运行多个 MySQL 服务进程,每个进程监听独立端口,拥有独立配置和数据。

  • 优势:节约硬件资源、便于版本对比测试、集中管理。

  • 劣势:存在资源抢占问题,服务器故障会导致所有实例不可用。

三、SQL 语言基础

1. 语言规范

  • 不区分大小写,建议关键字大写,库名、表名区分大小写。

  • 语句以 ; 结尾,可单行或多行书写,关键词不可跨行。

  • 支持单行注释(-- 注释内容# 注释内容)和多行注释(/* 注释内容 */)。

2. 语句分类

类型 功能 核心语句
DDL(数据定义语言) 定义数据库对象 CREATE、DROP、ALTER
DML(数据操纵语言) 操作表中数据 INSERT、UPDATE、DELETE
DQL(数据查询语言) 查询数据 SELECT
DCL(数据控制语言) 控制权限 GRANT、REVOKE
TCL(事务控制语言) 管理事务 BEGIN、COMMIT、ROLLBACK

3. 数据类型

  • 数值型:TINYINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL。

  • 日期时间型:DATE、TIME、YEAR、DATETIME、TIMESTAMP。

  • 字符串型:CHAR、VARCHAR、TEXT、BLOB、ENUM、SET。

  • 其他类型:JSON、空间数据类型(GEOMETRY、POINT 等)。

四、数据库与表操作(DDL)

1. 数据库操作

复制代码
-- 创建数据库

CREATE DATABASE \[IF NOT EXISTS] 数据库名 \[DEFAULT CHARACTER SET 字符集];

-- 查看数据库

SHOW DATABASES;

-- 修改数据库字符集

ALTER DATABASE 数据库名 CHARACTER SET 字符集;

-- 删除数据库

DROP DATABASE \[IF EXISTS] 数据库名;

2. 表操作

复制代码
-- 创建表

CREATE TABLE \[IF NOT EXISTS] 表名 (

 字段名 数据类型 \[修饰符],

PRIMARY KEY (主键字段)

) \[ENGINE=存储引擎 DEFAULT CHARSET=字符集];

-- 查看表结构

DESC 表名;

-- 修改表(添加字段、修改字段、删除字段)

ALTER TABLE 表名 ADD 字段名 数据类型;

ALTER TABLE 表名 MODIFY 字段名 新数据类型;

ALTER TABLE 表名 DROP 字段名;

-- 删除表

DROP TABLE \[IF EXISTS] 表名;

五、数据操作(DML & DQL)

1. 数据操纵(DML)

复制代码
-- 插入数据

INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2), (值3, 值4);

-- 更新数据(必须加条件,避免全表更新)

UPDATE 表名 SET 字段1=值1 WHERE 条件;

-- 删除数据(逻辑删除推荐用字段标记,如 is\_del=1)

DELETE FROM 表名 WHERE 条件;

-- 清空表(DDL 语句,效率更高)

TRUNCATE TABLE 表名;

2. 数据查询(DQL)

复制代码
-- 基础查询

SELECT 字段1, 字段2 FROM 表名 WHERE 条件;

-- 去重查询

SELECT DISTINCT 字段 FROM 表名;

-- 排序(ASC 升序,DESC 降序)

SELECT \* FROM 表名 ORDER BY 字段 排序方式;

-- 分页查询(LIMIT 偏移量, 条数)

SELECT \* FROM 表名 LIMIT 0, 10;

-- 分组统计(配合聚合函数)

SELECT 分组字段, COUNT(\*) FROM 表名 GROUP BY 分组字段 HAVING 过滤条件;

六、用户与权限管理

1. 用户操作

复制代码
-- 创建用户

CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';

-- 修改密码

ALTER USER '用户名'@'主机' IDENTIFIED BY '新密码';

-- 删除用户

DROP USER '用户名'@'主机';

2. 权限控制

  • 权限级别:管理类(CREATE USER、SHUTDOWN)、库表级(CREATE、SELECT、UPDATE)、字段级(SELECT (字段))。

  • 授权语句:GRANT 权限 ON 数据库.表 TO '用户'@'主机' [WITH GRANT OPTION];

  • 撤销权限:REVOKE 权限 ON 数据库.表 FROM '用户'@'主机';

  • 查看权限:SHOW GRANTS FOR '用户'@'主机';

七、备份与恢复

1. 备份分类

  • 物理冷备:关闭数据库后打包数据文件,备份恢复速度快。

  • 逻辑备份:通过 mysqldump 备份库表结构和数据,适用于跨版本迁移。

  • 增量备份:基于二进制日志,备份两次全备之间的变更数据。

2. 核心命令

复制代码
-- 逻辑备份(备份单个数据库)

mysqldump -u 用户名 -p 数据库名 > 备份文件.sql;

-- 备份所有数据库

mysqldump -u 用户名 -p --all-databases > 全量备份.sql;

-- 恢复数据

mysql -u 用户名 -p 数据库名 < 备份文件.sql;

-- 增量备份(刷新二进制日志)

mysqladmin -u 用户名 -p flush-logs;

八、高可用架构

1. 主从复制

  • 原理:主库写入二进制日志,从库通过 I/O 线程读取日志并写入中继日志,SQL 线程重放日志实现数据同步。

  • 作用:数据冗余、灾难恢复、分担读负载。

  • 配置步骤:主库开启二进制日志、创建复制用户;从库配置 server-id、指定主库信息并启动复制。

2. 读写分离

  • 架构:主库处理写操作,从库处理读操作,通过中间件(Amoeba、MySQL-Proxy)实现请求分发。

  • 优势:提升并发处理能力,避免读写锁冲突。

3. MHA 高可用

  • 组成:MHA Manager(管理节点)和 MHA Node(数据节点)。

  • 特性:主库故障时 0-30 秒自动切换,最大程度保障数据不丢失。

  • 适用场景:一主多从架构,支持自动故障转移和手动主从切换。

九、实战应用

1. LAMP 架构部署

  • 组成:Linux + Apache + MySQL + PHP。

  • 应用:搭建 WordPress 博客、电商网站等动态应用。

  • 核心步骤:安装配置 Apache 和 PHP、创建 MySQL 数据库和用户、部署应用程序并配置连接。

2. 数据导出

  • 利用 Python + pandas + pymysql 可将 MySQL 数据导出为 Excel 格式,便于数据分析。
相关推荐
阿方索2 小时前
MySQL
数据库·mysql
蓝影铁哥2 小时前
浅谈国产数据库OceanBase
java·linux·数据库·oceanbase
JosieBook2 小时前
【大模型】用 AI Ping 免费体验 GLM-4.7 与 MiniMax M2.1:从配置到实战的完整教程
数据库·人工智能·redis
weixin_425023002 小时前
MybatisPlusJoin 完整样例
java·数据库·sql
运维行者_2 小时前
不同规模企业如何选 OPM?参考局域网管理软件与 cpu 温度监控适配指南
大数据·运维·服务器·网络·数据库·postgresql·snmp
冰冰菜的扣jio3 小时前
MySQL高性能优化合集
数据库·mysql
weixin_404679313 小时前
vscode 配置cpp调试环境
数据库·ide·vscode·编辑器
TG:@yunlaoda360 云老大3 小时前
华为云国际站代理商GaussDB主要有什么作用呢?
服务器·数据库·华为云·gaussdb
ohoy3 小时前
业务数据聚合分析 xxl-job定时任务
数据库·oracle