MySQL

MySQL死锁:从原理到预防之道

什么是死锁?死锁是指两个或两个以上的事务在执行过程中,因争夺锁资源而造成的一种相互等待的现象,若无外力干预,这些事务都将无法进行下去。死锁的产生必须满足以下四个条件:条件名称描述简单解释互斥条件(Mutual Exclusion)一个资源每次只能被一个事务持有。锁是独占的,不能共享。请求与保持条件(Hold and Wait)一个事务在持有至少一个资源的同时,又请求新的资源(该资源已被其他事务持有

MySQL 创建存储过程

一、 为什么使用存储过程?简化操作:将多步操作封装成一个命令。提高效率:一次编译,多次运行,减少网络传输。减少错误:集中处理业务逻辑,避免在应用程序中重复编写和出错。二、 创建存储过程的基本语法CREATE PROCEDURE <过程名> ( [过程参数[,…] ] )BEGIN <过程体>END;1.

数据库设计的核心要义

数据库设计是一项系统工程,其本质是根据特定业务场景的功能需求和数据特征,结合目标数据库管理系统的技术特性,通过科学的建模方法构建出完整、高效、可维护的数据存储体系。这一过程不仅包含表结构的定义,更涵盖数据实体间复杂关系的梳理,以及完整的数据约束规范的建立。设计必要性的多维考量1. 规模维度 对于数据实体单一、业务逻辑简单的系统(如个人博客

DBA到底要做什么,成为一名DBA需要具备什么能力

一、DBA的日常工作职责 1. 基础运维保障(30%时间) 安装与配置:部署MySQL/Oracle等数据库,优化参数文件(如`my.cnf`)。 备份与恢复:制定备份策略(全量+增量),模拟灾难恢复(如误删表后的`Point-in-Time Recovery`)。 监控与告警:用Prometheus+Grafan

MySQL json_merge() 函数:JSON合并

在MySQL中,json_merge(json_doc, json_doc, ...) 函数用于合并多个JSON文档,即返回合并后的JSON文档。其语法格式如下:json_merge(json_doc,json_doc,...)--返回合并后的JSON文档json_merge()函数是一个JSON函数,用于将多个JSON文档合并为一个JSON文档。值得注意的是,

MySQL nullif() 函数:比较两个表达式

在MySQL中,nullif(expr1, expr2) 函数用于比较两个表达式,即如果expr1等于expr2则返回NULL,否则返回expr1。其语法格式如下:nullif(expr1,expr2)--比较两个表达式nullif()函数是一个流程控制函数,用于在两个表达式相等时返回NULL,避免重复值的出现。值得注意的是,如果expr1等于expr2,则返回NULL;如

MySQL dayofmonth() 函数:获取日期在月份中的天数

在MySQL中,dayofmonth(date) 函数用于获取日期在月份中的天数,即返回日期在当月中的第几天(1-31)。其语法格式如下:dayofmonth(date)--返回日期在月份中的天数dayofmonth()函数根据日期参数返回对应的天数,返回值为1到31的整数。值得注意的是,dayofmonth(NULL) 的返回值是NULL;对于非日期格式的字符串或无效日期,dayof

MySQL abs()函数:求绝对值

在MySQL中,abs(x)函数被称为绝对值函数,其功能是返回x的绝对值。其语法格式如下:abs(x)--返回x的绝对值对于一个正数来说,其绝对值是它本身;对于一个负数来说,其绝对值是它的相反数;对于0来说,其绝对值是0。下面,我们通过abs()函数分别求取1、-3.14和0的绝对值:selectabs(1);selectabs(-3.14);&n

MySQL 查看用户权限

MySQL 提供了两种主要方法来查看用户权限,适用于不同场景。方法一:使用 `SHOW GRANTS` 语句(推荐首选)这是最常用、最直观的方法,直接显示授予用户的权限语句。语法:SHOWGRANTS[FOR'username'@'hostname'];使用场景:1. 查看当前用户权限:不指定 `FOR`

MySQL 查看触发器

一、SHOW TRIGGERS 语句基本语法:SHOW TRIGGERS;常用选项:查看指定数据库的触发器SHOWTRIGGERSFROMdatabase_name;查看指定模式的触发器(模糊匹配)SHOWTRIGGERSLIKE'pattern';