尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

4.1.17.1.MYSQL基础

4.1.17.1.MYSQL基础
📅 发布时间:2026/6/19 19:58:14

1.查询语句的执行流程

第一步,客户端发送SQL查询语句到MySQL服务器。
第二步,MySQL服务器的连接器开始处理这个请求,跟客户端建立连接、获取权限、管理连接。
第三步(MySQL 8.0以后已经干掉了),连接建立后,MySQL服务器的查询缓存组件会检查是否有缓存的查询结果。如果有,直接返回给客户端;如果没有,进入下一步。
第三步,解析器开始对SQL语句进行解析,检查语句是否符合SQL语法规则,确保引用的数据库、表和列都存在,并处理SQL语句中的名称解析和权限验证。
第四步,优化器负责确定SQL语句的执行计划,这包括选择使用哪些索引,以及决定表之间的连接顺序等。优化器会尝试找出最高效的方式来执行查询。
第五步,执行器会调用存储引擎的API来进行数据的读写。
第六步,MySQL的存储引擎是插件式的,不同的存储引擎在细节上面有很大不同。例如,InnoDB是支持事务的,而MyISAM是不支持的。之后,会将执行结果返回给客户端
第七步,客户端接收到查询结果,完成这次查询请求。

2.MYSQL移除查询缓存的原因

2.1.性能瓶颈明显

在现代高并发应用中,查询缓存反而成为性能瓶颈。

缓存的维护和失效操作会引起严重的锁竞争,尤其是在 InnoDB 存储引擎下。

2.2.使用率下降

很多用户根本不使用查询缓存,或者使用不当。

大部分性能优化依赖InnoDB Buffer Pool和应用层缓存(如Redis、Memcached),而不是查询缓存。

2.3.替代方案更高效

InnoDB Buffer Pool 可以高效缓存热点数据和索引。

应用层缓存更灵活,可缓存查询结果或业务对象,避免数据库内部复杂锁竞争。

3.MYSQL常用命令

3.1.数据库操作

创建数据库:
CREATE DATABASE database_name;

删除数据库:
DROP DATABASE database_name;
选择数据库:
USE database_name;

3.2.表操作


①创建表:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
...
);
②删除表:
DROP TABLEtable_name;
③显示所有表:
SHOW TABLES;
④查看表结构:
DESCRIBE(DESC)table_name;
⑤修改表(添加列):
ALTER TABLE table_name ADD column_name datatype;


3.3.CRUD 命令


①插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
②查询数据:
SELECT column_names FROM table_name WHERE condition;
③更新数据:
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
④删除数据:
DELETE FROM table_name WHERE condition;


3.4.说说索引和约束的创建修改命令


①创建索引:
CREATE INDEXindex_nameONtable_name (column_name);
②添加主键约束:
ALTER TABLEtable_nameADD PRIMARY KEY (column_name);
③添加外键约束:
ALTER TABLEtable_nameADD CONSTRAINTfk_nameFOREIGN KEY(column_name) REFERENCES parent_table (parent_column_name);

3.5.用户和权限管理的命令

①创建用户:
CREATE USER'username'@'host'IDENTIFIED BY'password';
②授予权限:
GRANT ALL PRIVILEGES ON database_name.table_nameTO'username'@'host';
③撤销权限:
REVOKE ALL PRIVILEGES ONdatabase_name.table_nameFROM'username'@'host';
④删除用户:
DROP USER'username'@'host';

3.6.事务控制的命令

①开始事务:
START TRANSACTION;
②提交事务:
COMMIT;
③回滚事务:
ROLLBACK;

④关闭自动提交模式

SET autocommit = 0; --关闭自动提交

3.7.分组

①按指定列分组,并对每组数据执行聚合计算。

SELECTID,ADDTIME FROM YONGHU GROUP BY ID;

②统计每个用户的订单总金额。

SELECTuser_id,SUM(amount) AS total_amountFROMordersGROUP BYuser_id;

③按用户和订单状态组合维度统计记录数。

SELECTuser_id, status,COUNT(*) AS cntFROM ordersGROUP BY user_id, status;

④分组后过滤数据(HAVING)

SELECT user_id, SUM(amount) AS total FROM orders GROUP BY user_id HAVING total > 100;

HAVING是用于过滤分组后的数据,与WHERE不同,WHERE是用于过滤分组前的数据。

相关新闻

  • 2025年论文写作必备:实测6款AI工具后的良心推荐
  • 微信小程序开发实战之 01-微信小程序入门
  • neural network中的loss function (一)

最新新闻

  • 从零到一:Jetlinks物联网平台服务器部署实战与避坑指南
  • (转)一次ANSYS EM 2023R1 “Request name electronics_desktop does not exist in the licensing pool.“的离谱解决记录
  • 面试被问“你的缺点是什么”,90%的应届生都答错了!(附满分话术)
  • Spring Cloud Alibaba 最佳实践:基于 Spring Boot 4.0 的完整微服务示例项目
  • 三步掌握AI斗地主:如何用DouZero智能助手提升你的游戏胜率
  • 2026山东大学项目实训个人博客(六)

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号