欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > MySQL事务,函数,性能,索引

MySQL事务,函数,性能,索引

2025/6/6 21:12:09 来源:https://blog.csdn.net/qq_73595043/article/details/146018627  浏览:    关键词:MySQL事务,函数,性能,索引

MySQL事务,函数


事务

执行事务:相当于一个业务操作

例如:转账操作,一个用户转出资金,另外一个用户收到增加自己的资金,这两个步骤都需要成功执行才行)

# MySQL数据库中默认:一行SQL语句会自动提交(表中持久更新)# 事务:一组逻辑操作单元。可以在事务中书写多行SQL语句,要么全部执行成功,要么全部执行失败。

两种事务的操作方式:

手动提交:先开启,再提交

自动提交:每执行完一条一条SQL语句就会自动开启提交一次事务

TODO:事务原理

1、(客户端会连接MySQL服务,服务端对于这个用户进行安全校验,通过之后会创建一个临时的日志文件)

2、如果是自动提交的事务,则直接将SQL语句结果直接同步到数据表中去

3、如果是手动提交的事务,则将SQL语句的结果先写入临时日志文件中去

3.1、最后commit,则将SQL语句结果同步到数据库中

3.2、rollback,则直接将临时的日志文清除

手动提交事务SQL语句

开启事务:start transaction;

提交事务:commit;

回滚事务:rollback;

事务的四大特征:

# 事务的四大特征(ACID):
-- 原子性A:事务中SQL语句的操作不可以再分为一个最小的单元,要么都成功,要么都失败。
-- 一致性C:事务开始前和事务结束后,数据库的完整性没有被破坏。相当于两个人转账的过程,可能每个人的账户余额有所变化,但是两人的总的金额是没有变化的
-- 隔离性I:多个事务开启的时候,每一个事务的执行不能被其他事务干扰,多个事务之间不能互相干扰。
-- 持久性D:事务结束,对数据库的更改就是持久的,即对数据库的更改可以 survive重启。

数据库函数的引用

1、日期函数:

-- 日期函数:now()用于返回当前的系统时间
select now();
select sysdate();
-- 获取当前的日期
select curdate();
-- 获取当前的时间
select curtime();-- 获取年月日
select year(now());
select month(now());
select day(now());-- 获取一年中的第几周
select weekofyear(now());# 获取几月几日---》通过concat函数进行拼接
select concat(month(now()),'月',day(now()),'日') as '当前日期';

2、判断函数(常用):

case when 条件 then 结果 else 结果 end

#Case when:(一定要用别名代替结果)
#语法1:
case 列名
when 条件1 then 结果1
when 条件2 then 结果2
when 条件3 then 结果3
else 结果n
end as '别名'
#语法2:
case
when 条件1 then 结果1
when 条件2 then 结果2
when 条件3 then 结果3
else 结果n
end as '别名'#实例:(sex为Int类型)
select name,
case sexwhen 1 then '男'when 2 then '女'
else '未知'
end as '性别',
age from stu;#第二种写法:
select name,
case
when sex = 1 then '男'
when sex = 2 then '女'
else '未知'
end as '性别',
age from stu;

3、字符串函数
# 字符串函数(针对与varchar类型的数据进行操作)
# 获取字符串的长度:length(列名)
select length('abc');select length(name) from user;# 拼接字符串:concat(列名1,列名2)
select concat(name,'-',age) from user;
select concat(month(curdate()),' ',day(curdate()));# 获取当前日期# 转换大小写
select lower('I lovE');
select upper('I lovE');# 截取字符串:substring(字符串,起始位置,截取长度)
select substring('hello world',1,3);# 去除字符串前后的空格:trim(列名)
select trim('   hello   ');
# 由于存储字符串类型的数据的时候不够长度会默认补充空格,所以去除字符串前后的空格可以用到这个函数

4、数学函数

# 数学函数(针对数字类型的数据提供功能)
# 获取随机数(0,1)之间
select rand();# 四舍五入(用法:round(数值,保留小数点后几位))
select round(12.3456,2);
select round('12.3456',3);# 去除小数的尾数
select truncate('3.1415926',2);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词