00:00
我们这个已然呢,把我们这个MY色里边的一些重点的,呃,基础的这个知识点给说完了,昨天的话,咱们去把这个TCL里边是不是这个事物也跟说了呀,哎,那么在这呢,我写一下哈,哎,再来一个分支,比方说就叫做事物哈,呃,事物,然后咱们就用一个吧,就用一个这个主题就行了,事物哈,我把这个给删一下啊好,咱们一起来复习一下,我们首先呢,看一下事物它本身的一个含义哈,啊,那昨天我们也说到了,什么是事物呢,那么事物呢,你可以认为那么就是为了解决一件事情而编写的一条或者说一组,一组其实也就是多条吧,呃,多条是不是SQL语句啊啊,那么一条或多条SQL语句组成一个是不是执行单位啊,那么这个执行单位,我们就把它称为什么呢?事物。
01:00
那么最终呢,它能够保证一个特点,就是我们这个这个认为就叫一组吧,那这一组SQ语句要么都执行,要么都不执行啊好,这就是事物的一个含义,那么我们可以认为呢,事物呢,是数据库里边非常重要的一个特征,它用于去区分我们其他的文件系统啊,那么事物它具备哪些特点呢?这是我们第二点特点,对了,就是ACD,就是大家说的那个酸酸性对吧?啊,那ACD它分别代表的意思是A叫做什么原子性啊,原子性嘛,它就是借鉴了或者说引用了咱们原子本身这个不可分割的这样的一个特点哈,来去说的,它是想告诉我们一个事物呢,它是不可再分割的啊,不可再分割的啊这样的一个整体哈,啊,那么要么就是刚才说的,要么都成功或者。
02:00
要都执行吧,啊,要么都不执行,呃,咱们当时举了一个例子,就是那个转账对吧,比较明显啊,比较明显,其实我们在实际的开发中呢,也会有很多这样的一个现象啊,就是我们希望在做这件事情的时候,这里边涉及到的多条依据,你要么都能成功,你不能说就给我执行一半异常了,对不对,那如果说遇到这种问题怎么办,我们只能是不是通过事故的方式去解决它呀,哎,我们得想办法呀,哎,如果说他中途出现了异常,那么我们就在这个地方,是不是让他回滚呀,自己手动的去加回滚,他自己可不会回滚,明白吧?哎,如果说他没有出现异常,那OK,我再去提交,哎,这个是事物带给我们的好处啊,行,再往下C的话呢,它代表的是一致性,一致这个词的话,可能好多同学不太理解啊,咱们在咱们数据库里边会频繁的去出现这个一致这样的一个概念,它就是所谓的我们的数据是准确的,完。
03:00
整的可靠的啊,你想数据库是干什么的呢?他就是为了去存数据,方便将来的查询,对不对,你得保证存进去的数据,将来我们查出来的是不是准确的呀,啊,那如何来保证这一点啊,那这就是所谓的一致性啊,那所以说一致性呢,我们通过事物可以保证,就是一个事物呢,呃呃,怎么说呢,一个事物可以使我们的这个数据从一个,呃,从一个这个一致状态,一致状态也就是准确的状态,对吧?哎,那么我们去切换到另外一个状态,呃,另外一个状态也必须是一致的啊,另外一个已知的状态,好,那么接下来呢,就是隔离性,隔离性的话就是它是指我们一个事物呢,那不受其他事物呢干扰或者说影响,呃,是不是互相隔离开来呀?啊,就是多个事物互相隔离呀啊。
04:00
但是咱们也说了啊,你这个的话是不是得通过设置隔离级别呀?啊,你要没有设置隔离级别啊,那么我们假如说默认的隔离级别,那么有的时候还是会受干扰的,对不对啊,还是会受的啊D的话呢,我们称为持久性duable那个单词啊,哎,那是指我们一个事物一旦提交了,哎,那么则是不是永久的持久化到我们的本地了,对不对,呃,永久的呃,持久化到本地,或者说他对数据库的影响,那就是一个持久的啊那你除非是不是有其他事物对其再进行更改啊啊,这是关于它行吧?那接下来呢,我们又说到了,那么我们事物的是不是使用步骤呀?哎,这个呢,我们需要去掌握,哎,这个需要掌握啊,哎,那当然说了,你在这个使用之前需要去了解一点,了解什么呢?呃,就是我们事物,我们可以把它分为饮食事物,当然有。
05:00
的资料书上呢,也把它称为叫做自动事物,这是不是一回事啊,哎,意思是说我们没有明显的是不是开启和结束啊,哎,那么它本身就是一条事物可以自动提交对不对?哎,比如说insert update,呃,Delete啊这些语句啊,行,然后另外呢,就是我们可以称为叫做显示失误,需要我们是不是手动提交的呀?哎,具有明显的开启和结束啊好,那么我们怎么着去使用这个显示事物呢?使用显示事物好有这么几个步骤,第一点,那就是开启事物呗,那开启事物我们说了通过的是set auto commit等于零,这个比较难记,原因在于它这个没有变变颜色对吧?啊,这个大家也发现了哈,啊,所以说可能好多同学以为写错了似的哈。
06:00
啊,其实对着的啊,它就是叫auto commit啊,那么首先我们把这个每条这种DML语句的自动提交功能给取消,对不对,哎,那同时呢,开启了事物start trans section这句话怎么样,是不是可以啊,哎是不是可以省略呀,哎可以省略不写也没关系,那么第二点的话呢,呃,第二第二步的话呢,就是是不是编写我们这一组逻辑词组语句啊啊这个其实也就是我们所谓的这个是不是这一条或多条SQL语句啊,就说的它嘛,好,那你就正常编写就行了,我就省了,哎对我这道得写一个注意哈,咱们说了这个SQL语句的话,它包含这个东西吗?包含这个吗?诶怎么不说话,这我这一组S语句里边,我可不可以写create out或者job这些不可以,你写了也没用,它不会给你报错,但是没效果,明白吧,啊,我们。
07:00
这个里边注意了哈,我们这个所谓的事物中的S口语句,那么它支持的是谁?哎,就是我们的insert update date delete哈,啊其实select的话,你你对你你也可以算了,它也可以不算,你这个影响你的数据库吗?它提交和回复有什么影响,是不没什么影响啊,这就是对于你来讲,你是不是客户端查看呀,对人家数据库服务器有影响吗?没有,所以说咱们这个S狗语句,其实说白了是不是就是这三条啊,你select可以在里边写没问题,但是是不是没什么事物的这种特点的影响啊意义啊,啊行哈,然后第三啊,第三的话就是我们的结束书物结束的话,咱们说了你可以选择提交,那就是commit,你也可以根据需要选择回滚,那就是roll back哈啊没没了,就这些啊,后来咱们是不是补充了一个那个回。
08:00
滚点呀,还记得吧,回滚点,那比方说我们在这个地方哈,呃,加上一个设置回滚点啊,或者说保存点对吧?啊回滚是这么写吧,哎,那怎么设置呢?就是c point后面加上是不是一个回滚点的名称呀,回归点名啊行分号,那么我们这个就可以怎么去写呢?嗯,对,回滚回滚到啊我们的这个呃,指定的啊,指定的地方去对不对,那我们就可以roll back to后面加回滚点名,好这个是不是也认为结入事误的一种方式啊,嗯,这不就没了吗?嗯,能看懂对吧?嗯,行了,那么接下来的话,咱们就说到了关于我们并发事物容易出现的一些问题,对不对,哎,那就是,呃,首先我们要说一下,这个叫做并发。
09:00
事物的事情哈,嗯,那第一点要注意啊,我们这个并发事物,并发事物哈,呃,是如何发生的啊,应该是这样去写吧,事物的这个并发问题啊,是如何发生的啊,就跟当时咱们去介绍的说我们县城的这个安全问题是如何发生的对不对?这个里边呢,提到了几点,第一,它必须是多个事物,是不是昨天说了多个事物我们去同时哎访问或者说处理对不对?呃,应该叫操作会更合适一点对不对,同时操作同一个数据库的相同数据时啊,也就是你访问的是同一个数据库的同一个表,而且是同一行,对不对?哎,这个时候容易导致这种并发问题。第二,那并发问题都有哪些啊,常见的有桑毒。
10:00
不可重复读,还有一个是换读对吧?那丧读其实就是指一个事物读取了其他事物还没有提交的数据,我们称为读到的,那就叫做脏数据脏读对吧?那不可重复读呢?他的意思是说,你看他的名字特别形象哈,不可以重复读,因为你只要一重复读就会发现读读取的结果不一致了,是吧?哎,他这个意思哈,哎,那是说我们一个事物多次查询或者多次读取啊,结果不一样啊,结果不一样,换图是什么?换读其实跟脏读很像是吧?那也就是一个事物读取,呃,读取也叫读取了其他事物还没有提交的数据,你也可以这样去说还没有提交的数据啊,只是说他读到的是谁呢?啊,它是读到的对方,呃,读到的是其他事物,那叫插入的数据,而这个主要是针对于谁呢?这个是读到了,读到的是其他事物更新的数据,我们一般的这个称为脏读,下面这个称为什么呢?换读,也就换读是针对于插入来说的,桑读你可以认为是针对于谁来说的呀?更新来说的,他们两个很像啊,他们两个很像一个经典的案例呢,昨天跟大家去介绍的就是我有一个事物想去更新,在更新之前我们读到的数据是三条。
11:42
啊,这个你得理解一下三条,就意思是说其他事物是不是还没有去添加呢?那我我也可以认为是不是没有提交啊,哎,它是这个意思啊啊那么现在他读到是三条好好了,他就开始更新结果呢,那边要提交是不是提交他的插入啊,那边一提交插入坏事了,他一更新发现诶影响了四行数据,是不是这样的一个例子来着,哎,这不就叫做换读吗?说明白了吧,他是说这个事呢?啊好了,然后接下来第三如何解决并发问题啊那么我们说了不同的数据库管理系统,它都通过设置是不是隔离级别呀?啊那么来解决我们的并发问题,嗯,好了,那这个隔离级别有哪些?那咱们看一下吧,有哪些来着,一共四个read的,安克米提的这个称为叫做读你呃,错了,读未提交。
12:42
好,Read commit,这个叫做读已提交啊,然后是able read,这个叫做呃可重复读对不对?哎,正好是不是给那个不可重复读,反过来了,最后是一个串行话,The LA非常好,这个代表的是串行化,对了哈,那行,这是四个隔离级别,从上往下逐次它的级别增高,但是性能逐次降低,哎,你想想也是这样一个道理啊,对不对啊,那么它们都分别可以去呃解决哪些问题,咱们在这是不是可以写一下呀,丧读什么来着?Book重复读,还有一个是换读,好,然后这个是谁都没解决对吧?嗯,谁都不解决,那我们这个都是什么符符号来着,是不是逗号叉号是吧,哼,好。
13:42
是这样吧,独未提交啊,这个不应该叫差,正好是反过来是不是都能发生啊,嗯,其实我是想说能不能解决他们啊,其实我是想说这个就是说这个隔离级别能不能解决他们啊,是不能解决,我就用这个叉呀啊反正都能理解就行了,对不对,不能解决他们啊,好,然后呢,下面这个的意思就是呃,它解决了吧,解决了对不对,解决了,然后下面这个的话是没解决啊,没解决是这样吧,哎,这样可能会好一点是不是,嗯,好,然后这个的话是解决了,这个解决了吧,啊然后这个的话也解决了,后面这个的话是没解决,解决不了是吧,然后串行化的话呢,这个是呃,都解决了是吧,但是它的性能也是最低的。
14:42
因为他在去,呃一个其中一个事物在执行的期间,其他事物呢,只能等待啊,只能等待对吧?啊好,咱们再说一下,咱们mylel默认的是这个啊,默认的是它画一个红色对吧,那么Oracle里边它呢,只能支持第二个,还有一个是还有哪个来着,第四个,然后它默认的是第二个,哎,默认的是第二个哈,哎,然后画一个蓝色吧先,嗯,好找一个这个蓝色哈,嗯,是这样一个意思,行吧,好像没了是不是啊,没了哈,这是关于事物,接下来呢,我们再去说一下视图中我们需要去掌握的知识点,呃,视图的话呢,我们主要是有这些,第一呢,就是它本身具备的含义或者说特点啊,我们都活跃到这儿了,第二个的话,是不是就是我们视图的创建啊,哎,然后视。
15:42
图的修改,视图的删除,还有一个是视图的查看,对吧?啊最后的话呢,我们可以认为是使视图的一个使用啊,再加一个吧,那就是视图的和表的是不是一个对比啊,和表的对比啊,行了,这是关于我们视图里边主要有这些,首先看一下视图它的意思。
16:08
是一个虚拟表吧,哪个版本出现的对哎,我们这儿的话呢,来一个哈,哎,也就是相对来说它算是比较高级一点的特征了啊,那么是我们MYSQL5.1版本,版本是不是出现的新特性呀啊新特性好,然后呢,再说它本身呢,是一个虚拟表,也就是平时咱们说的我们查询得到的一个结果集,是不是就相当于视图啊,就这样一个意思啊,那么它是通过通过我们的真正的表动态生成的啊,生成的是这样一个意思啊,哎,那么是过表来去生成的,哎,应该这样去说,呃,是通过它的数据吧,啊,它的数据,它的数据是通过表生成的啊那么什么时候呢,它真正生成,那就是我们查询时。
17:08
啊,那我应该这样学,这样去说,它的数据来自于表,这样会更好一点,来自于表对吧,然后数据呢,它的数据来自于表,然后通过呃执行时或者说查看时动态生成,这样说会更好一点啊,更加严谨一点啊行,这是含义,然后呢,我们再去说一下它的好处,有一些好处,第一的话,相对来说是不是简化了我们的代码,简化了S狗语句,这个是不是最最明显呀,你原本我们做一道比较复杂的这个题目的话,我们要用好几层字查询,哎现在我们不用那么多了,哎,这就是简化,呃第二呢,哎,第二的话呢,就是是不是也相当于重用了呀,哎提高了是不是我们circleq的这样的一个重用性呀?啊第三咱们说呢,它堡了我们是不是机表的数据啊,呃,机表的这个数据和我们原始表,或者说和机表独立开来,是不是提高了我们的这个安全性呀。
18:09
啊,提高安全性是这样吧,哎,这是我们几点好处哈,那如何来创建它的语法是一起来说,Create好后面我们再去加will,后面再去加好,后面是不是加上我们的视图名,哎,然后再去as,后面是不是再去加我们的一个查询语句啊啊一般来讲这个查询都是比较复杂的查询简单的实际上是没有必要的啊诶这样弄啊,对吧?啊,我们是不是有必要换一个大家喜欢的颜色呀,是吧?哎,这这个绿色太亮了哈,我们整一个浅绿色吧,啊看不清啊,还是蓝色吧,嗯,行修改修改的话,咱们提供了是不是两种方式,方式一。
19:09
我们就是直接在这个基础上加了个什么create方什么replace哈,好,方式二,Will,视图名as查询语句对吧?嗯,这是方式,嗯,换一个颜色好,没问题吧,嗯,然后再看一下删除,删除的语法是job will,还可以删除多个视图一视图二逗号加点行查看DC后面有没有这个关键词来着吗?没有哈,直接视图名好,你看有的同学复习的时候就都能想的上来,有的同学就都没上想的上来是吧?Show great will后面再去加数读名啊,对吧?嗯。
20:09
这个是关于我们的查看啊,再来一个使用,使用其实无外乎就是增上改查吧啊,使用和我们表的使用基本一样啊,那么比方说插入是不是还是insult呀啊,我就这么写一下就行了,还有一个是修改up,第三删除delete,是不是还是这些,第四查看啊,叫做select,但是要注意注意哈,我们试图一般是用于查喜人的啊,而不是是不是增删改,也就是更新的呀,而不是更新的啊,所以具备以下特点的视图,那么实际上都不允许更新啊,都不允许更新啊,那哪些特点呢?哎,回想一下对比方说包含分组函数group by。
21:09
第think having,嗯,还有什么union,嗯,Union all对吧,那有有union all,那不就有union了吗?是不是啊,第二,比如说包含照应,也就是连接查询,第三常量视图,第四子查,它不是说子查询啊,哎,你这个子查询它是不是具备特点的子查询啊啊,怎么说呢?就是我们的条件中,也就是where后的此查询用到了from表,From中的表,哎,它是这样。第五,还有一个吧,对,用到了不可更新的视图本身,因为我们的视图也可以是不是来自于视图啊,嗯,好,这就是关于我们的,呃,使用时需要注。
22:09
注意的几个特点哈,哎,把这个注意呢,我们给它描一下行,再往下,那最后呢,咱们发现视图和表啊基本一样,哎,你看包括使用包,包括查看修改啊,包括创建的语法都有点像,对不对,哎,但是呢,他们还是有很多区别的,我们写到这了,试图表,那么首先说使用到的关键字啊,试图用到的是will表示table还有什么,嗯,对,是否占用内存,是否占用是不是物理空间呀?啊好,那这个视图的话,是不是基本不占用啊,或者说占用是不是较小呀?啊你写占用较小,占用较小,占用较小,因为它是只保存circle逻辑,而这个是你你要占用的是吧,因为它需要去保存实际的。
23:09
数据对吧?啊,另外那么我们视图的话呢,呃,这是关于占用内存是吧,那接下来呢,咱们再去说一下关于视图的这个使用上,使用上呢,一般用于查询,呃,当然这个表的话,你就增删改查是不是都可以呀?嗯,好,没问题吧,这是视图哈,就说到这里了。嗯,行,我们停一下,这是我们上次课的内容啊,还有unique unique是这样写default,哎,这个你要记住哈,Check primary k for k,好,一共是这么几个,来咱们一个一个来看,这个代表的非空对吧,飞空它就是指该字段的值,是不是必填项啊,哎,该字段的值呃,必填就行了,好unit呢,它代表的是唯一代表该字段的值啊,是不是不可重复呀?啊,不可重复,好default的话代表的是默认啊,代表该字段的值啊,可以不用啊,就是不用手动插入啊,不用手动插入是不是有默认值啊?哎,你你非要手动插入,实际上是不是也没事儿啊?嗯,它这个意思,Check呢,代表的是检查约束,但是咱。
24:34
MY不支持啊,MY不支持啊,MY不支持对吧?啊,那么呃,Primary可以代表的是主见,主见,那主键的话呢,咱们说了是跟唯一键非常像,该字段的值不可重复,并且非空,所以说我们经常认为主键其实就相当于unique y加not呢啊哎,那么这个效果是一样的了。
25:04
好,下面这个代表的是外键,代表该字段的值引用了,哎,是不是另外一个表呀,哎,另外的表的字段啊,它这个意思哈,哎,那么接下来我们重点来去说到的有三个,一个是主间,还有一个是唯一,对不对?哎,咱们是不是当时对比了一下呀?哎,这也是一道非常经典的面试题啊,我找同学来说一下谈判者的区别,主见和唯一的区别,什么区别来着,找同学啊。左路,好来,你来说一下。主见怎么了?一个表可以有几个主键?对了,那就是一个表只能或者说只多吧,只多有一个主键,可以有几个唯一,但可以有多个为一键,这个都试了的啊,第二点否啊,那就是主键不允许为空,而我们唯一可以为空,还有别的区别吗?从。
26:27
呃,事故原因组和他俩是不是都允许啊啊好,请坐哈,那就是我们这个相同点哈,相同点也写一下吧,这是主间和唯一,主间和唯一这是第一是不是小区别呀,好第二哎,我这用个这个一是不是不合适了,这个这个应该用个圈一是不是,嗯圈一这个应该用个圈好相同点来看一下,相同点的话呢,就是是不是都具有唯一性呀啊然后另外都支持组合啊组合键对不对啊,但是是不是都不建议用啊,但不推荐啊,不推荐因为不太稳定了就啊不太稳定行,这是关于主键和唯一要注意的事情,呃,那么接下来呢,我们再说一下外界,外界里面涉及到的东西是不是也挺多呀啊外键我们单蹦的拿出来说一下啊把这个。
27:27
斜画一下,好诶把这个取一下哈,诶诶好好,这个不好的是它,诶点一下它就老师引用了是吧?来看这个外键的话,它是这个样子的,呃,我们呢,首先第一点它是不是分主从表呀,哎,那它用于限制我们的两个表的关系,两个表的关系,哎我们其实就是指从表的字段值引用了我们主表的是不是某字段值啊啊某字段值我们可以统一下说法,从表的该字段呢,比方说我们叫做就是呃外键列,那么主表的这个该字段呢,我们可以称为引用链,可以吧,啊行,那么接下来我们再去说我们要求呢,我们的外键列知道说谁的吧?呃和我们主表的那个是不是引用列呀,嗯,应该叫被引用列是不是,哎被引用列呃要求呢,要求是不是类型是不是。
28:27
已知啊,嗯,哎,那意义是不是也必须是一样的呀,嗯,意义一样也就是都代表什么意思哈,然后另外名称无要求,这个没问题吧,好第三,那么我们主表的被引用列,被引用列啊,要求是一个KK啊他说是一个K,意思就是说主键外键等等啊,只要是个键是不是就行了,但一般的就是谁对一般就是主见啊啊逐见好再往下第四点啊第四点的话呢,咱们说到了我们在插入数据的时候,既然你两个表有关系了,那它们两个你就得关联着来,对不对?哎,我们应该是先插入主表啊,哎,然后你删除数据的时候,先删除从表啊,就是说对于数据来说是这样的,对于表结构也是这样的,你主表这个结构还没有呢。
29:27
你从表能设置外键关系吗?那肯定也不能,是不是这个意思,然后当你设置好了外键关系,注意听哈,当你设置好了外键关系,我们直接想把主表咔跟那个drop掉删除掉,是不是也不行啊,你从表还引用着它呢,你把这个表结构整个的干掉能行吗?是不是也不行啊,所以你再去插入删除或者创建或者是删除表结构的时候,都要注意它们两个的关系啊,对吧?哎,这是关于它,我跟大家再补充一点,补充一点什么呢?就是关于我删除数据的时候,实际上也可以设置一下,哎,好了,看上面看上面哈,可以设置一个集连更新和接连删除。
30:19
嗯,好了,咱们找一张表吧,呃,咱们找一个什么表呢?呃,昨天咱们用的是一个叫做我用的是这个来着吗?不是是吧,好像删了啊好,现在这个表里边是不是非常干净啊啊,假如说就用这个表吧,这个里边我们看一下有没有外键之类的哈,啊,这是已然有了是吗?已然有了我给他删掉。好,然后行了,Major表的话呢,Major表给它加上一个主间了,对吧?嗯嗯,当然用语句写也可以啊,行吧,那现在的话我们先看一下,就是先show一下我们的index from,我们的major表,看一下里边有没有索引啊,也就是有没有键啊,它这个里边还有呀,还有的话,那咱们可以再去这样去删一下,Al一下我们的table是不是major啊,怎么删来着,Drop一下,哎,Drop干啥?它就得有是吧?嗯,我这个major表里边是不是必须得有啊啊,这个就得有啥了是吧?嗯,看一下有对吧?然后呢,我们再看一下,Show一下谁呢?Index from是吧,S to in more呀,来看一下它里面有没有外键了啊,它假如说这个里面是不是还有啊,那我们可能是没保存,没事我们就直接al table SQ in爆,呃,怎么来着?
31:51
就是drop一下,我们的foreign k叫做FK_SQ four major是这样写吧,哎,然后我们去执行一下哈,嗯,这个是我看看哈,它这个里边显示还有,但是有可能这个索引有,但是它的键已经删了,我们确定一下,好,他这个我点一下保存啊啊。
32:18
好行,然后现在我们再去查看是不是没了呀,嗯,好,那没了之后来注意看哈,那么现在呢,这两个表比较干净,那也就是majorr表里边是不是只有一个主间呀,5SQ音放表里边是不是没有外键呀?哎,那现在变成这种效果了,注意看,我们先用一个我们最初传统的方式,传统的方式添加外键,好怎么去添加,我如果表已经有了,我只能是不是用table的方式添加呀,好跟着看哈,艾特一下我们的K啊FK,比方叫s to in for啊,我就写简单一点,然后major可以吧,哎,然后我们的foreign k谁呢?是不是叫做major ID references哎,我们的major表里面的ID对吧?哎,那我添加一下,这是一个比较传统的方式,是不是添加成功啊,那添加成功的话,看一下我的。
33:18
这个表里边是不是已然有了呀,哎,那么现在我想干啥,我现在要插入数据,哎,那么我这个时候呢,看一下我们原来的表哈,Select的星号from major啊,我忘了里面有没有数据了,这个里面是没有的,对吧?啊,没有数据我插入一个两个的啊in inside major,然后应该叫是不是values啊啊values然我应该其实那时候找有数据的来着,然后这的话我来一个Java,再来一个二号叫做什么H5,是不是就是这么两行呀,两行有点少,等因为等会我要删除呢,再来一个专业吧。大数据行吧?嗯,这样不就行了吗?是不是三行受影响了?好,我们再看一下我们的student等表里边有没有,哎,这个里面有没有来着呀,忘了是吧?SQ in放啊行了,我们现在看一下这个里面也没有来,我们插入一遍insert into,我们的s to for,我可以通过这种方式插入吧?哎,比方一号学员,咱们随便来几个join John,然后呢,再来一个性别女,其他的呢,他实际上是不是都可以为空啊,哎,我们来几个空一,一共有几个六个,哎,是不是就这样啊?哎,UNITION2啊,UNIT2,然后它这个里边好像有一个专业,这个专业我得加上是不是一号呀?嗯,好了,我们来去占几分2345678对吧?啊,然后行,我把。
34:59
这个呢,改一下三号四号五号六号七号八号没问题吧,然后这改一下345678是不是就完事了,然后这个呢,我随便编几个,因为我等会就是要用它这个这么写331能看到吧,啊我们插入行了,那现在我的学员信息表里面很快是不是就有了一些记录啊,那么其中呢,有一个字段的值是不是就引用了我major表里边的ID啊,哎,这个是没问题的哈,那我现在要做什么事情呢?我要做一下删除,注意我要去删除一下我们专业表的哪个编号呢?比方说呃专业表的呃三号专业三号专业,那当然假如说我要是用传统的这种方式添加外键,咱们早就说过能删吗?能删吗?现在delete from major。
36:00
Where,我们的ID等于三,我问一下大家这一句话执行能不能行,刚说完的啊,能不能行不行,因为你这是主表的记录,刚才咱们是不是说了,你删除的时候应该先删从表,再删主表,所以我现在要是这样执行,你会发现咔咔报错了吧,是不是报错了,因为是不是有外键呀,哎,这就是我们以前的方式,那这种方式的话,他给我报错,我就觉得不高兴了,是吧,那我就想着我就是想删,因为在实际的这个业务中,他有可能有这样的一个需求,对吧?那比方说在页面中我就想删除专业对不对?嗯,那你看我们可以有两种,呃,有两种选择哈,第一种选择的话呢,我们可以这样,你把三号专业这个主表的记录删除之后,是不是顺道着把学员信息表中引用该专业的这个学生信息也删了呀,这种呢,我们叫做机连删除。
37:00
是不是也可以这么干呀,这是第一种方式,第二种方式呢,我把三号专业删了,但是我学员信息表里边引用三号专业的这两条,学生呢,我不想删掉,不想删掉这个专业编号是不是就没了呀,没了我给他设置为空,这叫吉联制空,说明白了吧,所以说接下接下来呢,我就跟大家去介绍这两种方式如何实现,首先呢,我们看一下就是第一种解决方式哈,方式一叫做集联,刚才说到的叫集联删除,那么怎么实现级联删除呢?首先你也是需要是把原来的外键先删一遍呀,哎,不叫这个了,应该叫做SPU,没准对吧?嗯。哎,我重新加一遍外键,其实好,我们把这个加外键的这种方式呢粘过来,怎么着去添加级联删除的外键呢,瞪大眼睛看上面了。
38:00
好,看上面哈,那么我们怎么去添加呢?非常简单,仅仅在这一句话的最后,我们追加上一个这样的一个语句,这样的一个字句叫做on delete,叫做kiss k k k啊,Kiss k,哎,你可以认为就是集联的意思,这叫集连删除,集连删除只要在我们后面添加外键的这个词句,后面追加一个on语句就行了,那么现在呢,我们去添加该外键。是不是添加上了?好,添加上了之后呢,我们还是先看一下我们表格的数据,瞪大眼睛啊,尤其是在去测试的时候,你更应该看清楚了。现在我我的这个数据是不是还是这些没删呀,啊,我的这个专业表里边还是那三个专业没问题吧,我现在还是想删除三号专业,按说呢,从表是不是还是引用了它呀,但是这一次删除就没问题了,看到哈,我们把这个移到上面下面来吧,那我现在去执行它,诶怎么样一行受影响。
39:12
哎,好,那么它是什么效果呢?别着急,我们先看一下这个专业没了吧,说明真删了,再看一下学员信息表,三号还有没有没了,知道意思了吧?哎,所以说这就叫接联删除啊,怎么着去设置接连删除呢?就是你添加外键时是不是追加一个盎子居啊,就别用传统的方式去添加外键了,而是用这种方式,好吧,我们再来一种叫做吉联制空方式二七连智框,因为这种同学,呃这种这种情况的话,是不是有点野蛮呀?呃,直接都给我删了是吧?呃,但是也有这样的需要啊呃,那么假如说你你你比较温柔对不对,那么我们怎么着呢?就别让他接连删除了,呃,可以来一个on delete that no,哎,这这个意思应该非常清楚,对吧,设置为no,好吧,来,我们试一下。你是不是也得先把原先的外角给。
40:13
删一下,哎,执行啊这个啊,这个是添加啥了,应该是是不是动态呀?啊好,执行删除外键,那删除外键了之后,我重新添加对不对,哎,我们重新添加是不是成功了,成功了之后,那现在我们表里边的数据都有哪些呢?好是不是一号二号专业都被引用着呢?好,那我们专业表里面是不是就只有一号和二号,现在假如说我要删二号能听懂吧,哎,我要删二号,哎那么现在我一点删除它也不会报错,是不是也会显示几行受影响啊,当然这个显示的仅仅是不是你的专业表呀,嗯,好,那么我们再看学员信息表,它变成什么样子了,好,我们再去执行,诶,哎,这个弄错了,应该是找我们的学员信,我的学员信息表呢,在这儿呢,是吧,学员信息表来看一下,那对了吧。
41:13
啊啊,它这个意思啊,好吧,这就是关于我们删除时如何设置集联删除和集联指空,我们把这两句话呢给粘过来啊好放到这儿来哈,哎,那注意我们可以通过啊以下两种方式啊来去删除啊,我们主表的记录啊好,那这两种方式由你选择,当然呢,其实在实际的开发中呢,我们很少去加Y进去,相对比较麻烦,能听懂吧,也就是咱们学习基础的阶段,老师告诉你,哎,有这么一个东西,你真实的开发中我们很少用到,所以这个东西你不用去记,不用刻意的去记,你能听懂就行了,能明白吧,能听懂就行了,你要是到时候非要想用上,你是不是能找到它,把它写上就行了呀,达到这个程度,你要把握住这个度啊,不用刻意的去。
42:13
去记,你要可以的记这个就有点有点那个太太,这叫什么呢?耗时间,但是实际上没有达到自己的效果,明白吧,不用去记啊,对非里不讨好,就是这个词是吧啊行吧,那不多说了,接下来的话,咱们是不是把对应的一些重点的代码给写一下就行了呀,哎,那么就是第二点,那我们如何在创建表时是不是添加我们的约束呀?哎,那么在这我们写一下就行了哈,呃,直接create table后面我们加表明啊小括号,然后这个里边我们有就是对应的字段明字段类型后面是不是加列举约束啊,那列举约束哈,列举约束它是这样去加,这个列级约束怎么去加,我写上吧,比如说我们not no是不是这样去加呀?哎,逗号我们还可以怎么去加呢?哎,我这应该加上一个注释是不是比较好呀,哎,这个是非框,当然我还可以去加什么。
43:13
嗯,是不是主见呀,主见的话是primary k,对了哈,这个的话代表的是主见,然后是哎,唯一对了哈,哎,唯一的话我们用到的是unique哈,哎,看一下自己能不能想上来,再来一个吧,是不是默认呀,默认是default default吧,值啊,这个代表的话是默认,行,我就重点加这些,然后最后的话我再来一个外键,外键的话呢,我们一般放到表级约束这constraint后面加约束名foreign foreign k对吧?啊,后面呢,我们也是加上我们的字段名res后面加主表啊,再加我们的是不是引用列呀,嗯,啊,引用列好还是被引用列好,嗯,都行,对不对啊。
44:13
对,这个你能理解就最好,对不对,能理解的就是好的啊行吧,这个就是我们一般来讲添加约束,这样添加有几点要注意的事情,注意我们的这个列举约束啊,那么它仅仅支持谁?哎哎表级约束我这样对比一下就行了,嗯,好立级约束哈,那么它这个支持的支持类型啊,这个的话就是除了外键,嗯,好,这个是除非空和默认好,然后再去再去写是否可以写约束名字,这个呢,可不可以不可以,这个是可以,但对主见无效啊啊他这样的哈,哎,也就是主见名你起不起啊,不报错,但没效果对不对啊他这样的哈。
45:13
其他的也没什么了吧?呃,知识类型和约束名是不是就主要就这些呀?嗯,另外呢,就是要注意了,我们这个列级约束也可以在一个字段上,一个字段上是不是追加多个呀?嗯,追加多个对吧?啊,你写多个啊也可以中间用空格隔开,没有顺序要求啊,中间用空格隔开没有顺序要求啊好,也就是你列举约束在写的时候要注意,你表决约束也可以填多个,你就直接正常往下写就行了,对不对啊,往下写就行了,好,其他的还有什么吗?哎,其他的就是我们是不是也可以修改呀?呃,修改表时是不是添加或者说删除约束啊对不对?好,那我们就写一下,首先是关于对于非空可以吧,哎,我就写一起了哈,Table。
46:13
表明moify column,注意看哈,这个是不是字段名啊,哎,字段名字段类型not no,这是不是叫做添加呀?哎,这个代表的是添加飞空对吧?你要是想去删除飞空呢?对了,直接删除非框,直接我们就把notno去掉就行了,你加个no也行。第二呢,默认一样不一样一样,好我们粘过来啊。哎,如果说我要是做一个添加默认,那么我就直接在后面加上一个deat值对不对?如果删除默认后面什么都不用加对吧?第三,哎,我们想去设置一下主键,首先添加主键,哎,怎么写的out table表明A。
47:13
CDD,瑞K,我直接这么写没问题吧,后面加是不是主间列名啊,也就是字段呀,字段名完事我就写用的较多的啊删除主键out table表明job primary pay是不是就完了,好第四唯一,哎我们要添加唯一,好把这个粘过来吧,差不多哎我这直接ADD unique没了,那删除的话呢,是哎,Draw inex是不是我们的哎是不是不是字段名,是不是就是唯一约束名呀,哎或者说索引名啊啊好最后呢,就是第五比较麻烦的一个就是外键了啊转过来啊外键那么我们首先。
48:13
看一下添加外键,这应该是ADD foreign k对吧?啊然后后面呢,要加res主表啊,然后是被引用列啊好被引用列完事,那删除呢,哎,这直接我这是用了一个foreign k,后面是不是加上我们的呃,外键约束名对不对?哎,约束名好了,哎,这是我们所有的啊,当然你在这个添加主键为一和外键时,也可以给它加名字can,可以这样吧啊约树名啊,当然这个主键也没什么效果,是不是啊是不是,嗯,我我这是不是应该加中括号会好看一点,好呃,把这个粘一下哈。
49:08
哎,这个粘不过来呢。好,我还是很聪明的,是不是这样啊,然后另外我这个添加的唯一外键还有主键实际上也都可以添,用列进约束的添加的方式去添加啊,但是我没写,因为我认为这种方式是不是会更好一点呀啊行吧,这是关于添加,呃,最后的话呢,咱们是不是又讲了一个那个自生长链呀,嗯,我写到这个地方吧,第四点啊,好,自生长链,自生长链又称为标识链啊,那么就是指它插入的值是不是自动增长了,呃,它不用插入值啊啊所以特点呢,我都写到特点这儿了哈,第一就是不用我们手动插入值是不是可以自动提供,是不是序号序列值啊哎,那默认的话是从一开始的啊,默认从一开始,呃,不长也为一,不长为一但。
50:13
但是我们也可以改这个步长和起始值,是不是这样说的啊,步长也为一啊,那你是通过哪看出这个的呢?呃,咱们其实是不是有一个那个系统变量呀,系统变量里边是不是有一个叫做什么auto,嗯,Auto,什么inment是吧?什么increment,什么increment对不对?哎,是通过这个地方来看出来的哈。嗯,行,那我们如果说如果要更改起始值,起始值我们可以怎么着呢?是不是手动插入值啊啊,因为我们系统变量的话,是不是我们MYSQL中不支持啊,如果说我们要更改不长,哎,怎么怎么办,是不是sat呀,也就是更改我的这个是不是系统变量呀,哎,更改系统变量就是set这个东西对吧?哎,等于值就行啊好,今天其实就会给你们讲我们如何去更改系统变量的值,它有N多种方式,我们可以直接这么写,也可以前面加上一个圈一圈明白吧,啊我我昨天是不是这么加的呀,其实不加也没事啊好吧,这是第一个特点,第二个特点,我们一个表可以有几个自增长列呀,啊是不是。
51:39
只能或者说至多有一个是不是自增长力对吧?啊,那第三那我的自增长力知识的类型只能支持竖直型好,第四我们的自增长力啊,必须为四增长列必须为一个K,嗯,这个也是只有MYSO是这样的,你要是搁到so等等这些里边,嗯,其实不一定是K啊,就是什么都行啊,就普通的列就行啊。
52:14
好吧,然后接下来咱们说到了语法,昨天也有同学问到了,说那创建表识我们是不是可以设置自增自增长列呀,哎,设置自增长列说呀,那我修改表示能不能行呀,能行啊,那修改表时啊,也可以去设置或者说添加,这就叫对不对,增长链啊,自增长链对吧?那我能不能删除自增长链呢?啊删除自增长链能不能啊,可以啊都可以做,就跟那个约束一样,创建表时它是这样的,Create table表明,哎,小括号不是大括号。
53:00
啊,没事,没没有重新啊,你的眼一片漆黑,应该是电脑感觉一片漆黑呀,等着我怎么输不上了呢?哎,行了,网是不是不行了,我们先写完,这个是创建表,我们这的话就应该是create table表,对不对?哎,这个里边的话我们正常的去加啊,注意字段名,字段类型约束啊,你该怎么加还怎么加,你你就可以加疑问字增长的bottle inment能看到吧,我把这个画一个蓝色,好,那你修改表识的话呢,也一样啊,Out table表,但是它不能自已直接加一个,这个你只能是不是相当于修改约束尺的那样去加,对不对,那怎么写呢?是不是modify这种感觉啊,哎,Modify。
54:01
嗯,谁呢,是不是字段名呀,哎,然后字段类型当然也有可能有约束啊,是不是再加一个这个auto呀啊,它是这个意思,有点类似于是不是修改约束啊啊添加约束删除呢?对就把这个粘过来,把谁把它给去掉,能看到吧,哎,我们可以这样去干哈,哎,这个是第一点第二点啊第三点啊行吧,那咱们这个复习呢,就先到这里了啊,我把这个呢,稍微把格式改一下啊大家下课吧。
我来说两句