mysql学习笔记5

事务Transaction

一个事务是一个完整的业务逻辑,不可再分。
事务的存在是为保证数据的完整性。
比如:银行转账,从A账户到B账户转账10000,需要执行两条update语句
update t_act set balance = balance - 1000 where actno = 'act-001' ;

update t_act set balance = balance + 1000 where actno = 'act-002';
这两条语句必须同时成功。
要想保证以上两条DML同时成功或者失败,需要使用数据库中的"事务机制"。
注意:只有DML语句支持事务。(只有insert、delete、update)
TCL(事务):
提交事务:commit
回滚事务:rollback
保持点:savepoint
事务特性
四大特性:ACID
A:原则性:事务是最小的工作单位,不可再分。
C:一致性:事务必须保持多条DML语句同时成功或者失败。
I:隔离性:事务A与事务B之间具有隔离。(具有隔离级别)
D:持久性:最终数据必须持久化到硬盘文件,事务才算成功。

I:事务隔离性
事务隔离存在隔离级别,理论上包括4个。

第一级别:读未提交(read uncommitted)
对方事务还没有提交,我们当前事务可以读取对方未提交的数据。
读未提交的数据存在脏读(Dirty Read)现象:表示读到了脏的数据。

第二级别:读已提交(read committed)
对方事务提交之后的数据我方可以读到。
读已经提交存在的问题是:不可重复读。

第三级别:可重复读(repeatable read)
这种隔离解决了不可重复读的问题。
问题:读取到的数据是幻像。

第四级别:序列化读/串型化读(serializable)
解决了,所有问题。
效率低,需要排队。

演示事务
mysql事务是自动提交的。(执行一条DML语句就执行一次)
开启事务:start transaction;
使用rollback、commit来结束事务。
commit会直接将数据提交,而使用rollback会回到事务开始的状态。
使用savepoint 名字来记录保存点,使用rollback 保存点名字会返回到对应保存时候的位置。

设置全局事务的隔离级别set global transaction isolation level 隔离级别
第一级别read uncommitted
第二级别read committed
第三级别repeatable read
第四级别serializable
查看隔离级别
mysql8:select @@global.transaction_isolation
mysql5:select @@global.tx_isolation

索引
什么时候考虑给字段添加索引?
1.数据量庞大。(根据客户的要求,线上的环境)
2.该字段很少的DML操作。(因为字段进行修改时,索引也需要维护)
3.该字段经常出现在where中。
注意:主键和具有unique约束的字段会自动添加索引。
主键查询效率高。

查看sql语句的执行计划
explain SQL语句;
explain select ename,sal from emp where sal = 5000;
在这里插入图片描述
给sal字段添加索引:
create index emp_sal_index on emp(sal);
create index 索引名字 on 表名(字段);
drop index emp_sal_index on emp;
drop index 索引名称 on 表名;

索引底层采样的数据结构:B + Tree

单一索引:给单个字段添加索引
复合索引:给多个字段联合起来添加一个索引
主键索引:主键上会自动添加索引
唯一索引:有unique约束的字段上会自动添加索引。
。。。

视图
一些数据库为了保护数据安全性,会采用视图。
create view 视图名字 as DQL语句;
可以看做是从一个表中独立出来的数据,可以通过视图对其增删改查。

DBA命令
1.将数据库中的数据导出。
mysqldump 数据库名字>路径.sql -uroot -p密码(导出数据库)
mysqldump 数据库名字 表名>路径.sql -uroot -p密码(导出数据库中的指定表)
这条语句不要登录,直接在dos窗口中执行。
2.导入数据。
使用source命令导入数据
登录后,创建一个数据库,use使用
使用source 路径.sql文件注意:这条语句不用加分号。

数据设计三范式
什么设计范式?
设计表的依据。按照这个三范式是设计的表不会出现数据冗余。
三范式都是哪些?

第一范式:任何一张表都有一个主键。

第二方式:建立在第一范式的基础之上,所以非主键字段完全依赖主键,不能产生部分依赖。(多对多三张表,俩个外键关系表)

第三范式:建立在第二范式之上,所有非主键直接依赖主键,不能产生传递依赖。
(一对多?两张表,多的表加外键)

在实际的开发中,我们会以客服的需求为主,会拿冗余换执行速度。

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值