MySQL-MySQL使用小技巧
本文最后更新于:January 8, 2023 pm
积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。
目录
group_concat函数
拼接内容。
拼接所有字段
1 |
|
分组拼接所有内容
找出每个人所有选课的成绩。
1 |
|
如下:
char_length函数
获取字符的长度
。
1 |
|
replace函数
替换字符串中部分内容。
替换
将字符串中的字符A替换成B。
1 |
|
去掉空格
去掉前后空格
:
1 |
|
插入数据
insert into … select:需要插入的数据来源于另外一张表或者多张表的结果集中。
1 |
|
insert into … ignore:判断插入数据的唯一键是否存在。如果存在,则不插入数据。如果不存在,才需要插入数据。
1 |
|
如果brand表中没有id为123的数据,则可以直接插入成功。但如果已经存在了,则该sql语句也能正常执行,并不会报错。因为它会忽略异常,返回的执行结果影响行数为0,它不会重复插入数据。
悲观锁
select … for update:在一个事务中使用
for update
锁住一行记录,其他事务就不能在该事务提交之前,去更新那一行的数据。
MYSQL数据库自带了悲观锁
,它是一种排它锁,根据锁的粒度从大到小分为:表锁
、间隙锁
和行锁
。
1 |
|
需要注意的是for update前的id条件,必须是表的
主键
或者唯一索引
,不然行锁可能会失效,有可能变成表锁
。
查询更新
on duplicate key update:在插入数据之前判断,如果主键或唯一索引不存在,则插入数据。如果主键或唯一索引存在,则执行更新操作。具体需要更新的字段可以指定。这样能实现既不会产生重复数据,也能更新最新的数据。
1 |
|
- 需要注意的是,在高并发的场景下使用
on duplicate key update
语法,可能会存在死锁
的问题,所以要根据实际情况酌情使用。
本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/8c056ebf.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!