4.1.2 存储->数据库:MySQL

4.1.2 存储->数据库:MySQL 一、MySQL 基础认知什么是 MySQLMySQL 是一款开源的关系型数据库管理系统RDBMS基于 SQL结构化查询语言操作数据以高性能、易部署、跨平台支持 Windows/Linux/macOS著称广泛用于 Web 开发如 PHPMySQL、PythonMySQL 组合核心特点免费开源社区版企业版提供商业支持支持多线程、多用户并发访问支持事务、索引、视图、存储过程等核心数据库特性兼容多种存储引擎如 InnoDB、MyISAM默认 InnoDB核心概念概念解释数据库Database存储相关数据的容器一个 MySQL 实例可包含多个数据库表Table数据库的基本存储单元由行记录和列字段组成字段Column表的列定义数据类型如 INT、VARCHAR、DATE记录Row表的行是一条完整的数据主键Primary Key唯一标识表中记录的字段非空且唯一索引Index加速查询的结构类似书籍目录避免全表扫描事务Transaction一组不可分割的操作遵循 ACID 原则原子性、一致性、隔离性、持久性二、MySQL 核心操作实战以下是最常用的操作基于 MySQL 8.0 版本主流版本所有命令结尾需加;分隔连接 / 退出 MySQL# 连接MySQL本地mysql-uroot-p# -u指定用户名-p提示输入密码# 连接远程MySQLmysql-h192.168.1.100-uroot-p-P3306# -h指定IP-P指定端口默认3306# 退出MySQLexit;# 或 quit;数据库操作CRUD-- 1. 创建数据库指定字符集和排序规则避免中文乱码CREATEDATABASEIFNOTEXISTSmydbDEFAULTCHARSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 2. 查看所有数据库SHOWDATABASES;-- 3. 选择要操作的数据库USEmydb;-- 4. 删除数据库谨慎DROPDATABASEIFEXISTSmydb;数据表操作-- 1. 创建表以用户表为例CREATETABLEIFNOTEXISTSuser(idINTPRIMARYKEYAUTO_INCREMENT,-- 主键自增nameVARCHAR(50)NOTNULL,-- 姓名非空ageINTDEFAULT18,-- 年龄默认18emailVARCHAR(100)UNIQUE,-- 邮箱唯一create_timeDATETIMEDEFAULTNOW()-- 创建时间默认当前时间)ENGINEInnoDBDEFAULTCHARSETutf8mb4;-- 2. 查看表结构DESCuser;-- 或 DESCRIBE user;-- 3. 修改表添加字段ALTERTABLEuserADDCOLUMNphoneVARCHAR(20)AFTERage;-- 4. 删除表DROPTABLEIFEXISTSuser;4. 数据操作增删改查-- 1. 插入数据INSERTINSERTINTOuser(name,age,email)VALUES(张三,20,zhangsantest.com),(李四,22,lisitest.com);-- 2. 查询数据SELECT核心-- 基础查询SELECT*FROMuser;-- 查询所有字段SELECTname,ageFROMuserWHEREage20;-- 条件查询SELECT*FROMuserORDERBYageDESCLIMIT2;-- 排序分页-- 3. 修改数据UPDATEUPDATEuserSETage21WHEREname张三;-- 4. 删除数据DELETEDELETEFROMuserWHEREid2;5. 索引操作优化查询-- 1. 创建索引给email字段加索引CREATEINDEXidx_user_emailONuser(email);-- 2. 查看索引SHOWINDEXFROMuser;-- 3. 删除索引DROPINDEXidx_user_emailONuser;三、MySQL 关键特性详解存储引擎MySQL 支持多种存储引擎核心区别如下特性InnoDB默认MyISAM事务支持支持不支持行级锁支持表级锁外键约束支持不支持崩溃恢复支持不支持性能写操作优读操作优事务管理-- 开启事务STARTTRANSACTION;-- 执行操作UPDATEuserSETage25WHEREid1;-- 提交事务确认修改COMMIT;-- 回滚事务撤销修改-- ROLLBACK;权限管理安全-- 创建用户仅允许本地访问CREATEUSERtest_userlocalhostIDENTIFIEDBY123456;-- 授权给test_user授予mydb所有表的查询/插入权限GRANTSELECT,INSERTONmydb.*TOtest_userlocalhost;-- 刷新权限FLUSHPRIVILEGES;-- 撤销权限REVOKEINSERTONmydb.*FROMtest_userlocalhost;-- 删除用户DROPUSERtest_userlocalhost;四、实用技巧与注意事项** 避免使用 SELECT ***只查询需要的字段减少数据传输和内存占用合理加索引索引加速查询但会降低插入 / 更新 / 删除速度仅给常用查询字段加索引防止 SQL 注入使用预处理语句如PREPARE或 ORM 框架如 Python 的 SQLAlchemy避免直接拼接 SQL定期备份使用mysqldump工具备份数据库mysqldump-uroot-pmydbmydb_backup.sql# 备份mysql-uroot-pmydbmydb_backup.sql# 恢复优化查询使用EXPLAIN分析 SQL 执行计划EXPLAINSELECT*FROMuserWHEREage20;总结MySQL 是开源关系型数据库核心基于 SQL 操作默认存储引擎 InnoDB 支持事务和行级锁核心操作分为数据库、表、数据三层SELECT是查询核心需结合条件、排序、分页使用优化 MySQL 性能的关键是合理设计表结构、加索引、避免全表扫描同时做好权限和备份管理