mysql 函数事务_MySQL:函数和事务
一、函数
MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。
(一)数学函数
函数
功能
ABS(x)
求绝对值
PI()
返回圆周率
SQRT(x)
平方根函数
MOD(x,y)
求余函数
RAND()和RAND(x)
获取随机数的函数
ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)
四舍五入函数
SIGN(x)
符号函数
POW(x,y)、POWER(x,y)和EXP(x)
幂运算函数
LOG(x)和LOG10(x)
对数运算函数
(二)字符串函数
函数
功能
CHAR_LENGTH(s)
计算字符串s的字符数
LENGTH(s)
计算字符串s的长度
CONCAT(s1,s2,...)
将s1、s2等多个字符串合并成一个字符串
CONCAT_WS(x,s1,s2,...)
将s1、s2等多个字符串合并成一个字符串,但可将各字符串直接用参数x隔开
UPPER(s)和UCASE(s)
将字符串s的所有字母变成大写字母
LOWER(s)和LCASE(s)
将字符串s的所有字母变成小写字母
REPEAT(s,n)
将字符串s重复n次
STRCMP(s1,s2)
比较字符串s1和s2。如果s1大于s2,结果返回1;如果s1等于s2,结果返回0;如果s1小于s2,结果返回-1。
REVERSE(s)
将字符串s的顺序反过来
SUBSTRING(s,a,b)
从字符串s中的第a个字符开始取b个字符
(三)日期和时间函数
函数
功能
CURDATE()和CURRENT_DATE()
获取当前日期
CURTIME()和CURRENT_TIME()
获取当前时间
NOW()、CURRENT_TIMESTAMP()、LOCALTIME()和SYSDATE()
获取当前的日期和时间
UNIX_TIMESTAMP()
以UNIX时间戳的形式返回当前时间
UNIX_TIMESTAMP(d)
将时间d以UNIX时间戳的形式返回
FROM_UNIXTIME(d)
把UNIX时间戳的时间转换为普通格式的时间
MONTH(d)
返回日期d中的月份值,其取值范围是1~12
MONTHNAME(d)
返回日期d中的月份的英文名称
YEAR(d)
返回日期d中的年份值
QUARTER(d)
返回日期d是本年第几季度,值的范围是1~4
HOUR(t)
返回时间t中的小时值
MINUTE(t)
返回时间t中的分钟值
SECOND(t)
返回时间t中的秒钟值
(四)条件判断函数
函数
功能
IF(expr,v1,v2)
如果表达式expr成立,返回结果v1;否则,返回结果v2。
IFNULL(v1,v2)
如果v1的不为空,就显示v1的值;否则就显示v2的值。
(五)系统信息函数
函数
功能
VERSION()
返回数据库的版本号
CONNECTION_ID()
返回服务器的连接数,也就是到现在为止MySQL服务的连接次数
DATABASE()和SCHEMA()
返回当前数据库名
USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()和CURRENT_USER
返回当前用户的名称
LAST_INSERT_ID()
返回最后生成的AUTO_INCREMENT值
(六)加密函数
函数
功能
PASSWORD(str)
可以对字符串str进行加密
MD5(str)
可以对字符串str进行加密
DECODE(crypt_str,pswd_str)
可以使用字符串pswd_str来为crypt_str解密
二、自定义函数
(一)语法
Create function function_name(参数列表)returns返回值类型
(二)叙述
函数体、函数名,应合法的标识符,不应与系统关键字冲突。
一个函数应该属于某个数据库,可以使用db_name.funciton_name的形式执行当前函数所属数据库,否则为当前数据库。
参数部分,由参数名和参数类型组成。
返回值类类型。注意,一定要有return返回值语句。
(三)举例
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `ZZZ1`(PARA_VAR varchar(30))
RETURNS varchar(100) CHARSET latin1
BEGIN
DECLARE NAYIBU_FIR VARCHAR(30) DEFAULT 'THIS IS MY FIRST,';
SET NAYIBU_FIR = concat(NAYIBU_FIR,PARA_VAR);
RETURN NAYIBU_FIR;
END$$
(四)查看自定函数
show function status;
三、事务
应用中的一个业务逻辑,往往由多条语句组合完成。那么我们就可以简单地将事务理解为一组SQL语句的集合,要么这个集合全部成功集合,要么这个集合就全部失败退回到第一句之前的状态。
(一)语法
开启事务start transaction,可以简写为 begin
然后记录之后需要执行的一组sql
提交commit
如果所有的sql都执行成功,则提交,将sql的执行结果持久化到数据表内。
回滚rollback
如果存在失败的sql,则需要回滚,将sql的执行结果,退回到事务开始之时。
无论回滚还是提交,都会关闭事务!需要再次开启,才能使用。
还有一点需要注意,就是事务只针对当前连接。
(二)举例
使用第一个链接A
Start transaction;
Insert into students values('qreal',5);
结果成功,数据已经变成修改之后!但此时我们没有提交。再从其他连接B来查看,发现数据没有插入。此时如果连接A选择提交,也就是commit操作。则连接B的数据也会发生变化。而如果连接A选择回滚,也就是rollback操作。则连接A再次查询则发现数据还原。
(三)基本原理
提交,就会将结果持久化,不提交就不会。如果我们不开启事务,只执行一条sql,马上就会持久化数据,可以看出,普通的执行就是立即提交。这是因为MySQL默认对sql语句的执行是自动提交的。也就是说,开启事务,实际上就是关闭了自动提交的功能,改成了commit手动提交!
我们可以通过简单的对是否自动提交加以设置,完成开启事务的目的!
自动提交的特征是保存在服务的一个autocommit的变量内。可以进行修改:
Set autocommit = 0;
还需要注意一点,就是事务类似于外键约束,只被innodb引擎支持。
(四)事务的特点
事务的特点ACID。也就是原子性、一致性、隔离性和持久性。
原子性:事务是不可分割的。
一致性:保证数据在事务的执行周期内,是一致的!
隔离型:多个事务之间的干扰关系!隔离级别!
持久性:事务一旦被提交,就不可能再被回滚!
mysql 函数事务_MySQL:函数和事务相关推荐
- mysql函数大全最小,MySQL函数一览_MySQL函数全部汇总
前言 MySQL提供了众多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,从而更加灵活地满足不同用户的需求.本文将MySQL的函数分类并汇总,以便以后用到的时候可以随时 ...
- mysql中的事务_mysql中的事务,你理解嘛?
事务又叫做TCL,全称是transaction control language,意思是事务控制语言.这篇文章还是属于我的mysql基础文章,在前面我们介绍了下面这些基础知识: 1.数据库的增查改删操 ...
- mysql xa 事务_MySQL的XA事务问题分析
mysql5.7以后的版本支持了xa prepare事务的持久化,这使得基于mysql xa的分布式事务方案变的可行.但mysql目前的XA实现在极端故障场景下是会出现事务丢失或innodb数据与bi ...
- mysql函数示例_mysql函数备忘单和示例
mysql函数示例 There are a ton of functions provided by MySQL and most of them are used extensively. I wi ...
- mysql xid原理_MySQL数据库分布式事务XA实现原理分析
[IT168 技术]MySQL XA原理 MySQL XA分为两类,内部XA与外部XA;内部XA用于同一实例下跨多个引擎的事务,由大家熟悉的Binlog作为协调者;外部XA用于跨多MySQL实例的分布 ...
- mysql function加速_MySQL - 函数(FUNCTION)
about MySQL提供了丰富的内置函数自定义函数. 而我们也对这些函数有所了解,比如聚合函数. 本篇再来了解一些内置函数和自定义函数的编写. 写在前面的话:默认情况下,函数名称和其后的括号之间必须 ...
- mysql 活跃事务_MySQL日志与事务
整体架构 事务的基本概念 事务就是一组原子性的sql查询,或者是一个独立的工作单元 事务内的语句,要么全部执行成功,要么全部执行失败 ACID标识原子性(atomicity).一致性(consiste ...
- mysql开启事务_MySQL入门之事务(上)
事务 事务介绍 事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功 数据库开启事务命令 start transaction 开启事务 (等同于set autoco ...
- mysql xa 演示_mysql的XA事务恢复过程详解
mysql数据库开机报错: InnoDB: The log sequence number in ibdata files does not match InnoDB: the log sequenc ...
- mysql函数使用_mysql函数应用
昨天测试时发现大佬暴力修改了数据库的某些字段,导致无法人员注册,按理说屏蔽关键信息应该是只将身份证的几位改为*就好. 为了继续测试,自力更生,寻求正确的sql语句修改,学习到一些方便的函数 conca ...
最新文章
- Python组合数据类型之序列类型
- ClickHouse系列教程
- GitHub优秀开源项目收集
- springboot使用webjars引入jquery
- 光纤传感器实验模块_准分布式光纤光栅传感器(光纤光栅串)的概念
- IOS开发之MD5加密和钥匙串的使用-oc
- easy-ui的datagrid
- launchpad乐器_请把《明日之子》里徐洋称为哆啦A洋,还有什么乐器是你不会的?...
- [Python3] 面向对象编程
- 吞吐量、响应时间和 CPU 利用率之间的关系
- vue中的事件修饰符.self、.capture和.passive
- 界门纲目科属种的英文——学生物的基础
- 大神带你秒懂Modbus通信协议
- 模仿微信九宫格图片展示控件
- 015 Django 云笔记项目(可以略过)
- 广州红海云计算股份有限公司获全球软件最高级别CMMI5认证
- 配置静态NAT和配置动态NAT
- 华为鸿蒙和美的,美的与华为鸿蒙合作,为智能家居领域带来更深度的场景与服务...
- DTOJ 1486:分数(score)
- 我只是一名创业者,不是成功者
热门文章
- CWP中的排序算法:C语言
- 欧拉和格拉斯曼解释平行宇宙
- java集合的扩容研究
- mysql 备份表_Mysql 表的备份与恢复
- 计算机应用技术爱岗敬业,高职专业人才培养方案(计算机应用技术).doc
- Unity3d暴风魔镜发布ios问题记录
- Leecode刷题热题HOT100(4)——寻找两个正序数组的中位数
- OpenShift 4 - Fedora CoreOS (2) - 准备 Fedora CoreOS 安装环境的三个工具
- 在MySQL中使用游标和for循环
- 边缘设备上的实时AI人员检测:以实时模式检测视频中的人员