公众号merlinsea
事务
1、什么是事务?
答:数据库事务通常指对数据库进行读或写的一个操作过程。有两个目的,第一个是为数据库操作提供了一个从失败中恢复到正常状态的方法, 同时保证了数据库在异常状态下仍能保持数据一致性的一种机制;第二个是当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供隔离机制,以防止彼此的操作互相干扰。
2、事务的特性
原子性(Atomicity):事务必须是原子工作单元,一个事务中的所有语句,应该做到:要么全做,要么一个都不做;
一致性(Consistency):让数据保持逻辑上的“合理性”,比如:小明给小红打10000块钱,既要让小明的账户减少10000,又要让小红的账 户上增加10000块钱;
隔离性(Isolation):如果多个事务同时并发执行,但每个事务就像各自独立执行一样。
持久性(Durability):一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改(而不仅仅是内存中的变化)。
注:要在mysql开启事务的话,表的引擎必须是为innodb引擎。
3、mysql开启事务的案例
#对结果满意【正确】就commit提交 begin; update employee set money = money-1000 where id='10001'; update employee set money = money+1000 where id='10003'; commit; #对结果不满意【错误】rollback回滚 begin; update employee set money = money-1000 where id='10001'; update employee set money = money+1000 where id='10003'; rollback;
视图
1、什么是视图?
答:视图(view)是一种虚拟存在的表,是一个逻辑表,它本身是不包含数据的。作为一个select语句保存在数据字典中的。通过视图,可以展现基表(用来创建视图的表叫做基表base table)的部分数据,说白了视图的数据就是来自于基表。
2、视图的优点
1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说视图是过滤好的复合条件的结果集。
2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图 来解决,不会造成对访问者的影响。
4)不占用空间:视图是逻辑上的表,不占用内存空间
5)视图中的数据会绑定原表,如果原表中的数据改变了,那么视图中的数据也会改变,对视图的操作都会转换为对原表的操作。
3、视图的缺点
1) 性能差:sql server必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简 单查询,sql server也要把它变成一个复杂的结合体,需要花费一定的时间。
2) 修改限制:当用户试图修改试图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的试图来说,这是很方便的, 但是,对于比较复杂的试图,可能是不可修改的。
4、操作视图的sql语句
create view <视图名称> as select 语句; create view <视图名称> (字段) as select 语句; alter view <视图名称> as select 语句; drop view <视图名称> ;
关于leetcode算法训练营:
加我微信号私聊参加训练营~
本人用c++刷了800道左右的算法,java语言刷了600道左右的算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等等,所以快加入训练营吧,我们一起进步
奔跑的小梁,公众号:梁霖编程工具库算法训练营,快来参加