六、事务、视图、索引

6.1、什么是事务

2021年12月24日

14:57

要么成功,要么都失败

------------

1、SQL执行   A给B 转账   A 1000   ---->200   B 200

2、SQL执行  B收到A的钱  A 800   ---> B 400

---------

将一组SQL放在一个批次中去执行~

事务原则:ACID 原则  原子性,一致性,隔离性,持久性    (脏读,幻读

参考博客链接:https://blog.csdn.net/dengjili/article/details/82468576

原子性(Atomicity

要么都成功,要么都失败

一致性(consistency

事务前后的数据完整性要保证一致,100

持久性(Durability ---事务提交

事务一旦提交则不可逆,被持久化到 数据库中!

隔离性(lsolation

事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间相互隔离。

隔离所导致的一些问题

脏读:

指一个事务读取了另外一个事务未提交的数据。

不可重复读

在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)

虚读(幻读)

是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

执行事务

模拟场景

6.2、什么是视图

2021年12月24日

18:18

视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。

6.3、为什么要使用视图

因为视图的诸多优点,如下

  1. 简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
  2. 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
  3. 数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

        总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。

2021年12月24日

18:19

6.4、视图操作

2021年12月24日

18:19

注意:推荐使用WHIT [CASCADED|LOCAL] CHECK OPTION选项,可以保证数据的安全性,所以建议加上它。

推荐语法格式:

查询结果:

查询结果:

使用show create view语句查看视图信息,比如

create or replace view view_name as select语句;

在视图存在的情况下可对视图进行修改,视图不在的情况下不可创建视图

 注意:
        

有下列内容之一,视图不能做DML操作:

– select子句中包含distinct

– select子句中包含组函数

– select语句中包含group by子句

– select语句中包含order by子句

– select语句中包含union 、union all等集合运算符

– where子句中包含相关子查询

– from子句中包含多个表

– 如果视图中有计算列,则不能更新

– 如果基表中有某个具有非空约束的列未出现在视图定义中,则不能做insert操作

  • alter 语句修改视图
  • 视图更改
  • 查看视图
  • 创建多表视图
  • 创建单表视图
  • [WITH [CASCADED | LOCAL] CHECK OPTION]:表示视图在更新时保证在视图的权限范围之内
  • or replace:表示在创建视图时候会替换已有视图
  • select_statement:表示select语句
  • 创建视图

6.5、索引分类

2021年12月24日

14:57

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。0.5s   0.00001s

提取句子主干,就可以得到索引的本质:索引是数据结构。

在一个表中,主键索引只能有一个,唯一索引可以多个

  • 主键索引(primary key)
    • 唯一的标识、主键不可重复,只能有一个列作为主键
  • 唯一索引(unique key)
    • 避免重复的列出现,唯一索引可以重复,多个列都可以标识为 唯一索引
  • 常规索引(key/index)
    • 默认的,index、key关键字来设置
  • 全文索引(fulltext)
    • 在特定的数据库引擎下才有,MylSAMA
    • 快速定位数据

基础语法

​​​​​​​​​​​​​​6.6、索引原则

  • 索引不是越多越好
  • 不要对进程变动数据加索引
  • 小数据量的表不需要加索引
  • 索引一般加在常用查询的字段上!

索引的数据结构

Hash 类型的索引

Btree:InnoDB 的默认数据结构~

阅读:http://blog.codinglabs.org/articies/theory-of-mysql-index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值