课程名称:Java工程师2022版
课程章节:Java数据库开发与实战
课程讲师:IT老齐 悟空 八戒猪 神思者 Leo
课程内容:MySQL基本函数的使用
一、MySQL函数的回顾(条件语句)
复杂的条件判断可以用条件语句来实现,比IF语句功能强大。
CASE
WHEN 表达式 THEN 值1
WHEN 表达式 THEN 值2
...
ELSE 值N
END
SELECT
e.empno,e.ename,
CASE
WHEN d.dname="SALES" THEN "p1"
WHEN d.dname="ACCOUNTING" THEN "p2"
WHEN d.dname="RESEARCH" THEN "p3"
END AS place
FROM t_emp e JOIN t_dept d
ON e.deptno=d.deptno;
二、MySQL数据库的事务机制
1.如果数据的写入直接操作数据文件是非常危险的事情。
MySQL总共有5种日志,其中只有redo日志和undo日志与事务有关。
事务机制(Transaction),EDBMS=SQL语句+事务(ACID)
事务是一个或者多个SQL语句组成的整体,要么全部执行成功,要么全部执行失败。
2.管理事务
默认情况下,MySQL执行每条SQL语句都会自动开启和提交事务。
为了多条SQL语句纳入到一个事务下,可以手动管理事务。
START TRANSACTION;
SQL语句
[COMMIT|ROLLBACK];
这段代码的第一行代码表示开启事务机制,第三行代码的COMIT表示提交执行了的SQL语句,ROLLBACK语句表示回滚执行了的SQL语句。
3.事务的ACID属性
事务的的4大特性就被称为事务的ACID属性。ACID属性包含了原子性,一致性,隔离性,持久性。
原子性:一个事务中的所有操作要么全部完成,要么全部失败。事务执行后,不允许停留在中间的某个状态。
一致性:事物的一致性,不管在任何给定的时间、并发事务有多少,事务必须保证运行结果的一致性。
隔离性:隔离性要求事务不受其他并发事务的影响,如同时给定的时间内,该事务是数据库唯一运行的事务。
持久性:事务一旦提交,结果便是永久性的。即便发生宕机,仍然可以依靠事务日志完成数据的持久化。
4.事务的四个隔离级别
序号 | 隔离级别 | 功能 |
---|---|---|
1 | read uncommitted | 读取未提交数据 |
2 | read committed | 读取已提交数据 |
3 | repeatable read | 重复读取 |
4 | serializable | 序列化 |
第一行表示可以读取其他事务未提交的数据。SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
比如银行转账这种业务,绝对不能使用这种方式去做,因为如果可以读取未提交的数据的话,就会让整个系统和社会发生混乱。
第二行表示只能读取其他事务提交的数据。SET SESSION TRANSACTION ISOLATION LEVEL READ COMITTED;
第三行表示事务在执行中反复读取数据,得到的结果是一致的,不会受其他事务影响。SET SESSION TRANSACTION LEVEL REPEATABLE READ;
这也是MySQL默认的读取方式。
第四行表示事务序列化,由于事务并发带来的各种问题,前三种隔离级别只适用在某些事务场景中,但是序列化的隔离性,让事务逐一执行,就不会产生上述问题了。SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
设置后前一个事务没有执行完成,后一个事务是不会执行的。
三、数据持久化
1.数据导出与备份的区别
数据导出,导出的纯粹是业务数据
数据备份,备份的是数据文件、日志文件、索引文件等等。
全量备份——>增量备份1——>增量备份2
全量备份需要占据很大的内存空间,增量备份类似于按需备份。
数据导出的分类,主要有两类,第一类是SQL文档,第二类是文本文档。如果导出的数据很多,那么应该是导出文本文档,如果导出的数据不是很多的话就应该导出SQL文档。
mysqldump -uroot -p [no-data] 逻辑库 > 路径
2.导入SQL文件
source命令用于导入SQL文件,包括创建数据表,写入记录等。
sql > USE demo;
sql > source backup.sql;
如果保存为txt的格式的话,不管在导入还是在导出的时候,速度都是非常快的。
课程总结:
完成了今天的学习目标:
1.MySQL函数的回顾。
2.MySQL数据库的事务机制。
3.数据持久化。
共同学习,写下你的评论
评论加载中...
作者其他优质文章