转义 两种情况
第一种:
第二种:$ 字符 后面 ESCAPE ‘$’ 声明
SELECT FROMyt_test_user ytu WHERE ytu.username LIKE ‘$_%’ ESCAPE ‘$’;
— 排序 可以使用别名进行排序
SELECT ytu.user_name,(ytu.user_salary 12) AS ‘salary’ FROM yt_test_user ytu ORDER BY salary DESC
— 按员工名称长度排序
SELECT LENGTH(ytu.user_name) AS ‘usernamelength’,ytu.user_name,ytu.user_salary
FROM yt_test_user ytu ORDER BY usernamelength DESC,ytu.user_salary ASC
— 函数部分
1、— SUBSTR(str FROM pos FOR len) — 截取字符串
SELECT SUBSTR(‘你好呀’,’2’,’1’) FROM DUAL; — 指引 结构substr(‘字符’,’截取字符串index’,’长度’)
2、— INSTR(str,substr) — 返回字符串的index值
SELECT INSTR(‘你好呀’,’你’) FROM DUAL ; — 1
3、— TRIM([remstr FROM] str) — 去除字符串
SELECT TRIM(‘ 你好呀 ‘) FROM DUAL; — 去除空格 你好呀
SELECT TRIM(‘d’ FROM ‘ddddddddddddd你好dd呀ddddddd’) FROM DUAL ; — 你好dd呀 去除有效字符之外的其他字符
4、 — LENGTH(str) 返回一个字符的长度
SELECT LENGTH(‘你好dd呀’) FROM DUAL; — utf8 字符集 一个汉字三个长度 一个英文字母一个长度 so 11 长度
5、 — LPAD() 用指定的字符实现左填充指定长度
SELECT LPAD(‘你好呀’,10,’‘) FROM DUAL; — 你好呀
6、 — RPAD() 用指定的字符实现右填充指定长度
SELECT RPAD(‘你好呀’,10,’‘) FROM DUAL; — 你好呀
— 日期函数
SELECT NOW(); — 2019-11-25 12:48:32
SELECT CURDATE(); — 2019-11-25
SELECT CURTIME(); — 12:49:06
SELECT YEAR(NOW()); — 2019
SELECT MONTH( NOW()); — 11
SELECT MONTHNAME(NOW()); — November 获取英文名称
SELECT DAY(NOW()); — 25
SELECT STR_TO_DATE(‘12-15-2019’,’%m-%d-%Y’); — 2019-12-15
SELECT DATE_FORMAT(NOW(),’%Y-%m-%d’); — 2019-11-25
SELECT DATE_FORMAT(NOW(),’%Y-%m-%d %H:%i:%s’); — 2019-11-25 12:57:08
— 其它函数
SELECT VERSION(); — 当前数据库版本号 5.7.20-log
SELECT DATABASE(); — 当前使用数据库 mysql
SELECT USER(); — 当前用户 root@localhost
— 流程控制程序
SELECT IF(10 > 5 ,’大’,’小’); — 大
SELECT COUNT(ytu.user_name) FROM yt_test_user ytu; — 2
SELECT COUNT() FROM yt_test_user ytu; — 2
SELECT COUNT(1) FROM yt_test_user ytu; — 2
—效率
MYISAM存储引擎:count() 效率最高
INNoDB存储引擎:count(1) 和count(*) 效率差不多,比count(具体字段)效率高一些
— 事务:ACID
A:1000元
B:1000元
操作:A向B转500元。
原子性atommicity:指事务是一个不可分割的单位,事务中的操作要么都发生,要么都不发生。
一致性Consistency:事务必须是数据库从一个一致性状态切换到另一个一致性状态。
隔离性Isolation:事务的隔离性指一个事务的执行不能被其他事务干扰,即一个事务内部的操作和使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能相互干扰。
持久性Durability:指事务一旦被提交,它对数据库中数据的改变是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。
—事务的隔离级别
演示地址:https://www.bilibili.com/video/av49181542?p=137
脏读 不可重复度 幻读
read uncommitted(读 未提交): √ √ √
read committed(读 已提交): × √ √
repeateble read(可重复读) : × × √
SERIALIZABLE × × ×
MySQL默认第三个隔离级别;
oracle 默认第二个隔离级别;
查看隔离级别: SELECT @@tx_isolation;
设置隔离级别:SET SESSION|GLOBAL TRANSACTION ISOLATION LEVEL 隔离级别;
演示脏读 不可重复读 幻读 出现的案例
事务隔离级别:read uncommittted
事务隔离级别:read committted 避免了脏读、没有避免幻读、不可重复读
事务隔离级别:read committted 避免了脏读、没有避免幻读、不可重复读
幻读、不可重复读问题
事务隔离级别:repeatable read 可重复读。解决脏读和不可重复读。不能解决幻读。
事务隔离级别:repeatable read 可重复读。解决脏读和不可重复读。不能解决幻读。
幻读演示
事务隔离级别:serializable 。解决一切问题。但是单线程,其他一个事务不释放锁,导致所有对数据库进行的事务都会卡住。
