四十七、mysql数据库6:(重点)视图、事务、索引
一、视图
1、创建视图,建议以v_开头,查询所有学生信息
2、查看视图:查看表会将所有的视图也列出来
3、使用:视图的用途就是查询
4、删除视图
二、(重点)事务
1、事务(Transaction)是并发控制的基本单位。
所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一
个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。事务是数据库维护
数据一致性的单位,在每个事务结束时,都能保持数据一致性。
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字句单独建立索引了,
对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。
建立索引会占用磁盘空间。