暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql中事务和视图

303
  • 事务

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;


    4、事务流程图


    • 视图

    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年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等等,所以快加入训练营吧,我们一起进步

      奔跑的小梁,公众号:梁霖编程工具库算法训练营,快来参加


      文章转载自梁霖编程工具库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论