事务和正则函数

本文详细介绍了MySQL中的事务概念,包括事务的狭义和广义定义,提交和回滚操作,以及ACID特性。此外,还深入探讨了正则表达式的通配符和相关函数,如REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、REGEXP_REPLACE和REGEXP_COUNT的用法,提供了一种理解与应用正则表达式在SQL查询中的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、事务

1、狭义:从当前的tpl操作到下一次tpl操作之间所有的dml操作 ,(如果中间执行了DDL语句 之前未提交的dml语句会自动提交)。
      广义:任何一次要么全部成功要么全部失败的操作 。

2、事务操作包含  : 提交:commit 
                                  回滚:rollback 

3、事务的4个特性(ACID):

                原子性:事务包含的操作 要么全部成功  要么全部失败回滚  
                一致性:事务执行的前后  整体的状态一致
                隔离性:当多个用户并发访问数据库时,数据。。。库为每个用户开辟的事务,不受其他事务的影响 每个用户之间的事务是隔离的。
                持久性:一个事务一旦提交之后 对数据库的改变是永久的 即使数据库故障也不会丢失数据。
        

二、正则表达式

1、通配符

^、[^]行首、非/取反a|ba或b
 $行尾[abc]a或b或c
.任意单个字符\转义
+匹配1次或者多次[[:space:]] 空白字符比如说回车/换行/换页
*匹配0次或者多次[[:punct:]]标点符号
?匹配0次或者多1次[[:cntrl:]]控制符
{m}刚好匹配了m次()标签
{m,}{m,}至少匹配m次[char]字符列表
{m,n}{m,n}匹配m~n次

                        小写字母 [a-z]  [[:lower:]]
                        大写字母 [A-Z]  [[:UPPER:]]
                        大小写字母[a-zA-Z] [[:alpha:]]
                        数字     [0-9]   [[:digit:]]
                        字母和数字 [0-9a-zA-Z]  [[:alphanum:]]

2、正则函数

1、REGEXP_LIKE(列,匹配模式[,匹配参数])    查询列中符合正则表达式的

   匹配模式:正则表达式(下同)

   匹配参数:c   大小写敏感  --默认 
                     i   大小写不敏感
                     n   可以匹配换行符号
                     m   多行模式 
                     x   扩展模式  忽略正则表达式中的空白字符(下同)

--查询first_name以s开头n结尾
SELECT * 
FROM PERSON 
WHERE REGEXP_LIKE(FIRST_NAME,'^S.*N$','i');

--查询first_name中包含JO的 
SELECT * 
FROM PERSON 
WHERE REGEXP_LIKE(FIRST_NAME,'.*JO.*','i');
SELECT * 
FROM PERSON 
WHERE REGEXP_LIKE(FIRST_NAME,'(JO)+','i');

 2、REGEXP_INSTR(STR,'匹配模式'[,数1[,数2[,数3[,匹配参数]]]])       查找字符串出现的位置

        找符合匹配模式的在str中出现的位数,从数1开始找数2次出现的位置,数3表示返回值类型  --默认是0 
        如果是0  返回匹配到的字符的第一个字符的位置  
        非0  返回匹配到字符串的最后一个字符的下一个位置 

--查看zip列第一个非数字字符的位置
SELECT ZIP,REGEXP_INSTR(ZIP,'[^0-9]',1,1,1) AAAAA
FROM PERSON;

--查找zip列第二次出现字母和数字组合的位置
SELECT ZIP,REGEXP_INSTR(ZIP,'[A-Z][0-9]',1,2,0,'i') AAAAAA
FROM PERSON;

--查找zip列第一次出现字母和数字组合的位置(返回字符串最后一个字符的下一位)
SELECT ZIP,REGEXP_INSTR(ZIP,'[A-Z][0-9]',1,1,2,'i') AAAAAA
FROM PERSON;

3、REGEXP_SUBSTR(STR,'匹配模式'[,数1[,数2[,匹配参数]]] 

      截取字符串中符合匹配模式的字符 从数1开始找数2次出现的 

--截取zip列中第一个数字加字母的组合 
SELECT ZIP,REGEXP_SUBSTR(ZIP,'[0-9][A-Z]',1,1,'i') AAAAA
FROM PERSON; 

--截取zip列第一个连续的字母串 
SELECT ZIP,REGEXP_SUBSTR(ZIP,'[A-Z]{2,}',1,1,'i') AAAA

 4、REGEXP_REPLACE(STR1,'匹配模式'[,STR2[,数1[,数2[,匹配参数]]]])

       把str1中符合匹配模式的内容替换成str2 从数1开始找找数2次出现的 
       STR2不写 默认是空 
       不写数2  默认全部替换

--把zip列中所有的数字替换成* 
SELECT ZIP,REGEXP_REPLACE(ZIP,'[0-9]','*') AAAAA
FROM PERSON;

--把zip列所有的非数字替换成空 
SELECT ZIP,REGEXP_REPLACE(ZIP,'[^0-9]') AAAAA
FROM PERSON;

--把zip列中的第一个数字替换成?
SELECT ZIP,REGEXP_REPLACE(ZIP,'[0-9]','?',1,1) AAAAA
FROM PERSON;

 5、REGEXP_COUNT(STR,匹配模式[,数[,匹配参数]])        

        统计匹配模式出现的次数 从第数位开始 默认从第一位

--zip列有几个数字
SELECT ZIP,REGEXP_COUNT(ZIP,'[0-9]') AA
FROM PERSON;

--计算员工姓名中有几个A 
SELECT ENAME,REGEXP_COUNT(ENAME,'[A]') AA
FROM EMP;

--查询hr中employees中的电话号码有机部分 
SELECT * FROM HR.EMPLOYEES;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值