00:00
好了,那咱们接接下来就开始上课了,呃,咱们呢,在今天上午的时候啊,我们主要是讲了。两大块是吧,啊,第一块是关于约束是不是。约束这块,尤其是这个主键约束和这个外键约束。是吧?这两个是非常重要的唯一性约束和这个非公约束啊,它两个都比较简单。是不是这几个约束当中比较麻烦的是谁呢?外界约束比较麻烦,其实麻烦呀,没有多麻烦是不是,哎,就是呃,写代码稍微多一点。第二个知识点呢,咱们主要说的是咱们的一个这个叫做存储引擎啊,知道存储引擎啊是不同的存储方式,每一个存储引擎都有自己的,都有自己的特点,知道买赛龙默认的存储引擎是移动DB支持事物的。啊,这就可以了。
01:01
啊,另外呢,也可以简单了解一下的存储引擎DB,还有这个memory存储引擎各自的优点缺点。啊,各自的存储原理或者存储方式是什么样的,可以简单了解一下,那行了,上午的内容呢,我们这就不再回顾了,不再回顾了,各位啊,呃,这个内容呢,其实也没有太多,就两块东西,一块是约束,一块是呃,关于存储引擎,接下来我们来看一下我们今天的这个。呃,第三块内容啊,就是关于事物。好,我们一起来看一看事物,各位事物啊,这个事物的英语单词呢,我再来说一下啊,叫什么transaction。Transaction。那首先第一个呢,我们先聊一聊啊,什么是事物。什么是事物呢?就是这个名词。
02:02
他为啥叫做的事物呢?诶,接下来说一下啊,是这样的,就一个事物啊,是一个完整的业务逻辑单元。一个事物是一个完整的业务逻辑单元,不可再分。什么意思?银行什么呀,账户转账啊,从A账户。向B账户转账什么呀,1万。怎么实现呀?需要执行两条什么啊的语句。
03:01
是不是,哎,那两条update什么呀,就假,假如t account这张表账户表啊,Set balance等于balance余额减去多少1万是不是,我条件是谁呀?账号等于什么。A-001吧,那我更新是不是应该在更新第二个账户,让他的钱加上1万啊。啊不,这个能看懂吗?就是说一个事物啊,是一个完整的业务逻辑单元,不可再分。那比如银行账户转账,从A账户向B账户转账,转1万需要执行两条啊语句,这两条案语句怎么写呀?更新这张表,它的余额等于。余额减多少,1万吧。账户一吧,账户二它的余额干什么?加上1万吧,哎,好了,我问大家一个问题啊,以上两条DML语句是不是要求必须同时成功或者同时什么失败,不允许出现什么一条成功一条失败?
04:23
对吧,不允许这个要么同时要么同时失败。不允许出现一条成空,一条失败。因为一条成功一条失败,会导致最终的数据就不对了。那么要想,要想。保证以上的这两条语句同时成功或者是同时失败,您就需要使用什么呀,食物。理解什么意思吧?啊,就是事物是什么?事物是一个事物,是一个完整的业务逻辑单元,不可再分,要么同时成功,要么同时失败。
05:01
啊,要那这块啊,要想保证什么以上的两条DML语句同时成功或者同时失败,那么就需要使用数据库的什么事务机制啊。明白吧,啊,事务机制要想保证以上的两条店面有同时成功或者是同时失败,那么就需要使用数据库的事务机制。那明白什么是事物了吗?还是不太明白是吧?张三账户1万,李四账户是吧?张三转账给李四,必须保证张三账户减少8000,李四账户增加8000,这两项操作必须全部成功,如何保证需要什么事务?你没有事务,这个事儿你就保证不了。
06:04
啊,你没有事物这个事就保证不了啊,有了事物你就可以保证了,所以这个事物是必须要存在的。那第二点我想说的是什么呢?就是只有DML语句才支持事务啊。只有DM才支持事务。才和事物有关系。剩下的所有的。语句都不支持事物,都和事物是没有关系的,就是第二点,就是和事物相关的语句只有谁,只有DML语句。Insert delete和什么update,为什么呀?为什么?因为他们这三个语句都是和数据库表当中的数据相关的,各位,那换句话说,事物的存在是为了保证数据的,什么事物的存在是为了保证数据的完整性?
07:22
安全性。这是事物的一个作用。那和事物相关的就这几个语句,各位啊,你不要搞一个什么create语句tablet下回U对吧,你说这个跟事物有关系没有关系啊,和事物有关系的只有这个这几个语句,这三个语句D语句。和事物有关系,因为他们是用来操作我们数据的,对于我们数据进行增删改的操作。我们事物的存在目的也是为了干什么,保证数据的安全。
08:01
啊,是这样的。那接下来我再问大家一个问题,就是说。如果如果啊,如果这个所有的业务,所有的业务啊。一条DML语句就能搞定。就假设啊假设你听说啊,假设啊假设。所有的业务。都能使用一条DL语句搞定,还需要15机制吗?需要吗?不需要。不需要食。假设所有的业务都能使用一条DML语句搞定的话,那就事物就没有没有存在的意义了。
09:10
那可惜不是这样啊。现实世界当中啊,这个事啊,就比较复杂,就非常简单的一个银行账户转账,我们都需要执行两条update语句,才能把这个事给他做了。对吧?所以我们就必须得保证你这两条语句捆绑在一块儿,要么同时成功,要么同时失败,还有更复杂的事儿,如果这个事儿特别复杂,可能需要执行三个insert,两个delete,五个update,六个什么什么之类的,理解我说的意思吧,就可能我们需要把之前所做的所有事情。全部都组合在一起,OK,这个事儿算是完成了。我们中间的任何一个环节不允许失败,如果有一个环节失败了,那你必须保证所有都失败。要么失败都失败,要么成功都成功,你不能一半成功一半失败,一半成功一半失败,最后肯定会保证会会得到这个数据的一个。
10:06
安全性或者完整性肯定会受到损害。肯定会有问题的。你你想想啊,你先想想,那如果说如果说就是说我们所有的事情,再复杂的事啊,特别复杂的事,我们一条就就任何情况下,我们的任何一条DML语句就能搞定,就就一条语句就搞定了,那事物就没有存在的意义了。就是这样的。假设所有的业务都能使用一条电表语句搞定,还需要15积分,不需要。但实际情况不是这样的。通常一个事儿需要。多条DM语句。共同联合完成。就是说通常一个事,这一个事是啥意思啊,就是一个什么事。
11:08
或者你可以把它叫做业务,业务也行,业务业务啊业务那也可以的,你看你怎么去理解这个东西,好,那这块呢,咱们就是简单对事物的一个概念呢,我先给大家说一下啊,事物就一个,事物是一个,不可是一个完整的业务逻辑单元,不可再分啊,一个事物通常就是一个业务,一个事物呢,通常是多条什么DML语句共同联合完成,才能把这个事做完,我们必须保证这个多条DML语句同时成功或者是同时失败,我们为了做到这一点,我们才需要事务这种机制。啊,你要没有事物这个你就这个同时失败或者是同时成功,这个事你就做不了啊,你借助数据库的事务机制,你就可以完成这个同时成功或者同时失败。
12:03
啊,还有一点非常重要,就是说事物只和这几个语句有关系,别的语句跟事物没关系。啊,还有我们说了一条电网语句完成的话就没必要了,事物就没有必要存在了。可惜不是这样的。啊。
我来说两句