MySQL企业开发中高频使用语句

server/2025/2/27 9:02:52/

以下是企业级MySQL开发中高频使用的语句分类及示例,结合典型业务场景说明:


一、数据定义(DDL)

  1. 表结构管理

    -- 创建用户表(含索引优化)
    CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL COMMENT '用户名',email VARCHAR(100) UNIQUE COMMENT '邮箱',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    

    用途:定义核心业务表结构,包含主键、约束和存储引擎选择

  2. 动态修改表结构

    -- 添加索引与字段扩展 
    ALTER TABLE user ADD INDEX idx_name (name),ADD COLUMN phone VARCHAR(20) AFTER email;
    

    场景:应对业务需求变更时的快速表结构调整


二、数据操作(DML)

  1. 批量插入与更新

    -- 从临时表导入数据 
    INSERT INTO order_detail (product_id, quantity)
    SELECT product_id, SUM(qty) FROM temp_order GROUP BY product_id;-- 关联更新用户状态 
    UPDATE user u 
    JOIN user_status s ON u.id = s.user_id 
    SET u.is_active = 1 
    WHERE s.last_login > '2025-01-01';
    

    用途:数据迁移与批量业务状态更新

  2. 条件删除

    -- 清理无效数据 
    DELETE FROM log 
    WHERE created_at < '2024-01-01' 
    LIMIT 1000;
    

    优化点:限制删除条数防止事务锁表


三、数据查询(DQL)

  1. 多表关联与聚合

    -- 统计部门销售额 
    SELECT d.dept_name, SUM(o.amount) AS total_sales 
    FROM department d 
    LEFT JOIN orders o ON d.id = o.dept_id 
    GROUP BY d.dept_name 
    HAVING total_sales > 100000;
    

    场景:生成业务报表

  2. 分页优化查询

    -- 使用覆盖索引加速分页 
    SELECT id, name 
    FROM user 
    WHERE created_at > '2025-01-01'
    ORDER BY id DESC 
    LIMIT 100000, 20;
    

    技巧:避免OFFSET过大导致性能问题


四、权限与安全管理

  1. 用户权限控制

    -- 创建只读账户 
    CREATE USER 'report_user'@'%' IDENTIFIED BY 'SecurePass123!';
    GRANT SELECT ON sales_db.* TO 'report_user'@'%';
    FLUSH PRIVILEGES;
    

    安全实践:最小权限原则

  2. 密码策略更新

    -- 修改用户密码并设置过期 
    ALTER USER 'admin'@'localhost' IDENTIFIED BY 'NewPass!2025' PASSWORD EXPIRE INTERVAL 90 DAY;
    

    合规要求:满足企业安全审计标准


五、高级处理

  1. 数据聚合与格式转换

    -- 将多行合并为字符串(如标签系统)
    SELECT product_id, GROUP_CONCAT(category_name SEPARATOR '|') AS categories 
    FROM product_category 
    GROUP BY product_id;
    

    应用场景:前端展示或数据导出

  2. 事务控制

    START TRANSACTION;
    UPDATE account SET balance = balance - 500 WHERE user_id = 1001;
    UPDATE account SET balance = balance + 500 WHERE user_id = 1002;
    COMMIT;
    

    关键点:保证金融类业务原子性


高频优化技巧

  • 索引分析:EXPLAIN SELECT ... 查看执行计划
  • 慢查询日志:SET GLOBAL slow_query_log = ON;
  • 连接池配置:SHOW STATUS LIKE 'Threads_connected';

http://www.ppmy.cn/server/170992.html

相关文章

【算法】哈希表详解

【算法】哈希表详解 1. 哈希表的基本概念2. 哈希表的优缺点3. 哈希表的实现方法4. 哈希表的应用场景5. 哈希表的性能优化6. 哈希表 vs 其他数据结构7. 总结 哈希表&#xff08;Hash Table&#xff09; 是一种高效的数据结构&#xff0c;用于存储键值对&#xff08;Key-Value Pa…

go-zero中定时任务的用法

文章目录 使用扩展定义调度器测试方法 使用扩展 在go-zero框架中使用定时任务调度的写法示例&#xff0c;首先需要用到的扩展&#xff1a;go get -u github.com/robfig/cron/v3 扩展网址&#xff1a;robfig/cron: a cron library for go (github.com) 定义调度器 在 gozero/i…

Java进阶:Docker

1. Docker概述 1.1. Docker简介 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱…

深度学习R7周:糖尿病预测模型优化探索

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 学习目标&#xff1a; 思考本案例是否还有进一步优化的空间 环境&#xff1a; 语言环境&#xff1a;Python3.8 编译器&#xff1a;pycharm 深度学习环境&a…

开源程序wordpress在海外品牌推广中的重要作用

WordPress作为全球最流行的开源内容管理系统(CMS)&#xff0c;在全球网站搭建中占据超过40%的市场份额。其强大的功能、灵活性和易用性使其成为企业进行海外品牌推广的首选平台。以下是WordPress在海外品牌推广中的重要性分析&#xff1a; 1. 多语言支持与本地化 WordPress通…

京准电钟:NTP精密时钟服务器在自动化系统中的作用

京准电钟&#xff1a;NTP精密时钟服务器在自动化系统中的作用 京准电钟&#xff1a;NTP精密时钟服务器在自动化系统中的作用 NTP精密时钟服务器在自动化系统中的作用非常重要&#xff0c;特别是在需要高精度时间同步的场景中。NTP能够提供毫秒级的时间同步精度&#xff0c;这…

STM32编译过程

STM32编译过程 1. 编译过程介绍2. 程序的组成、存储与运行3. 编译工具链3.1 armcc 工具3.2 armasm 工具3.3 armlink 工具3.4 armar 工具3.5 fromelf 工具 4. MDK工程的文件类型 1. 编译过程介绍 编译MDK 软件使用的编译器是 armcc 和 armasm&#xff0c;它们根据每个 c/c 和汇编…

Qt 中实现链表

Qt 中实现链表&#xff0c;我将使用模板类来支持泛型数据&#xff0c;并通过封装确保数据安全。 完整实现代码 #include <QCoreApplication> #include <QDebug> #include <functional> // 用于遍历时的回调函数template<typename T> class LinkedLis…