四十七、mysql数据库6:(重点)视图、事务、索引

版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:https://blog.csdn.net/xk1761299425 https://blog.csdn.net/xk1761299425/article/details/82054148

一、视图

1、创建视图,建议以v_开头查询所有学生信息

2、查看视图:查看表会将所有的视图也列出来

3、使用:视图的用途就是查询

4、删除视图

二、(重点)事务

1、事务(Transaction)是并发控制的基本单位。

所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一

个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。事务是数据库维护

扫描二维码关注公众号,回复: 3193348 查看本文章

数据一致性的单位,在每个事务结束时,都能保持数据一致性。

2、事务四大特性(简称ACID)

  1)原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。

  2)一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。

  3)隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。

  4)持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。

3、事务使用注意点

要求:表的引擎类型必须是innodb类型才可以使用事务,这是mysql表的默认引擎。(windows下操作默认的表都是myIsam引

擎,需修改成innodb)

①先查看一下表的结构:show  create  table 表名 \G;

② 修改表的引擎:alter  table 表名 engine=Innodb;

Windows连接虚拟机的数据库的都是默认innodb模式的,不用改

4、修改数据的命令会触发事务,包括insert、update、delete

注意表引擎要是Innodb类型的,使用alter  table 表名 engine=Innodb; 修改

5、开启事务:begin

开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中,开启事务以后所有的操作都不要立即反应到数据表上。

插入数据,可以看到现在在开启事务的这个连接当中,我们在当前的连接中,是可以看到这个更新的,

那我们可以再开一个连接,则不会看到,因为还没提交数据

再开启一个窗口:打开数据库:我们发现就不存在了:

6、提交事务commit

将缓存中的数据变更维护到物理表中现在我们在开启事务的这个连接当中,进行commit;

优点:可以写完了,一起提交数据。

这样就可以实现,在没有开启事务的那个连接当中,也可以看到数据信息了:

注意:提交结束事务了

一旦你提交以后,以后所有的操作都会立即影响源数据库了,也就是相当于结束此次事务了。

如果想不被影响的话,需要再开启事务。

7、回滚事务:rollback 放弃缓存中变更的数据,回到开启begin之前的状态

使用rollback 后,数据返回到开启begin之前的状态

我们发现数据消息就没有了。但是,当我们再插入数据信息的时候,数据表的id信息,不在是20了,因为20已经用了:

8、实际在写代码的时候如下:

三、索引(可以说数据库的优化之一

当数据库中数据量很大时,查找数据会变得很慢。优化方案:索引。

1、创建索引:

2、查看索引:

3、删除索引:

注意:

当数据表中创建主键和外键的时候,就会自动的创建索引。

建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。

对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的where字句单独建立索引了,

对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。

建立索引会占用磁盘空间。

 

 

猜你喜欢

转载自blog.csdn.net/xk1761299425/article/details/82054148