mysql事务和索引

前言:这次要讲的是mysql的事务和索引。在进行实验之前我们得先对mysql的事务及索引有一定的了解。

一.mysql数据库特性

1.原子性:事务是一个完整的操作,数据必须处于一致的状态,事务中的操作,要么全部成功,要么全部失败,此特性就是原子性;
一致性:当事务执行完毕后,数据必须处于一致状态,在开始事务时数据保持一致状态,执行事务的过程中事务可以出现不一致的情况,事务完毕后,数据必须保证一致状态;
隔离性:多个事务之间互不依靠,互补影响,相对独立;
持久性:事务处理完毕后,在系统中发生的变化是永久性的,会永久的保留在数据库中;

2.管理事务的三个命令:
begin:开始事务,后边有多条数据库操作语句开始执行;
commit:开始提交一个事务,对应前边的begin操作,将事务处理的结果保存到数据文件中;
rollback:开始回滚一个事务,在begin和commit之间,将事务中的全部语句撤回,恢复到执行begin之前的数据状态;

3.数据库索引分类

普通索引:最基本的索引,无唯一性之类的限制;
唯一性索引:索引列中的所有值只能出现一次,如身份证号码列;
主键索引:是一种唯一性夺银,在一个表中创建主键后,则自动创建主键索引;
单列索引和多列索引:可以为单列或者多列,列中可能有重复的值。

大概了解了事务与索引的特性之后,我们就可以来做实验了

二.实操

1.mysql索引视图

先登录mysql

mysql事务和索引

在索引之前我们先创建一个数据库

mysql事务和索引mysql事务和索引

进数据库(使用它use)

mysql事务和索引

建立包含如下信息的一个表,具体操作及释义可见我上一篇博客,mysql基础操作

mysql事务和索引

然后我们向里面写数据(由于id是自动增长的数值,所以我们定义后面的就行)

mysql事务和索引

可以用desc查看表设置

mysql事务和索引

表中,id那行,auto_increment的意思就是自动增长的数值。

然后create index是创建索引的固定搭配,index_age是针对年龄的索引,on info(age)是针对与表的age列进行的索引。我们这是主键索引

mysql事务和索引

我们可以查询下索引情况

mysql事务和索引

然后删除如下

mysql事务和索引

查询发现索引么得了

mysql事务和索引

还有下面这种索引,唯一索引

mysql事务和索引mysql事务和索引

还是一样的删除并查看

mysql事务和索引

或者下面这种方式也可以

mysql事务和索引

还有一种索引方式是在我们建立表的时候就建立索引

mysql事务和索引mysql事务和索引
所以,我们一共有三种方式索引

1:创建表 直接定义

2:create index 索引名称 on 表名(列名1,列名2);

3:alter table 表名 add index 索引名称 (列名);

我们插入如下的数据

mysql事务和索引mysql事务和索引

再建立一个hob表

mysql事务和索引

查询

mysql事务和索引

给hob插入数据

mysql事务和索引

那现在我们如何将这两个表的信息串联在一起

先将前一个表数据稍作修改,以便后面的操作

mysql事务和索引

inner关联,进行下面操作,将两个表数据关联起来

mysql事务和索引

如果我只想显示名字对应的兴趣爱好

mysql事务和索引

我们还可以简写这些

mysql事务和索引

每一次都这么查询肯定很麻烦,所以我们可以创建视图

mysql事务和索引mysql事务和索引

数据其实不在这个表中,视图相当于一个映射镜像,就是那种水中月亮的意思。

全文索引是针对于长篇幅的索引

我们来对address建立一个全文索引

mysql事务和索引mysql事务和索引

还有种叫组合索引

mysql事务和索引mysql事务和索引

以上就为比较常见的一些索引。

2.mysql事务

我们先对表格插入一些数据

mysql事务和索引mysql事务和索引

启用事务

mysql事务和索引

再加一个数据

mysql事务和索引

我们给其打一个节点,相当于存档

mysql事务和索引

我们再来插入一个数据

mysql事务和索引

再插入节点

mysql事务和索引

继续插入

mysql事务和索引

查看会有这么多数据

mysql事务和索引

但是通过另一个终端会发现并没有那么多数据,只是原本数据

mysql事务和索引

但是我们刚刚设置了节点,我们可以回滚数据到节点b

mysql事务和索引mysql事务和索引

回滚到其他节点如下

mysql事务和索引

回滚到最初阶段

mysql事务和索引

如果已经回滚到之前阶段了,就无法再回滚回去。就比如现在已经回滚到最初阶段了,就无法回滚到b节点了(to b 土逼)

mysql事务和索引

那如何提交我们插入的数据,使其他终端也能看到数据呢?

先开启事务

mysql事务和索引mysql事务和索引

现在另一台终端还是看不到我们插入的田鸡数据的,我们输入提交命令

mysql事务和索引

发现数据可以看到了

mysql事务和索引

还有一种事务的方式,关闭自动提交

mysql事务和索引

我们修改一下田鸡地址南京为北京

mysql事务和索引

本机的地址会改,但是另一台终端查看不会改地址

本机

mysql事务和索引

另一台终端

mysql事务和索引

开启自动提交功能

mysql事务和索引

在查看另一台终端会发现成功查看到数据了,并且会将之前没有提交的一并提交上去

mysql事务和索引

终端

[外链图片转存中…(img-cPAjvdvz-1581588566091)]

开启自动提交功能

mysql事务和索引

在查看另一台终端会发现成功查看到数据了,并且会将之前没有提交的一并提交上去

[外链图片转存中…(img-OujYZ2Go-1581588566092)]

小结:这次实验主要是讲的索引和事务的一些操作步骤,就是如何处理数据的一些问题。这些东西是熟能生巧的,多操作练习就会好很多。对于这次实验我感觉就回滚那老师讲的存档太形象了,就和老滚存档一样,滚啊滚啊,滚着滚着,实验就做完了

相关文章: