MySQL 高级实用 SQL 操作指南 —— 企业级 Java 后端开发必知必会

Java与MySQL的CRUD操作实践指南 Java数据库连接(JDBC)API是Java SE平台的一部分,它提供了一种用于执行SQL语句的标准方法。JDBC API允许Java程序访问各种类型的关系数据库。它定义了一系列接口和类,使得开发者能够以统一的方式编写访问数据库的代码。事务(Transaction)是数据库管理系统执行过程中的一个逻辑单位,由一系列对系统中数据的读写操作组成。事务是数据库操作的重要组成部分,其目标是保证数据的一致性、完整性和独立性。 阅读详情

除了 MySQL SQL 的五大分类(DDL、DML、DQL、DCL、TCL)之外,还有大量在企业级 Java 后端开发中高频使用、但未被归类于五大类的实用 SQL 操作与技巧。这些操作虽不构成独立分类,却是保障系统稳定性、提升性能、实现复杂业务逻辑、满足审计合规的关键手段。

本指南专为 Java 后端开发者(Spring Boot 团队) 编写,系统梳理这些“隐藏但至关重要”的 SQL 操作,涵盖:视图、存储过程、函数、事件、备份恢复、字符集与排序、JSON 操作、虚拟列、分区表、锁机制、连接池优化等,全部附带标准示例 + 中文注释说明,助你打造高性能、高可靠、易维护的数据库系统。


📘 MySQL 高级实用 SQL 操作指南 —— 企业级 Java 后端开发必知必会

适用对象:Java 后端开发、架构师、DBA、测试负责人
目标:掌握五大分类之外的 10 大高频实用 SQL 操作,提升系统健壮性、可维护性与性能表现
版本要求:MySQL 8.0+
引擎要求:InnoDB
核心理念:优秀的数据库操作,不只是“查数据、改记录”,更是架构设计的一部分。


一、视图(View)—— 虚拟表,简化查询与权限控制

✅ 作用

  • 将复杂查询封装为“虚拟表”,供应用层直接查询
  • 隐藏底层表结构,保护敏感字段
  • 实现按角色权限的数据视图(如:用户只能看到自己订单)
  • 减少重复 SQL,提升开发效率

✅ 企业级标准示例

-- ✅ 创建用户订单视图(仅展示用户自己的未删除订单)
CREATE VIEW `v_user_orders` AS
SELECT 
    o.`order_no`,
    o.`total_amount`,
    o.`status`,
    o.`created_at`,
    u.`username`
FROM `order` o
INNER JOIN `user` u ON o.`user_id` = u.`id`
WHERE o.`is_deleted` = 0
  AND u.`is_deleted` = 0;

-- ✅ 创建只读视图(用于 BI 报表,禁止写入)
CREATE VIEW `v_daily_sales_summary` AS
SELECT 
    DATE(`created_at`) AS `sale_date`,
    COUNT(*) AS `order_count`,
    SUM(`total_amount`) AS `total_revenue`
FROM `order`
WHERE `is_deleted` = 0
GROUP BY DATE(`created_at`)
WITH READ ONLY; -- ✅ 禁止通过视图更新数据

-- ✅ 通过视图查询(Java 中直接像查表一样)
SELECT * FROM `v_user_orders` WHERE `username` = 'zhangsan' ORDER BY `created_at` DESC LIMIT 10;

✅ 企业规范:

  • 所有报表、前端列表查询优先使用视图
  • 视图中必须包含 is_deleted = 0 过滤条件
  • 禁止在视图中使用 ORDER BY(除非配合 LIMIT),否则影响性能
  • 视图变更需通知所有依赖方(前端、BI)
  • 视图不支持索引,其性能依赖底层表索引

二、存储过程(Stored Procedure)—— 复杂业务逻辑的数据库封装

✅ 作用

  • 将多步骤、多表操作封装为一个“数据库函数”
  • 减少网络往返,提升性能(尤其在高并发、低延迟场景)
  • 逻辑集中,便于 DBA 维护
  • 慎用:Java 团队应优先用代码实现,仅在性能瓶颈明确、逻辑高度耦合时使用

✅ 企业级标准示例(转账逻辑)

-- ✅ 创建转账存储过程(原子操作,防超卖)
DELIMITER $$

CREATE PROCEDURE `transfer_funds`(
    IN p_from_user_id BIGINT,
    IN p_to_user_id BIGINT,
    IN p_amount DECIMAL(10,2)
)
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL; -- 重新抛出异常,让 Java 层捕获
    END;

    START TRANSACTION;

    -- 1. 检查转出账户余额
    IF (SELECT `balance` FROM `account` WHERE `user_id` = p_from_user_id AND `is_deleted` = 0) < p_amount THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '余额不足,转账失败';
    END IF;

    -- 2. 扣款
    UPDATE `account` 
    SET `balance` = `balance` - p_amount, `updated_at` = NOW()
    WHERE `user_id` = p_from_user_id AND `is_deleted` = 0;

    -- 3. 加款
    UPDATE `account` 
    SET `balance` = `balance` + p_amount, `updated_at` = NOW()
    WHERE `user_id` = p_to_user_id AND `is_deleted` = 0;

    -- 4. 记录转账日志
    INSERT INTO `transfer_log` (`from_user_id`, `to_user_id`, `amount`, `created_at`)
    VALUES (p_from_user_id, p_to_user_id, p_amount, NOW());

    COMMIT;
END $$

DELIMITER ;

-- ✅ 调用存储过程(Java 中通过 CallableStatement 调用)
CALL transfer_funds(1001, 1002, 299.00);

✅ 企业规范:

  • 仅在以下场景使用:
    • 高频、低延迟、多表原子操作(如:积分兑换、优惠券核销)
    • 业务逻辑高度耦合,Java 层难以保证一致性
  • 禁止用于复杂业务逻辑(如:调用外部系统、循环处理)
  • 必须写完整异常处理(DECLARE EXIT HANDLER)
  • 所有存储过程必须有详细注释和测试用例
  • 建议:优先用 Java + @Transactional 实现,仅当性能压测证明瓶颈在 DB 时才用存储过程

三、自定义函数(Function)—— 返回单一值的计算逻辑

✅ 作用

  • 封装可复用的计算逻辑(如:计算折扣、税率、年龄、字符串处理)
  • 在 SELECT、WHERE、ORDER BY 中直接调用

✅ 企业级标准示例(计算用户年龄)

-- ✅ 创建函数:根据出生日期计算年龄
DELIMITER $$

CREATE FUNCTION `calculate_age`(p_birth_date DATE)
RETURNS INT
READS SQL DATA
DETERMINISTIC  -- ✅ 告诉 MySQL:相同输入总是返回相同输出,可缓存
BEGIN
    RETURN TIMESTAMPDIFF(YEAR, p_birth_date, CURDATE());
END $$

DELIMITER ;

-- ✅ 在查询中使用函数(简洁、可读)
SELECT 
    `username`,
    `birth_date`,
    calculate_age(`birth_date`) AS `age`
FROM `user`
WHERE `is_deleted` = 0
  AND calculate_age(`birth_date`) >= 18; -- 查询成年用户

-- ✅ 可用于排序
SELECT `username`, calculate_age(`birth_date`) AS `age`
FROM `user`
WHERE `is_deleted` = 0
ORDER BY `age` DESC;

✅ 企业规范:

  • 必须声明 DETERMINISTIC,否则无法被优化器缓存
  • 避免在 WHERE 中使用函数包裹索引字段 → WHERE calculate_age(birth_date) > 18 会导致索引失效!
  • 更优做法:在插入时计算并存储年龄字段(age TINYINT),避免运行时计算
  • 函数不宜复杂,否则拖慢查询性能
  • Java 中建议用工具类实现,数据库仅用于简单、高频、标准化计算

四、事件(Event)—— 定时任务(替代 Cron + Java 定时器)

✅ 作用

  • 在数据库内部定时执行 SQL 任务(如:清理过期会话、归档日志、统计报表)
  • 替代 Java 定时任务,降低系统耦合度
  • 慎用:调试困难、监控弱,建议仅用于非核心、低频、可重试任务

✅ 企业级标准示例(每日清理 30 天前的登录日志)

-- ✅ 开启事件调度器(需 DBA 执行)
SET GLOBAL event_scheduler = ON;

-- ✅ 创建定时事件:每天凌晨 2 点清理 30 天前的登录日志
DELIMITER $$

CREATE EVENT `ev_cleanup_login_logs`
ON SCHEDULE EVERY 1 DAY STARTS '2025-10-17 02:00:00'
ON COMPLETION PRESERVE
ENABLE
DO
BEGIN
    DELETE FROM `login_log`
    WHERE `created_at` < DATE_SUB(NOW(), INTERVAL 30 DAY);
    
    -- 可选:记录清理日志
    INSERT INTO `audit_log` (`action`, `details`, `created_at`)
    VALUES ('CLEANUP_LOGIN_LOGS', CONCAT('Deleted ', ROW_COUNT(), ' records'), NOW());
END $$

DELIMITER ;

-- ✅ 查看事件
SHOW EVENTS;

-- ✅ 删除事件
DROP EVENT IF EXISTS `ev_cleanup_login_logs`;

✅ 企业规范:

  • 禁止用于核心业务(如:发短信、扣款、发邮件)
  • 仅用于数据归档、日志清理、统计预计算
  • 必须添加 ON COMPLETION PRESERVE,防止事件自动删除
  • 必须记录执行日志(INSERT INTO audit_log)
  • 建议:优先使用 Spring @Scheduled + 异步任务,更易监控、调试、部署

五、字符集与排序规则(Collation)—— 避免中文乱码与排序错误

✅ 作用

  • 控制字符存储与比较方式
  • 中文、emoji、多语言系统必须正确配置

✅ 企业级标准示例

-- ✅ 创建数据库(必须指定)
CREATE DATABASE `shop` 
  CHARACTER SET utf8mb4 
  COLLATE utf8mb4_unicode_ci;

-- ✅ 修改表字符集
ALTER TABLE `user` 
CONVERT TO CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

-- ✅ 查看当前字符集
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';

-- ✅ 查看字段字符集
SHOW FULL COLUMNS FROM `user` LIKE 'username';

-- ✅ 在查询中指定排序规则(特殊场景)
SELECT `name` FROM `product`
ORDER BY `name` COLLATE utf8mb4_bin; -- 按字节排序(区分大小写)

✅ 企业规范:

  • 所有数据库、表、字段必须使用 utf8mb4 + utf8mb4_unicode_ci
  • 禁止使用 utf8(MySQL 的 utf8 是 3 字节,不支持 emoji)
  • utf8mb4_unicode_ci:支持中文、英文、日文、emoji,按语义排序(“张”在“李”前)
  • utf8mb4_bin:按字节排序(区分大小写、不区分语义),用于精确匹配(如验证码)

六、JSON 操作 —— 灵活存储结构化非结构化数据

✅ 作用

  • 存储灵活结构数据(如:地址、配置、商品属性、日志)
  • 支持索引、查询、更新,比 TEXT 更强大

✅ 企业级标准示例

-- ✅ 创建含 JSON 字段的表
CREATE TABLE `product` (
    `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `name` VARCHAR(100) NOT NULL,
    `spec` JSON COMMENT '规格信息:{"color":"红色","size":"L","weight":"0.5kg"}',
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ✅ 插入 JSON 数据
INSERT INTO `product` (`name`, `spec`) VALUES 
('iPhone 16', '{"color":"黑色","size":"标准","weight":"0.2kg","features":["5G","A18"]}' );

-- ✅ 查询 JSON 字段内容
SELECT `name`, `spec`->>'$.color' AS color FROM `product`; -- ✅ 提取 color 字段

-- ✅ 查询包含特定值的 JSON
SELECT `name` FROM `product`
WHERE JSON_CONTAINS(`spec`, '"5G"', '$.features'); -- ✅ features 数组包含 "5G"

-- ✅ 更新 JSON 字段
UPDATE `product`
SET `spec` = JSON_SET(`spec`, '$.weight', '0.18kg')
WHERE `id` = 1;

-- ✅ 创建 JSON 虚拟列索引(提升查询性能)
ALTER TABLE `product`
ADD COLUMN `spec_color` VARCHAR(20) GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(`spec`, '$.color'))) STORED,
ADD INDEX `idx_spec_color` (`spec_color`);

-- ✅ 查询优化(走索引)
SELECT `name` FROM `product` WHERE `spec_color` = '黑色';

✅ 企业规范:

  • 使用 JSON 存储非核心、结构灵活、查询频率低的数据
  • 核心查询字段(如颜色、尺寸)应拆为独立字段,并建索引
  • 必须为常用 JSON 字段创建虚拟列 + 索引(如上例)
  • 避免嵌套过深(>3 层),影响可读性与性能
  • Java 中使用 @JsonField(MyBatis-Plus)或 JsonNode(Jackson)映射

七、虚拟列(Generated Column)—— 自动计算字段,提升查询效率

✅ 作用

  • 根据其他字段自动计算并存储值
  • 可建立索引,大幅提升查询性能

✅ 企业级标准示例(计算订单总金额含税)

-- ✅ 创建含虚拟列的表
CREATE TABLE `order_item` (
    `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `price` DECIMAL(10,2) NOT NULL COMMENT '单价',
    `quantity` INT NOT NULL COMMENT '数量',
    `tax_rate` DECIMAL(5,4) NOT NULL DEFAULT 0.13 COMMENT '税率(13%)',
    `total_amount` DECIMAL(10,2) GENERATED ALWAYS AS (`price` * `quantity` * (1 + `tax_rate`)) STORED,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ✅ 插入数据(total_amount 自动计算)
INSERT INTO `order_item` (`price`, `quantity`, `tax_rate`) VALUES (100.00, 2, 0.13); -- total_amount = 226.00

-- ✅ 查询时可直接使用虚拟列(且有索引)
SELECT `total_amount` FROM `order_item` WHERE `total_amount` > 200;
-- ✅ 可建索引加速
ALTER TABLE `order_item` ADD INDEX `idx_total_amount` (`total_amount`);

✅ 企业规范:

  • 虚拟列必须是 STORED(物理存储),才能建索引
  • 适用于:计算年龄、金额含税、状态码转中文、日期转周/月
  • 避免复杂表达式(如多表 JOIN),仅限本表字段
  • 与 JSON 虚拟列配合使用效果极佳

八、分区表(Partitioning)—— 大表性能优化利器

✅ 作用

  • 将大表按规则(如时间)拆分成多个物理子表
  • 提升查询、删除、备份性能
  • 仅适用于:单表数据 > 1000 万行,且有明确分区字段(如时间)

✅ 企业级标准示例(按月分区订单表)

-- ✅ 创建按月分区的订单表
CREATE TABLE `order_partitioned` (
    `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    `order_no` VARCHAR(32) NOT NULL,
    `user_id` BIGINT UNSIGNED NOT NULL,
    `total_amount` DECIMAL(10,2) NOT NULL,
    `created_at` DATETIME NOT NULL,
    `is_deleted` TINYINT(1) DEFAULT 0
) ENGINE=InnoDB
PARTITION BY RANGE (YEAR(`created_at`) * 100 + MONTH(`created_at`)) (
    PARTITION p202501 VALUES LESS THAN (202502),
    PARTITION p202502 VALUES LESS THAN (202503),
    PARTITION p202503 VALUES LESS THAN (202504),
    PARTITION p202504 VALUES LESS THAN (202505),
    PARTITION p202505 VALUES LESS THAN (202506),
    PARTITION p202506 VALUES LESS THAN (202507),
    PARTITION p202507 VALUES LESS THAN (202508),
    PARTITION p202508 VALUES LESS THAN (202509),
    PARTITION p202509 VALUES LESS THAN (202510),
    PARTITION p202510 VALUES LESS THAN (202511),
    PARTITION p202511 VALUES LESS THAN (202512),
    PARTITION p202512 VALUES LESS THAN (202601),
    PARTITION p_future VALUES LESS THAN MAXVALUE -- 未来数据
);

-- ✅ 查询时自动走分区(性能提升)
SELECT COUNT(*) FROM `order_partitioned`
WHERE `created_at` BETWEEN '2025-10-01' AND '2025-10-31'; -- 仅扫描 p202510 分区

-- ✅ 删除旧数据(极快!)
ALTER TABLE `order_partitioned` DROP PARTITION p202501; -- 1 秒删除 1000 万行

✅ 企业规范:

  • 仅用于日志、订单、行为数据等时间序列大表
  • 分区字段必须是 DATE/DATETIME/TIMESTAMP 或 INT
  • 禁止用于主键表、频繁更新表
  • 分区管理复杂,建议使用 TDDL、ShardingSphere 等中间件替代
  • 生产环境建议使用分库分表中间件,而非原生分区

九、锁机制(Locking)—— 控制并发,防超卖

✅ 作用

  • MySQL 内部通过锁保证事务隔离性
  • 开发者可通过 SQL 显式加锁,控制并发行为

✅ 企业级标准示例

✅ 1. 悲观锁(Pessimistic Locking)—— 适合高竞争场景
-- ✅ 查询并加行锁(排他锁),防止其他事务修改
START TRANSACTION;

SELECT `stock` FROM `inventory` WHERE `product_id` = 2001 FOR UPDATE; -- ✅ 加锁

-- ✅ 此时其他事务无法读取或修改该行
UPDATE `inventory` SET `stock` = `stock` - 1 WHERE `product_id` = 2001;

COMMIT;

✅ 企业规范:

  • 适用于:库存扣减、抢购、余额扣减
  • 必须在事务中使用
  • 避免锁住大范围数据(如 WHERE status = 0 可能锁全表)
  • 建议配合乐观锁使用
✅ 2. 乐观锁(Optimistic Locking)—— Java 推荐方案
-- ✅ 表结构:增加 version 字段
ALTER TABLE `inventory` ADD COLUMN `version` INT DEFAULT 1 COMMENT '乐观锁版本号';

-- ✅ 扣库存(带版本校验)
UPDATE `inventory`
SET `stock` = `stock` - 1, `version` = `version` + 1
WHERE `product_id` = 2001 AND `stock` > 0 AND `version` = 1;

-- ✅ Java 中检查影响行数
int affected = inventoryDao.decreaseStock(productId, version);
if (affected == 0) {
    throw new BusinessException("商品已被抢购,请重试");
}

✅ 企业规范:

  • Java 团队优先使用乐观锁,避免数据库锁阻塞
  • version 字段必须是整型,每次更新 +1
  • 前端提交时携带 version,服务端校验

十、连接池与 SQL 性能优化(应用层关联)

虽然不属于 SQL 语法,但直接影响 SQL 执行效果,Java 开发者必须掌握。

✅ 标准配置(HikariCP)

spring:
  datasource:
    hikari:
      maximum-pool-size: 20          # ✅ 生产建议:20~50
      minimum-idle: 5
      connection-timeout: 30000      # ✅ 30 秒超时
      idle-timeout: 600000           # ✅ 10 分钟空闲回收
      max-lifetime: 1200000          # ✅ 20 分钟强制回收
      leak-detection-threshold: 60000 # ✅ 60 秒未归还警告
      pool-name: OrderServicePool

✅ 企业规范

项目建议
最大连接数根据 CPU 核心数 × 2 ~ 5 设置(如 8 核 → 20~40)
超时设置所有连接、查询、事务必须设超时
连接泄漏检测开启 leak-detection-threshold,及时发现未关闭连接
SQL 日志开启 spring.jpa.show-sql=true(仅开发环境)
慢查询日志开启 MySQL slow_query_log,定期分析

十一、总结:高级 SQL 操作使用建议表

操作是否推荐适用场景替代方案
视图✅ 推荐报表、权限控制、简化查询Java 中封装查询
存储过程⚠️ 谨慎高频、原子、多表操作Java + @Transactional
函数✅ 推荐简单计算(年龄、折扣)Java 工具类
事件⚠️ 谨慎日志清理、归档Spring @Scheduled
JSON✅ 推荐非结构化配置、扩展属性用独立表存储核心字段
虚拟列✅ 推荐高频计算字段预计算 + 存储字段
分区表⚠️ 谨慎单表 >1000 万行,按时间分库分表中间件
锁机制✅ 推荐高并发扣减优先用乐观锁
连接池✅ 必须所有应用配置 HikariCP

✅ 结语:高级 SQL 的终极原则

🔹 你写的每一条 SQL,都在塑造系统的灵魂。

  • 你用视图,是在封装复杂;
  • 你用 JSON,是在拥抱变化;
  • 你用虚拟列,是在提升性能;
  • 你用乐观锁,是在保障并发;
  • 你用连接池,是在守护稳定。

不要因为“能跑”就放任,不要因为“复杂”就回避。
优秀的数据库设计,不是 DBA 的专利,是每个 Java 开发者的责任。


1、2022 应用密码学与网络安全会议亮点与关键技术解读 2022年应用密码学与网络安全会议(ACNS 2022)在意大利罗马成功举办,会议涵盖了密码学与网络安全的多个前沿领域,包括键控全同态加密、隐私保护技术、区块链、后量子密码学和多方计算等。会议共收录44篇论文,展示了众多创新的研究成果,为学术研究和实际应用提供了新的思路和方法。本次会议促进了学术界和工业界的交流与合作,推动了密码学与网络安全行业的发展。 阅读详情

相关推荐

DRAM架构演进与HBM技术在高性能计算中的应用

DRAM(动态随机存取存储器)是现代计算系统中关键的内存技术,其架构优化直接影响数据供给能力。随着AI训练和科学计算等数据密集型负载的普及,传统DDR架构面临带宽墙、能效比和访问粒度等挑战。HBM(高带宽内存)通过3D堆叠技术(如TSV硅通孔)和异构集成(如PIM存内计算)显著提升了带宽和能效比。这些技术在高性能计算、AI推理和大模型训练等场景中展现出巨大潜力,例如HBM3的带宽可达819GB/s,能效比低至0.95pJ/b。未来,DRAM技术将继续向更高密度、更低功耗和更智能的内存计算方向发展。

weixin_35757191的博客 400

Java后端开发需要学什么

java后端开发需要学的知识有:1、Java基础语法和oop特性;2、数据库相关知识,例SQL语言、MySQL、非关系型数据库;3、Web基础知识;4、Web主流框架,例Spring、SpringMVC、Mybatis;5、前端知识等。 本篇文章将大致介绍后端从基础到独立后端的学习路线,仅供参考。 推荐课程:Java教程。 Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。此外还有泛型、反射 的特性,很多框架的技术.

m0_70565884的博客 1万+

别再手动续期SSL证书了!用acme.sh配合阿里云DNS API,实现全自动HTTPS证书管理

本文详细介绍了如何使用acme.sh配合阿里云DNS API实现SSL/TLS证书的全自动管理,彻底解决手动续期带来的风险与不便。通过自动化部署流程,包括环境准备、API集成、多域名证书申请等关键步骤,帮助运维人员构建高效、可靠的HTTPS证书管理体系,显著提升安全性和运维效率。

weixin_29200485的博客 268

java后端开发需要学什么

java后端开发需要学的知识有:1、Java基础语法和oop特性;2、数据库相关知识,例SQL语言、MySQL、非关系型数据库;3、Web基础知识;4、Web主流框架,例Spring、SpringMVC、Mybatis;5、前端知识等。 本篇文章将大致介绍后端从基础到独立后端的学习路线,仅供参考。 Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。此外还有泛型、反射 的特性,很多框架的技术都依赖它,比如 Spring 核心的

machacoder的博客 9094

IMU、INS、GNSS与组合导航:从原理到工程实践全解析

在自动驾驶、无人机和机器人等智能系统的定位方案中,IMU、INS、GNSS和组合导航常被混为一谈,但它们在硬件层级、数据特性和误差机制上截然不同。IMU作为惯性测量单元,以百赫兹以上频率输出加速度和角速度;INS基于IMU完成姿态、速度与位置的递推解算,却因积分累积误差而随时间漂移;GNSS提供绝对位置,但易受遮挡和干扰。组合导航通过卡尔曼滤波将两者融合,实现短期不飘、长期不偏的连续定位,这正是高精度导航系统的技术底座。工程落地时,从IMU标定、Allan方差分析到相机/LiDAR与IMU外参标定,再到松耦

weixin_29193259的博客 378

MATLABGUI读取文件并将路径显示在文本框中

MATLABGUI读取文件并将路径显示在文本框中

m0_50305149的博客 2649

Java:企业级java后端开发,需要掌握哪些内容

随着互联网的发展,企业级应用已经成为了日常生活中的一部分,越来越多的企业和开发人员选择Java作为后端开发语言。Java的稳定性、跨平台性以及强大的生态系统让其成为开发企业级应用的首选语言。在本文中,我们将深入探讨企业级Java后端开发所需要掌握的核心技能,以及如何在实际工作中提升应用的性能和架构设计能力。?????

wdtyrnmb的博客 693

03 Aras Innovator二次开发-服务端方法(二)

Aras Innovator二次开发-服务端方法书写

企业信息化(PLM,ERP.MES) 2014

【Java后端开发MySQL面试指南:从基础到分布式架构】

MySQL面试指南

H1658554092的博客 1365

STM32 stack_size和heap_size大小设置的意义

在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。如下图所示的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。 1、若工程中使用的局部变量较多,定义的数据长度较大时,若不调整栈的空间大小,则会导致程序出现栈溢出,程序运行结果与预期的不符或程序跑飞。这时我们就需要手动的调整栈的大小。 2、当工程中使用了malloc动态分配内存空间时,这时分配.......

zxm8513优快云博客 3万+

Transformer 时间序列预测实战

Transformer 时间序列预测实战

机器学习深度学习业余选手 743

Java必知必会-初级篇(MySQL数据库)

子查询(Subquery)是嵌套在另一个 SQL 查询中的查询,它可以用于各种场景,比如在 WHERE 子句、FROM 子句、SELECT 子句中,甚至可以在 HAVING 子句中使用。INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值 1, 值2, ...);INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);

制定持续可量化的目标,不断坚持。 936

RK3588平台开发系列讲解(项目篇)常见模型结构

📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等。

内核笔记 1756

mysql中文版_学习SQL:MySQL必知必会

《MySQL必知必会》这本书是2009年出版,从SQL语句的数据检索、子查询、联结、正则表达式等内容讲起,适用于没有学过SQL以及刚开始接触SQL的人,书本身比较简洁,就是在讲基础,想要更加深入地学习的话,推荐《深入浅出MySQL》,这本书就厚很多,也更适合数据库开发、优化和维护人员去学习。SQL是一种结构化查询语言,是通用地使用关系型数据库的应用语言。这句话给了我们两个关键词,SQL和数据库。在...

weixin_39564831的博客 238

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MySQL 企业级使用指导手册(Java 后端开发视角)

MySQL企业级使用指导手册(Java后端开发视角) 本手册专为Java后端开发者(尤其是Spring Boot团队)提供MySQL使用规范,涵盖数据库核心概念、SQL语法标准及企业级实践建议。 核心内容: MySQL特性:开源关系型数据库,支持事务、索引、视图等企业级功能 必要性:保障数据持久化、一致性、高效查询和多用户并发访问 SQL规范: DDL建表使用InnoDB引擎和utf8mb4字符集 所有操作必须带WHERE条件 禁止物理删除,采用逻辑删除(is_deleted字段) 查询必须指定字段,禁止S

python15397的博客 364

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

根据《MySQL必知必会》差缺补漏知识点(时隔3个月,我又回来啦)

目录 前言: 第一章 了解SQL 第二章 MySQL简介 第三章 使用MySQL 第四章 检索数据 第五章 排序检索数据 第六章 过滤数据 第七章 数据过滤 第八章 用通配符进行过滤 第九章 用正则表达式进行搜索 第十章 创建计算字段 第十一章 使用数据处理函数 第十二章 汇总数据 第十三章 分组数据 第十四章 使用子查询,第十五章 联结表,第十六章 创建高级联结,第十七章 组合查询 第十八章 全文本搜索 第十九章 插入数据 第二十章 更新和删除数据 第二十一章 创建和

充满好奇的threecat 2447

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

MySQL高级数据操作

MySQL是一个广泛使用的关系数据库管理系统。在这篇博客中,我们将探讨MySQL的高级数据操作功能。我们将讨论视图的创建和使用,存储过程和函数,触发器的设计和应用,事件调度器的使用,以及用户定义变量和临时表。每个主题都将包括代码示例,以帮助读者更好地理解和应用这些高级功能。MySQL支持用户定义变量,这些变量存储在用户会话中,并在会话结束时销毁。用户定义变量可以存储一个值,这个值可以在SQL语句中使用。临时表是一种特殊类型的表,只在当前会话中存在,当会话结束时,临时表将被自动删除。

Hhzzy99的博客 3195

Java笔记——后端开发——Java_java后端开发

代码质量和可维护性:Java后端开发需要考虑到代码的质量和可维护性,因为一个高质量和易于维护的代码可以提高开发效率和降低维护成本。不断学习:Java后端开发是一个技术迭代非常快的领域,新的技术和框架层出不穷,因此作为一名Java后端开发者,必须不断学习和跟进新的技术,以保持自己的竞争力。Web开发基础:Java后端开发需要掌握基础的Web开发知识,如HTTP协议、Servlet、JSP、HTML、CSS和JavaScript等。缓存和消息队列:Java后端开发通常需要使用缓存和消息队列来提高性能和可靠性。

a25847a的博客 956

从事Java后端开发,要学习哪些知识和技能?

作者:初音未来 链接:https://www.zhihu.com/question/19992305/answer/2376770965 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 一、背景 从后端来讲,目前市场上的电子商务软件基本上可以分为两个阵营,即php阵营和Java阵营。两个阵营的开发基本上都是各自围绕着各自的开发语言(php/Java),选取最为兼容合适的框架结构和数据库,然后进行服务器端的开发。 Java语言 Java是一门计算机编程语言,和C+.

m0_70565884的博客 8090

MySQL必知必会——了解SQL/SQL简介/使用MySQL

一、数据库基础 数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件)。 数据库软件应称为DBMS(数据库管理系统); 数据库是通过DBMS创建和操纵的容器。 表(table) 某种特定类型数据的结构化清单。 存储在表中的数据是一种类型的数据或一个清单。 表名:唯一性取决于多个因素,虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库...

Zhxin606a的博客 294

mysql必知必会和sql必知必会

前言 总有一天你会明白,你的努力终究没有白费 年前辞职,人算不如天算,突如其来的疫情完全把自己的计划给打碎了,面试难度简直不亚于一场江苏高考题,后悔、焦虑不安、失眠成了我的生活状态。 从三月底开始投递简历,甭管是什么公司,只要薪资待遇跟之前差不多我都投了。最气人的一次面试经历是一个小公司的HR约我面试,我过去了,填完表格,还没到技术面呢,她看到我的期望薪资是15k+,直接来了一句:“不好意思,我们最多只能给到10k+,所以,您可能不太适合。“我:”???” 慢慢开始怀疑自己了,是不是自己的技术不够好?

天真爱器 709

后端开发——Java

Java是一种流行的后端开发语言,被用于开发许多企业级应用程序和网站。Java应用程序可以运行在不同的操作系统和硬件平台上,具有很好的跨平台性。

qq_46161207的博客 2037

后端开发入门指南

后端开发作为软件开发的重要领域,负责处理数据存储、业务逻辑以及与前端的交互等关键任务。它就像是一座大厦的坚实基础,支撑着整个应用程序的稳定运行。对于想要踏入这个领域的初学者来说,了解后端开发的基本概念、技术和流程是至关重要的。

weixin_45633412的博客 967

Java操作MySQL数据库学习:从基础入门到高级实践

关系型数据库是基于关系模型的数据库,它使用表格来存储数据,并通过关系来表示数据之间的联系。表是数据存储的基本单位,字段定义了表中数据的类型和属性,记录是表中的一行数据,主键是表中唯一标识一条记录的字段或字段组合,外键用于建立表与表之间的关系。在数据库中,数据通常以表的形式存储,每个表由多个字段组成,字段定义了数据的类型和属性。连接池是一种数据库连接管理技术,它可以提高数据库连接的效率,减少频繁创建和关闭连接的开销。Druid是阿里巴巴提供的连接池实现,它提供了更多的功能和更好的性能。

1124

Mysql必知必会

Mysql必知必会 第一章 1.1数据库基础 数据库(database)保存有组织的数据的容器 表(table)某种特定类型数据的结构化清单 模式(schema)关于数据库和表的布局及特性的信息 列(column)表中的一个字段。所有表都是由一个或多个列组成的 数据类型(datatype)所容许的数据的类型。每个表列都有相应的数据类型。 行(row)表中的一个记录(亦称数据库记录record )...

夜空中最亮的星 821

MySQL 数据库 SQL 语句完整分类指南(企业级标准版)

作用:创建、修改、删除数据库、表、索引、视图等结构对象,不操作数据本身。特点:自动提交(Autocommit),执行后立即生效,无法回滚。类别命令是否修改结构是否修改数据是否可回滚典型场景DDL✅ 是❌ 否❌ 否建表、加索引、改字段DML❌ 否✅ 是✅ 是增删改用户、订单DQLSELECT❌ 否❌ 否✅ 是(只读)查询用户、列表、报表DCL❌ 否❌ 否❌ 否设置用户权限TCL❌ 否✅ 是✅ 是(控制事务)保证事务一致性。

python15397的博客 433
上一篇: MySQL 数据库 TCL(事务控制语言)深度指南 —— 企业级事务一致性与并发控制实践
下一篇: MySQL 元信息查询与数据库诊断指南 —— Java 开发者必备的“数据库透视术”
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值