当前位置: 首页 > article >正文

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 sex
    when 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);


http://www.kler.cn/a/574052.html

相关文章:

  • 【GoTeams】-2:项目基础搭建(下)
  • BGP服务器主要是指什么?
  • 硬件学习【1】74HC165D-并行信号输入-串行输出
  • VSCode 配置优化指南:打造极致高效的前端开发环境
  • 系统架构设计师—软件工程基础篇—软件开发方法
  • 【无标题】养老护理初级考题抽取——2大题抽1+7小题抽2-共有432种可能。
  • 【LeetCode 热题 100】438. 找到字符串中所有字母异位词 | python 【中等】
  • go语言因为前端跨域导致无法访问到后端解决方案
  • vim基本操作及常用命令
  • WPS条件格式:B列的值大于800,并且E列的值大于B列乘以0.4时,这一行的背景标红
  • 蓝桥与力扣刷题(蓝桥 数字三角形)
  • AT89S51 单片机手册解读:架构、功能与应用深度剖析
  • R语言——数据类型
  • 单例模式的五种实现方式
  • MATLAB中lookAheadBoundary函数用法
  • 【前端基础】Day 6 CSS定位
  • 护照阅读器在汽车客运站流程中的应用
  • 洛谷P1102 A-B 数对
  • OceanBase-obcp-v3考试资料梳理
  • qt作业day5