ORACLE学习(十一)

事务:

狭义:从当前的tpl操作到下一次tpl操作之间所有的dml操作

(如果中间执行了DDL语句 之前未提交的dml语句会自动提交)

广义:任何一次要么全部成功要么全部失败的操作

提交:commit

回滚:rollback

insert intO EMP_1(EMPNO) VALUES(111);

ROLLBACK;

COMMIT

事务的四个特性:(ACID)

原子性:事务包含的操作 要么全部成功 要么全部失败回滚

一致性:事务执行的前后 整体的状态一致

隔离性:当多个用户并发访问数据库时,数据库为每个用户开辟的事务

不受其他事务的影响 每个用户之间的事务是隔离的

持久性:一个事务一旦提交之后 对数据库的改变是永久的 即使数据库

故障也不会丢失数据

锁:读锁(共享锁) 写锁(排它锁)

死锁:多个用户互相占有对方的资源 导致谁也无法完成自己的操作(解:让一方1、回滚或提交;2、下线;)

--正则函数

通配符

1、 ^ 行首 [^]非/取反

2、 $ 行尾

3、 . 任意单个字符

4、 * 匹配0次或者多次

5、 ?匹配0次或者1次

6、 + 匹配1次或者多次

7、 {m}刚好匹配了m次

8、 {m,}至少匹配m次

9、 {m,n}匹配m~n次

10、a|b a或b

11、[abc] a或b或c

12、 \ 转义

13、[[:space:]] 空白字符 比如说回车/换行/换页

14、[[:punct:]] 标点符号

15、 [[:cntrl:]] 控制符

16、 () 标签

17、 [char] 字符列表

小写字母 [a-z] [[:lower:]]

大写字母 [A-Z] [[:UPPER:]]

大小写字母[a-zA-Z] [[:alpha:]]

数字 [0-9] [[:digit:]]

字母和数字 [0-9a-zA-Z] [[:alphanum:]]

正则函数

1、REGEXP_LIKE

2、REGEXP_INSTR

3、REGEXP_SUBSTR

4、REGEXP_REPLACE

5、REGEXP_COUNT

1、REGEXP_LIKE(列,匹配模式[,匹配参数])

匹配参数:c 大小写敏感 --默认

i 大小写不敏感

n 可以匹配换行符号

m 多行模式

x 扩展模式 忽略正则表达式中的空白字符

SELECT * FROM PERSON;

--查询zip列以数字开头的

SELECT * FROM PERSON

WHERE REGEXP_LIKE(ZIP,'^[0-9]');

--查询zip列非数据结尾的人

SELECT * FROM PERSON*

WHERE REGEXP_LIKE(ZIP,'[^0-9]$');

--查询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 返回匹配到的字符的第一个字符的位置 abcdef cd 3

非0 返回匹配到字符串的最后一个字符的下一个位置 abcdef cd 5

--查看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 FROM PERSON;

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;

SELECT PHONE_NUMBER,REGEXP_COUNT(PHONE_NUMBER,'.')+1 电话部分

FROM HR.EMPLOYEES;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟德斯鸠的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值