MySQL 共享锁&排他锁

logo 623 2022-08-07

共享锁(lock in share mode) 允许不同事务之间共享加锁读取,但不允许其它事务修改或者加入排他锁;如果有修改必须等待一个事务提交完成,才可以执行,容易出现死锁 共享锁事务之间的读取 session1: start transaction; select * from test where id = 1 ...

详情...

mysql 事务特性以及隔离级别说明

logo 567 2022-08-07

事务: 事务就是针对数据库的一组操作,它可以由一条或者多条SQL语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句不能执行的话(或执行失败),那么所有的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。 注意只有使用innodb引擎的数据库或表才支持事务,MyISAM引擎不支持事务处理 事务特性 ...

详情...

MySQL order by limit 分页数据重复或丢失问题说明

logo 589 2022-08-07

mysql 中当 order by 与limit 同时使用,数据可能出现重复或丢失问题 使用了 下面的 方法 发现也没什么问题 Db::name('users') ->where(['is_disabled'=>0]) ->field('id,nickname,team_son+team_gran ...

详情...

理解 MySQL 字符集

logo 511 2022-05-04

转自:明月逐人归 平时我们用MySQL,字符编码方式一般是 utf8 或者 utf8mb4,至于MySQL内部是如何处理编码问题的在日常开发中并没有十分关注,遇到最多的问题也无非是表中中文乱码和表情无法存储。对于编码不一致的问题,出问题是在所难免的,我们需要系统地了解下在MySQL内部字符集是如何配置和转化的。 字符集 ...

详情...

MySQL 查询中 where in 如何保持顺序

logo 159 2022-02-17

select * from table_name where id in () 如上sql语句,MySQL会自动按主键自增排序,要是按IN中给定的顺序排序,写法如下: SELECT * from `models` where `id` in (26612,26611,26610) order by field(id,2 ...

详情...

MySql 各日志配置方法:错误日志、慢查询日志、执行日志

logo 222 2022-02-10

MySQL 错误日志 编辑mysql配置文件/etc/my.cnf,添加如下配置: [mysqld] log-error=/alidata/log/mysql/mysql_error.log 注意对于错误日志文件 /alidata/log/mysql/mysql_error.log 要提前创建好,设置为mysql用 ...

详情...

mysql 控制 sql 长度的相关参数

logo 111 2022-01-26

max_allowed_packet : 控制整个sql 语句长度限制 group_concat_max_len : 限制GROUP_CONCAT函数返回的结果大小,默认限制为1024(字节)的长度。 ...

详情...

MySql 5.7 报错 sql_mode=only_full_group_by 问题解决方法

logo 147 2022-01-19

mysql 5.7 以上版本中sql_mode默认开启了 ONLY_FULL_GROUP_BY,ONLY_FULL_GROUP_BY的语义就是确定select target list中的所有列的值都是明确语义,简单的说来,在此模式下,target list中的值要么是来自于聚合函数(sum、avg、max等)的结果,要 ...

详情...

Mysql 的日期时间类型说明

logo 77 2022-01-09

包括: DATETIME、TIMESTAMP、DATE、TIME、YEAR TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如: 注意 "ON UPDATE CURRENT_TIMESTAMP" 对应的是表结构中的Extra字段 1.在创建新记录和修改现有记录的时候都对这个数据列刷新: TIMESTAMP ...

详情...

SQL 中 WHERE 和 HAVING 子句有什么区别?

logo 367 2022-01-07

SQL中 where 和 having 子句具有不同的功能。但它们都会过滤掉一些行。 一般情况下 HAVING 子句通常与 group by 子句一起使用,对 group by 分组的结果再次进行筛选。having 子句将过滤条件应用于每组分行,而 where 子句是将过滤条件应用于每个单独的行。 下面让我们来详细 ...

详情...

MySQL concat、concat_ws、group_concat 函数用法

logo 337 2021-12-28

CONCAT(str1,str2,…) 将多个字符串连接成一个字符串。 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。 一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT ...

详情...

MySQL 回表查询

logo 544 2021-12-26

1、什么是回表查询? 这先要从InnoDB的索引实现说起,InnoDB有两大类索引: 聚集索引(clustered index) 普通索引(secondary index) 2、聚集索引和普通索引有什么差异? InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引: 如果表定义了PK ...

详情...