在上一节课,我们讲解了 mexico 的选取语句的用法,这节课我们介绍修改语 update。 假设我现在要把这一个电脑修改成我们网站里面的电脑软件网络办公,那我们要怎么办?这里有两种办法,一种应用这里的编辑功能, 另外一种使用 c 口语句。作为我们这个专业的学生,一定要掌握 c 口语句的修改方法。下面我们先用编辑方法, 首先选中这一行,这里有一个勾单机编辑,在这里可以修改,例如我再加一个电脑 执行,你看到他的数据就是电脑电脑在实际的应用过程当中,通常都是在网页里面进行修改。 什么意思?你逛淘宝的时候要修改自己的个人信息,你在论坛里面发一篇文章,要修改文章,这个时候作为专业人士是不可能通过刚才的方式去对他进行修改的, 我们只能通过 c 口语句去修改它的字,所以刚才的这种编辑方法只适合于你最开始学习的时候。 作为我们互联网专业的学生,要掌握第二种方法, update, 修改安机 update 它这里有提示修改哪一个表,我们叫 electric 表更新, update 更新就是修改的意思, 由于是要修改这一个电脑电脑,所以我们在这里就把 id 等于父亲, id 等于全删掉,只保留名字等于什么,这个深度等于什么?我们也把它删掉, 修改名字等于什么嘞?要等于我们这个网站里面的电脑软件网络办公。 修改哪一条?大家记住,这里一定要带条件修改哪一条数据 是哪一条数据呢?是 id 等于二的这一条数据, id 等于二的这一条数据,所以一定要带条件,并且这个条件是组件。 为什么?如果你修改深度唯一的不是主见,不是唯一的深度,三个都唯一,你修改深度唯一的这三条不就修改了? 由于是要修改电脑电脑,所以我们要带一个唯一的标识,也就是组建,这也就是组建的作用, 那一定是唯一的,所以你只能修改到这一条,你也可以带深度,只是不符合这个场景,不符合我们修 改电脑、电脑这一行数据的场景。接下来就是 id 等于二,这一条 id 等于二,我要把它修改成电脑软件网络办公。 修改哪一个表设置,这是关键字,一定要带设置。自断名,自断名,什么叫自断名? 就是在结构里面的名字,就是自断名,这个自断名要等于多少的呢?要 id 这个自断等于二, 所以条件 where id 等于二,这是对他的失忆。接下来我单机执行显示赢下了一行,表示成功了,我们去看一看, 已经改成电脑软件网络办公了,这就是修改语句的用法,下节课我们介绍删除语句,谢谢大家的观看。
粉丝2325获赞2.1万

挑战,用三十条视频把你打造成专业网络安全实操达人!警告!本视频共计三十四分钟,原文超六千字,详 细讲解了网络安全数据库进阶 mysql, 从核心优化、高级 cwow 注入、提权渗透等漏洞原理,到攻防实操的全过程。无论你是网络安全从业者,想深挖 mysql 安全底层架构, 还是想系统搭建数据库安全纵深防御体系,夯实高阶攻防实战能力,都可以通过这七加长版教程一次性搞定。学习资源包已经备好,无偿分享,有需要的可以留言七七七,下面正式开始。 大家好,那么本节课呢,我们来继续学习马斯克的一些查询的一些语句啊,那么马斯克里面比较重要的就是咱们这些查询,他有各种各样的一些查询方式,那么本节课呢,我们把一些运道的一些命令,我们都给大家做一个整合以及讲解。好, 我们先从第一个开始看范围查询,白头问这个是他是表示在一个连续范围内进行查询,然后还有一个就是 in 啊, in 什么呢?就是表示在一个非连续的范围内进行一个查询。好,那么下面呢,我们来简单创建表,然后来做一个这个演示。 好,那么首先呢,我们需要先进到咱们的一个这个数据库里面, my sql 杠 u root 杠 p, 回车,输入密码 回车啊,先进到咱们的一个数据库里面,那么我们在上节课的话,我们先啊胎爆一下啊,稍这个 bysis 啊,先查看一下数据库,上节课呢,我们创建了一个呆猫 project, 对 吧,我们这节课我们就 use 了这个呆猫啊 d m o 啊,呆猫 project 里面,我们在这个里面来进行一个简单的一个操作,那么在这个里面呢,我们先设一下这个 t i p l e s 啊 table 写一下,那么里面有一个 table one 的 一个表,我们再给它创建一个表,那么也用来做我们的一个这个查询的一个引啊引链,那么 create table, 然后 s t u d n t 啊 student, 好, 那么啊里面的话,这个里面我们给他简单写几个字段就可以了,比如说 name v r c h r o 啊,二十 name, 然后 sex, vr, c, h r 我 说性别的话也给他给五个字就可以了。然后下面的话年纪,把这个年纪的话最好是给他给成这个 int 的 啊,因为 int 的 话我们后续可以方便咱们来进行一个这个操作,对吧?来 啊,这个 sex age 类型,然后下面的话呢,就是他的一个爱好, love vr c h r 好,五十啊,好,那么就这么给大家简单写一下,写完成之后啊括号,然后这个 我们把默认给他写下 pdf 啊, e f a u l t 啊, pdf c h l s e t 等于这个 u t f 八分号结尾图车,好,我们先把这个表先给他创建好,创建好了之后,那么下面我们来进行一个这个数据的插入, 音色音 two 啊,音色音 two, 哎,我们完全可以使用我们刚刚那张表,对吧?我们可以使用我们的一个这个 type one, 刚刚我们上半节课在这个 type one 这张表里面,我们已经把该插入的数据呢都给他做了一个这个插入,那么我们后续在写的时候呢,其实可以完全把这个 啊刚刚的这些数据给它做一个这个应用啊,因为我们再写一次可能就有点慢了,那么这个地方我们先把这个表给它删掉吧。 d l o p 啊 job, 咱们的一个这个 t a l e 啊台包,这个 s t u d n t 啊 student 好 删掉,然后来我们查询一下咱们的一个这个台包 one, 据我们上节课的这个表啊,我们也可以给它再多插入一些这个字段啊,比如说这个 s 啊,我们先 select 个新号, f o m f o m 咱们的一个这个 t a b l e 杠这个 o e 啊, 好,那么里面的这几个字段我们也得注意一下啊,我们也得注意一下,为什么呢?因为在上节课的时候啊,咱们将一个这个 h, 对 吧?因为这个 h 杠呢,我们可以可能会用来进行一个查询的一个操作, 但是这个 age, 我 们在上节课的时候,我们把它改了一下,对吧?啊?我们把它改了一下,改成什么呢?我们把它改成了一个这个 in, 改成一个 what 类型,对吧? 那么下面干什么呢?我们重新需要给它做一个更改,我们先来 d s c 一下咱们的这个 t a b l e 杠这个 o n e 吧。啊 one, 走, 那么我们来看,对吧?里面的话,这个 age 年级,对吧?给它改成了 word, 那 么下面干嘛呢?我们需要把这个 age 给它重新给它做一个更改啊,改成什么呢?把它改成这个 int 类型啊,把它改成这个 int 的 一个这个类型。 好,那么下面的话,我们直接 let l t e r let, 然后 t a b l e tab o n e, 对 吧? tab o one, 然后它的一个 mod 范 m o d i f one 啊,默契范,咱们的一个这个字段的话是 a, 对 吧?修改成 excel 类型,走。啊,好,那么下面的话 再来进行一个查询,好,那么现在,对吧?咱们这个 a 他 就已经成功变成了一个这个 excel 类型,那么好,接下来我们就可以对他进行一些这个操作了。啊,好,那么下面的话,我们来进行一个这个处理,我们把这个数据给他来展示一下。啊,好, 总共就这么多,对吧?也不算是特别特别多吧?啊,也不算特别特别多,好,那么一二三四,对吧?我们先来进行一个这个范围查询,根据什么呢?我们根据 id 啊,根 据 id 这个范围,或者根据年龄这个范围来进行一个这个查询,对吧?我们根据年龄来查询吧。 s, e, l, e, c, t select 星号,查询它所有数据,然后 f, l, m, 然后呢?咱们的一个这个表明 t a, b l e 杠,这个 one, 对 吧? one 一 啊,然后后面的话跟条件,咱们来吃一二一, where where? 干什么呢?咱们的一个年纪,年纪是这个 age, 对 吧? age 干什么呢? age, 比如说它是大于等于这个十八啊,然后 and 这个 age 它小与 啊小雨等于这个二十八啊,好,这么写一下,写完之后来走,对吧?可以发现我们当前这个范围之内的年纪呢,我们就可以给它查询出来,对吧?除了用这种方式之外,我们也可以使我们刚刚所说的这个 bit 用这种方式来写,也可以,对吧? where age age 完了之后来 b e t 啊, b e t, 然后 w e n, 然后写什么呢?写一个这个,比如说就是写一个十八,然后 and 十八 and 的 这个二十。啊,我们这么写下,写完之后来搜,对吧?两个效果呢?完全是一模一样,对吧?它就一个范围查询十八范围到二十 范围之间的一些值,对吧?这个值呢,它也是一样可以取得到的啊,那么这个呢,就是查询我们这个范围之内,对吧?那么如果我不想查询这个范围呢?就说这个范围的取掉,其他的我都要,对吧?怎么办呢?我们继续把这个命令给它写上,写完之后,对吧?我们什么呢? will 前面加一个 not, 然后空格, 把这个 a 值给它,把后面这个条件用括号给它包裹起来啊? will not 然后 h 干嘛呢?比他这个十八,然后按的这个二十,对吧?把它给包裹起来,包裹起来之后,比如说干嘛呢?我们还想再加一个条件加上呢,我们只想查男生,对吧?其实也就这个,对吧? 有两个是女的,对吧?啊,我们只想查女生或者男生,怎么呢?我们可以按的什么呢?比如说这个 six, 它等于这个 女,对吧? sex, 他 等于这个女走,对吧?因为这两个他都是女的啊,我们早知道一个男的一个女的给他添加去了。 这个大家课后也可以做一个简单的一个这个练习来这么写也可以啊,这个是一个范围查询,对吧?那么如果我只想查询 id 为一和三,或者 id 为二和四的, 这个应该怎么写?我们就需要用到这个 in 了来也是这样。 select, 我 们先把这一行数据先给他写上,对吧? select 星号, 然后咱们的一个这个胎包忘写上,然后后面 w 是 一 r 一, 对吧?条件一定要写上,条件什么呢?写 id 然后干嘛呢? e 什么呢? e 一 对吧?比如说一三啊,我们只想查询 id 为一和三的,对吧?或者 id 为二和四的来遭,对吧? id 为一和三的单独查询,对吧?或者 id 为一和三的单独查询,对吧?或者 id 为一和三的呢?写一个 not in, 对吧?不在这个里面吗?对吧?那么查的结果呢?就是二和四啊,这个就咱们的一个这个范围的一个这个查询。 好,除了范围查询之外,那么下面还有一个就是查询空,对吧?空值的一个判断,比如说某个字段为空的数据,我们都要,对吧?那比如说现在干嘛呢?我们的这个电话号码他们之间不是都是空的吗?对吧? 这几个电话号码的数据,对吧?都是一个这个空值,对吧?那么下面干嘛呢?我们需要往这个就是, 比如说啊,我们现在想要查询这几个,这个控制啊,那么都有啊,都有的话,早知道我们给他弄几个了啊,那么我们给他更新更新一条数据吧,更新的命令好像上节课漏掉了,对吧?我们给他更新一条数据,比如说给张三和王五给他增加一个电话号码,对吧? up 啊, up a t, 对 吧? update, 然后表明咱们的 t a, b, l, e table 杠这个 one, 对 吧?然后后面的话 seat 字断名,对吧?比如说干嘛呢?给它添加一个这个, 嗯,添加一个值啊,添加一个值,添加个这个电话号码,电话号码是 p h o n e, 对 吧?等于这个幺零零八六啊,幺零零八六,然后给谁添加呢? w 是 一二一喂,然后 id 等于这个 一,对吧? id 等于一,添加一个电话号码,然后再给 id 等于三啊,也添加一个电话号码,比如说是,呃,一万,一万,对吧?好,走,添加完成之后,我们 s e l e c t 磁来个信号 follow 么?咱们一个这个开包 one 来走,对吧?现在我们的这个张三和王五,对吧?我们已经给他增加了两条字段, 那么增加完之后下面干嘛呢?我们就要进行一个这个空值的一个这个查询,单独看一下哪个是空的,哪个不是空的,对吧?那么我们先来查询这个空的怎么办呢?很简单, s d l e c t 我 们只要把这个命令给他写上,对吧?十二个星号 f r m 然后咱们的 tab, 这是前面的,这个必须要写后面跟条件就可以。 where 什么呢? where? 比如说我们查这个 p h o n e, 对 吧?查这个分杠的 is n u l 是 空值遭,对吧?走完之后可以发现 单独,对吧?只要这个电话后面有空值的这个结果,我们都可以给它进行一个查询,对吧?如果不想查询空值呢?我们就说 is not not, 对 吧?取反就可以了啊, 这个呢,就是咱们空值的一个这个排序啊查询,对吧?好,那么除了空值之外,下面还有个排序啊,一个声序啊, a s c 一个降序 d e s c, 对 吧?好,我们也是要来简单写一下怎么对我们当前的这些值进行一个声序 和降序的一个查询,那么也是要 select 心花 from, 我 们先把这个先给它写上,写完之后,那么呢,后面的话,我们要给他排序的,怎么排到 o 的 半啊? o r d e r, 对 吧? o 的 by, 根据什么呢?根据 a 指来查询,对吧?比如说我们先写一个这个声序, a s c, 对 吧?声序是 a s c, 对 吧?我们这么给大家简单的写一下啊,写完成之后,我们在后面其实也可以再给他加一个这个条件啊,比如说干嘛呢?我们如果说年龄一样,对吧?我们现在是根据年龄排序,如果年龄一样的话,我们后面再没有个其他东西了,对吧?啊? 再没有个其他秘密了,我们来看一下课间当中,对吧?我们加了一个条件,就是什么呢?如果年龄相同,对吧?我们按照身高也给你从大到小,对吧?就是 这样的一个排序啊,但是我们现在这个表里面可能字段不是很多,我们就简单这么写下来,走,对吧?走完之后,对吧?年龄就是从小到大,对吧?声序的一个排法,如果是降序的话,就换一下,对吧?把 a s c 给它换成这个 d e s d e c, 然后燥,对吧?他就是一个降序的一个这个排列方法。好啊,那么这个呢?是咱们的一个这个排序啊,好,除了排序之外,那么后面呢?还有一种什么呢?就是咱们的一个这个分页查询,我们来看一下 啊,分页查询, limit start 和这个 count, 对 吧?这它的写法啊, limit start, count 查询前几行,对吧?前几行的数据,那么它是从什么地方开始,什么地方结束,对吧?这是它的一个这个写法。好,我们也是要来简单的给大家写一下, select 星号 from 说让我们咱们一个这个表明,然后后面告诉我们呢,写条件, w 一 啊一 where, 对 吧? where 什么呢? where? 比如说我们只想要找这个男生啊, s x 等于这个男,对吧?只想找这个男生,对吧?那么从哪开始呢?我们写个 limit, l n m n t 零就好,三吧啊?从零行到三行,对吧?零到三就在这个范围之内,我们只找男生的数据,对吧?只找这个男生的一个数据,对吧?这就是他的一个这个分界的一个查询啊,前面这个零就代表他的开始值啊, 后面这个呢?是他的结束值啊,那个这个地方的话是咱们的一个这个条数啊,他的一个锁影值,对吧?零就是他的一个锁影啊,锁影的话就是从零开始嘛,对吧?第一条数据他的下标就是零, 好,那么这个呢?是咱们一个厘米条,除了这个之外,那么下面就是咱们一个这个聚合查询啊,这种查询的方式,我们可以通过这些求和啊,求平均值啊,最大的一个函数来进行一个值的一个这个查询, 那么下面我们来演示,对吧?也是要,那么我们先通过这个 count, 对 吧?第一个 count 就是 求指定列它的总行数,对吧?看一下它有多少行,对吧?看一下某一个这个字段它总共有多少个行? a, c, l, e, c, t 括号 i e 来查询 i e 总共有,好,对吧?然后 f o l 咱们的这个 t a, b, l, e tab 杠这个 o e, 对 吧?来 走啊,走完之后,对吧?总共发现有四行,对吧?就 id 啊,单独 id 这一列他有值的,总共有这么四列,对吧?好,或者干嘛呢?我们也可以查看他的总行数,对吧?就是把这个 id 干嘛呢?换成他的一个这个新号查询全部的,对吧?全部干嘛呢?就是总共我们这个数据表里面有四行数据,对吧? 好,除了这个之外,我们也可以查询一些最大值或者最小值,对吧?比如说我们查询年龄的最大值, s e l e c t, 对 吧? select 干嘛呢?最大值 mx 对 吧? max 啊,根据什么呢?根据这个, 根据这个 age 来进行查询,对吧? f o m from 咱们的一个这个 t a b l e 杠,这个 o e 查询什么呢?查询年龄的一个最大值,对吧?这是单独查询,对吧?二十三,那么如果想要查询女生呢,对吧?咱们来吃一啊一嘛加条件对吧?为啊 sex 等于这个女就可以了啊,女, 这么一写,对吧?中,对吧?最大女生的年龄是二十三,那么男生呢?男生的年龄是十九,对吧?来看一下,对吧?女生二十三,对吧?男生最大年龄是刚好是十九岁啊, 这个就是根据他的一个条件啊,来进行一个查询,后续啊他的那些用法呢都是一模一样的,我呢就简单给大家演示这么两个就可以了。 好,那么这个说完成之后,那么下面啊,就到咱们的一个这个啊,下面来继续往下面走,分组查询,对吧? 分组查询啊,查询书名一致的书本价格总和,什么意思呢?就是这个地方我用的,我在课间当中呢,我是用的一个这个书籍,对吧?好,那么下面我们也是要,对吧,来重新给它创建一个这个数据库啊, 出双双机数据表啊, c r e a t 可可 tab 啊,可可 tab, 然后表名的话就叫这个 book book date 吧啊 b o k 到这个待特啊,包括待特。好,那么里面的话给他给两个这个字段啊,比如说这个呃, id 啊, id 的 话也可以给,也可以不用给啊,可以给,也可以不用给,那么这个 id 的 话,咱们最好是 能给的话啊,咱们尽量就把这个 id 给他给上,因为后续可能写的时候可能会有问题,对吧?来 id 啊,然后应特啊, id int 类型,然后给他给个增长, a u t l auto 啊 i n c r e m e n t 对 吧? auto 啊 auto increment 然后下面的话说明 be ok book name we are c h l 对 吧? what? 说明给长一点啊,给个五十吧啊,好, what name? 然后出的价格, 书籍的价格 int 啊,给个 int 类型好,那么这两个给完之后,那么下面的话,逐渐的啊, p a r i 啊 p 不好意思啊 primer p r i m a 啊 m a r one primer p r i m a r one primary key k y 括号,咱们一个这个 id, 对 吧?把它呢放进去,完了之后括号把咱们的 d f a u l t 啊, d f c h l r s e t 对 吧? x c 的 等于这个 u t f 八分号回车,嗯?怎么又错了 哦, k u k y 啊,不好意思啊,这个地方写成 k t 了啊,单词打错了, id 啊, a u t o 啊 auto 杠 increment n n c r e m e n t 啊 auto increment。 这个地方的话,其实我们用这个工具来写的话,很麻烦很麻烦啊,后续我会给大家, 大家可以用一个数据库的一个这个格式化的一个工具啊,比如说咱们的一个这个 novokit, 对 吧?用这个 novokit 来创建一个数据表的话,很方便很方便,或者我们也可以连接的,比如说我们用 python 或者用 php 来连接这个数据库, 连接完成之后咱们的一个下载速度啊,咱们的一个这个就是创建一个表的话,也是很方便的啊,这地方 int 又给它录一下,对吧? int int 啊 o to increment, 然后 b ok, 杠这个 name we are ctr。 我 戳 五十价格 d o o k 杠这个 p r n c, 然后它的价格的话给个 int 类型就可以了,然后下面的话把它设置为主键,对吧?啊? p r n m a r one primary k e one 括号啊, id, 对吧?写完成之后,那么后面的话 d f a u l t 啊 default 叉 set 等于这个 u t f 八啊,这么一写就行了,来,走啊,走完之后又报错了,那么这个地方的话 u t c h a r s e t 哎,这个 地方 c h a r s e x c 等于 u t f 八啊,这个地方这么写的话有点问题啊,那么我们后续的话可以这么写来,我们就暂时先 不在地方创建了,这个地方创建很麻烦,我们可以通过这个 neverkit 来进行一个这个创建,对吧?打开这个表啊,或者干嘛呢?就是这个 neverkit 这个软件呢,它是一个这个付费的一个软件啊,就是免费的版本,它用的话可能有点那个 麻烦,对吧?我们刚刚创建这个呆猫 project, 对 吧?在这啊,对吧? type 我, 对吧?我们干嘛呢?也可以给它新建一个表,对吧?那么这个地方的话,我们操作的话比较简单,或许干嘛呢?或者我们在这个地方来创建啊,哪个地方呢?我们用这个 python, 或者这个这个 php 的 这个 style, 对 吧? 用这两个软件就是无论用这个 python 连接也好,用这个 php 连接也好,它的一个这个创建都是相当简单的, 那么我呢就先以这个 python 为主来给大家做一下怎么来连接我们的一个数据库。那么这个地方用到的工具呢?是这个 python 后续的一个安装啊,以及这个 使用啊,我都会安装的一个安装包,以及这个教程呢,我都会发给大家。那么这个呢,是我们之前的 gs 代码,这个咱们不用管,咱们在最右侧啊,找见一个代码,然后在这个地方选中这个 else, 然后找到咱们的一个 my circle, 我 们在这个地方来写的话,那么那个命令会简单很多啊, user 啊, o t 对 吧? root 密码是 一二三四五六对吧?连接的数据库啊, d e m o 杠 p l 这一 c t 对 吧? demo project 的, 然后这个地方把时区给它设置一下啊, s e r v e r server 啊, t n m 一 z o n 一 等于这个 g m t 啊,把数据设置好,然后测试连接,测试完连接之后只要出现绿色的勾啊,那么就是连接成功。 哎,这个地方连接失败了, z o n 一 啊,不好意思啊, z o n 一, 这个地方是好,那么爬错的是一二三四五六 走 demo pro 这个这个表名应该没问题啊,好,那么连接成功对吧?我们直接点击 ok 就 可以了。好,那么点完 ok 之后,我们在这个里面来把这个表呢给它做一个创建对吧?好,那么这是 tab one 对 吧?来 correct c r e a t 对 吧? correct tab 啊,然后 b o k 对 吧? b o k 啊 go 代他对吧?然后里面的话我们可以随便写,比如说 id 对 吧? int, 然后 a u t o auto-print, 它都有这个提示,对吧?然后后面的话,这个 b o k b o k 杠,这个 name 沃超啊, v r c h r 沃超,给一个五十,对吧?是不是很方便?然后后面的话再给他给一个包科杠,这个价格。 p n c 啊,然后来一个 int 类型啊, int, 好, 那么这个写完之后,对吧? primary k 括号 id, 好, 那么这个写完成之后,那么最后面的话,我们只需要在这个地方 default, 对 吧? chair set, 不好意思啊, c h a r c h a r l c t chair set 等于这个 u t f 八,这么一写,分号结尾就可以了,然后我们把它选中执行啊, 好,那么执行完成之后,对吧?这张表啊,就已经创建成功了,那么刚刚我们在这个里面写的,我感觉和这个差不了太多,对吧?我也是这么写的,但是他给我们报了一个错, 那么这个报错的话,首先第一个,我们如果想要改的话,我们就必须重新把这些命令再给它打一遍,这样很麻烦啊,这样是很麻烦的,对吧?而且干嘛呢?我们有的时候也不知道他哪个地方,对吧?很严谨很严谨的。 c h a r s e t 等于 t 八,这个应该没问题。 d e f a, 哦,这个地方写错,对吧? d f a u l t 啊,写成 u a 了,对吧? default d f a u l t, 对 吧? 写错一个字母,咱们干嘛呢?就需要重新再给它进行一个编写,很麻烦很麻烦,对吧?好,那么这个地方我们把表给它创建好了,创建好表之后,对吧?那么插入数据啊, inside in set in two, 咱们的一个这个 book dat, 然后里面的字段啊, book name 和这个 book pass values, 值啊,书名啊,比如说三国演义来随便写 三国演义啊,三国演义它的价格呢?是这个一百块,对吧?好多写几个三国演义,水浒传, 水浒传,然后这是,呃,西游记啊,西游记还有一个叫什么来着?水浒传,还有一个叫那个红楼梦,对吧? 好啊,简单写一下,对吧?比如说这几个数字的定价是一百,对吧?我们给他再来一套啊,再来一套,再来一套。 ctrl, 比如说这是一百二的,对吧?这个数字价格可能又更贵一点,对吧?这一套价格更贵一点。好,我们把它选中运行, 把它先全给它插入,对吧?插入完成之后,我们在这个地方来查询一下 s e, l e, c, t c 的 信号, f o m 然后咱们的一个这个 b o o k 杠这个袋子吧,走啊,那么现在,对吧?我们的数据呢?已经全都到这个里面了, 到这个里面之后,那么下面的话,我们就进我们来进行一个这个查询,对吧?比如说干嘛呢?我们现在查询就是他的一个这个,呃, 书名啊,就是书名一致啊,书本的一个价格总和,对吧?书名一致啊,比如说有很多,对吧?书名一致,书名,书本的一个价格总和。我们来查看一下。怎么查看呢?来 s e l e, c, t, 对 吧? select, 然后后面的话跟上咱们的书名 b o o k 杠这个 name 啊,包括 name, 然后逗号,我们求和嘛,对吧? sum 求和,总共求哪个的好呢?求价格,对吧? b o o k 杠这个 p r s c。 把价格的一个总和给它写进去,然后 for everyone, 咱们这张表叫 b o k, 包括 go 带他,对吧?到这张表里面,然后后面分组, girl up by 啊, g r o u p 啊,不好意思啊, g r o u p 啊,然后 b y 对 吧? girl up by, 拜什么呢?拜这个 b o k go 这个内将这个包括内幕进行一个分组,对吧?分完组之后来走,对吧?三国演义,对吧?总共的价格是二百二,对吧?这边有个一百的,这边有个一百二的,对吧?加起来刚好是二百二,对吧?这个就是咱们的把书名一样的书,它的价格给它加在一起,这个就是咱们的一个分组的一个这个操作 啊,好,除了这个戈尔阿克拜之外,还有一个叫戈尔阿克康凯特,这个方法是干嘛的?我们来看 这个方法,对吧?他是统计每个分组指定字段的一个信息集合啊,比如说这个地方,我们来看,对吧?写了这么一个命令, 这个命令干嘛呢?就是根据 six 字段进行分组查询 six 字段和分组内幕的一个信息,这个是单独查看信息的, 大家课后呢,有兴趣的可以去看一下,没兴趣的,没关系啊,不看也行啊,不看也行,对吧?下面这个重要的,对吧?统计不同性别人的平均年龄,对吧?比如说男生的平均年龄和女生的平均年龄,对吧?我们就用我们刚刚那张表来做一个这个统计,这个还是重要的,对吧? s e l e c t select 咱们比个 sex, 对 吧? 性格, a v g 平均值,对吧? a v g 括号里面的话 h 平均年龄嘛,对吧?根据性别来看它的平均年龄,然后 f o m 么?咱们的这个 t a b l e 抬包杠一,对吧? from t a b l e 啊,抬包杠这个 o, 然后 后面的话也是要 grow up by 啊 g r o u p 啊 grow up b y 对 吧?这个啊,咱们用的还是比较说的那个 grow up 这个 come k 那 个东西我们不怎么用啊,然后 six 对 吧走对吧。诶呃 h h 写错了吗? h a 之一,没问题啊,我来看一下啊我来看一下我这延长哦,没写逗号,不好意思啊 sex 逗号哎 t a t a b l e 啊,不好意思啊,错误有点多啊。 type 单词写的有点错了,这个地方找的话也不好找,对吧。这个呢,就是我们男生的平均年龄啊,女生的平均年龄,对吧,给他做这样的一个这个计算,这个呢,后期啊,用的还是比较多的 好。那么这个说完之后我们最后就来看最后的一种查询,叫这个连接查询,连接查询,就是两张表进行一个这个连接啊,把两张表连接在一起,连接在一起干么呢?我查询你的这个值 啊,比如说干么呢?查询我们来看,对吧。第一个 select 先给大家解读一下这个命令啊, select 包括列表包括列表。这是一张表里面的名字啊, 另一张表里面的名字,对吧? from 一 张表 english 就是 连接查询啊 english 就是 咱们的内连接对吧?内连接查询呢?查询这个这个应该是这是一个表明啊, 一个表明 on 另一个表明的 id 把这个命令看得有点麻烦,对吧?它的重要性就是查询两张表 id 值相同的 name 和包括 name, 这个应该是作者的一个名字,对吧啊作者的名字和这个书名就是 两张表 id 是 相同的名字和书名对吧?好,那么下面我们来随便写,我们也来给他创建一个这个表啊,再来给他创建一个表,那么把这些暂时给他先放一下,我们把这个给他来 ctrl c 啊,作者,对吧?书的作者 ctrl v 啊,比如说 我们在这给他简单写一下啊啊, id 这么写就行了,然后这个地方就直接写一个 name 啊,后面这个字,那就不需要了啊, 不需要了,我们先把这个表给它创建好,那么它的名字就不再是 bullet gun 这个袋子,而是 bullet gun 怎么做着的吧? also, a u t h o r 对 吧? also, 好, 我们把这个选中之后来走 好,那么把这张表呢,先给它创建好,对吧?创建好了之后,我们给他抄几个字段啊来,那么里面的话, ctrl c, 把这个命令给它复制一下,然后把表名给它改一下啊 d o k 啊,包括杠这个 o s, 对 吧?里面的话就一个 name, 对 吧? name。 那 么三国演义应该是 三国演义的作者是谁来着?三国演义的作者是一二三四啊,三国演义水浒传的作者是施耐庵,我记得啊, 施耐庵啊,然后红楼梦的作者是曹雪芹,对吧?三国西游记是无尘 啊,还有一个叫谁来着?世外无常。三国演义罗贯中,对啊,罗贯中,对吧?好,我们这么给他做一个插圈,对吧?每个每个都给他对应上啊,我们尽量给他对应上,然后把他呢给他做一个这个运行来走啊,走完之后把这个值先给他插入进去,然后我们到这个里面来进行一个查询,对吧?连接成这样, c l e c t 的 select。 咱们的先是 b o o k 杠这个 get, 这是第一张表,对吧?然后呢点这个 b o o k 杠这个 name 啊, b o o k 杠,这个 name, 它下面的这个啊? b o k get 它下面的包括个 name 啊。 b o o k bought 贷,就是我们书名,它里面的这个就书本的这个表,它里面的书名,对吧?啊?先查询这个书本里面的这个书名,然后 逗号,再查询我们的作者,对吧? b o o k 杠,这个 a u t h o r 作者里面的这个 name 好, 那么后面的话,我们的 from f r n 呢?咱们的 b o o k 杠,这个贷,对吧? 包科刚 text 从这张表里面进行一个查询啊,然后后面连接哪张表呢? i n n e 啊,对吧? in 的 in 的 什么? in 的 中间连接哪张表呢?连接咱们的包科杠,这个 also a u t h o 啊,对吧?连接咱们的,不好意思啊, a u t h o o 对 吧?连接咱们的这张表,连接完成之后,那么干嘛呢?我们 on 一下, on 什么呢? on 咱们的 id, 对 吧?比如说 b o o k 包科杠,这个 bet, 它里面的 id 干嘛呢?要等于咱们的 b o o k 杠 also a u t h o r 啊?包科杠 also 干嘛呢?它里面的这个 id, 对 吧?啊? id 好, 那么这么写一下,对吧?写完之后来走啊,走完之后,对吧?罗,他们两个只要 id 一 样的,它就都会对应上,对吧? 只要 id 是 一样的,他都会做这样的一个一,一对应的一个这个关系,对吧?至于咱们的一个连接查询啊,内连接啊, 那么左连接和右连接都是一样的,下面这个左连接和右连接为的一个不同,就是干什么呢?就是根据的表不一样啊,其实它里面代码写法都是一样的,我们只要学会一个就可以学会一个,另外一个就很简单了啊,好,那么也是这样,左连接 left 照影,右连接 right 照影啊, 左连接和右连接,记住它们两个顺序可能有点不一样,对吧?第一个是根据包克德特找包克 also, 那 么另外一个呢,就是根据包克 also 找这个包克德特,对吧?好,那么它们两个的里面的写法基本上都是一模一样的,来,我们给它换个单词就可以了啊,比如这里面的 id, 对 吧? 它等于它啊,包克杠这个待特和包克杠 name, 那 么这个应该是左连接,对吧?我们把这个音呢这音给它换成这个 live 这音啊 l e, f 去啊,换成这个 left 转引,那么其他地方的一个这个写法呢,就暂时先不变,然后走,对吧?走完之后它的效果也是一样的一个这个效果,右连接呢,效果也是一样的,没有什么太大的一个这个变化啊,没有它的一个变化,还有最下面一个字连接它们三个 就是除了代码的某些地方有点不一样之外啊,我们来看一下,对吧?除了代码的某个地方,对吧?这个地方有点不一样之外,其他地方基本上都是一样的一个这个写法啊,一样的一个写法, ok 啊,那么后面啊,主要咱们内连接以及这个左连接或者右连接这几个东西啊,用的可能就是稍微多一点。 好,那么后续啊,大家可以把这些语法呢都在自己的电脑上好好去敲一遍。那么我们今天的课程呢,我们就先到这,这个笔记啊,我会完完整整的发给大家。

make sql 语句中的 where 和 having 有 什么区别?这是面试高频题目,也是大家测试工作中写 sql 常用的。那 make sql 中呢?它 where 和 having, 它都是筛 选条件,但核心区别是筛选时机和作用对象是不同的啊,一眼就能分清楚。那 where 呢?它是在分组 group by 之前筛选原始的数据号,它只能针对普通的一些字段,比如 id 啊, age 啊, name 啊这些做筛选。它不能用于聚合的一些函数,比如 sum halt average, 那 比如 where h 大 于二十,他先把年龄大于二十的行筛选出来,再进行后续的分组或者计算,这样效率会更高。那 have 呢?它是在分组之后筛选分组的结果,它专门用来过滤聚合函数的。计算结果必须跟 group y 去 配合使用,比如 group y different have 以 sum salary 大 于五万,那他先按部门呢去分组,算出工资总和,再筛选出总和超过五万的这些 部分。如果直接用 where 筛选原始行,再筛选出总和超过五万的这些部分。如果直接用 where 筛选分支,最后 have 以内筛选分组结果。 函数的筛选只能用 having, 普通自断筛选优先用 where, 避免低效。当然,一个查询中两者都可以使用优先使用 where 进行过滤,减少数据,再对分组进行筛选,这能显著提升查询的性能。优化总结就是 where 管分组前的原始行, having 管分组后的聚合数据,这样就能轻松使用。 ok, 你 还想学习更多的内容,欢迎评论或者找我单独交流。

你好,我是托尼老师,今天我们来分享一个关于买 sico update 语句的案例, 那么买 circle update 呢?它有一个和标准 circle 以及我们常见的其他数据库实现不一样的地方,那这个地方平时可能大家不太容易注意到,但是呢,在某些情况下呢,有可能会是一个坑,那我们来看一下具体是怎么回事。 我们首先来创建一张测试表,表 t id 是它的主键,然后有两个字段,一个是 current value, 记录了最新的值,然后 all the value, 记录了他上一次的原来的值,那我们生成了一个测试数据, 只有一条,那 id 是一,然后呢?它当前的值是一,那原来的值呢?是第一次生成的,所以它 他没有。呃,这个旧值来执行一下,那创建完成之后,这个很简单,对吧?我们来看一眼这个题中的数据,也就是当前值是一,原来的值是空的, 那这个时候假如说我们有一个操作哈,就是,嗯,要更新这个表 update 的这个, 那么更新的操作就是,首先我这个当前的值呢,我要把它进行一个更新,比如说当前的值,我要等于啊二,他涨了一次,对吧?同时呢我这个 out value 呢?就那它原来的值,它就等于我上一次的这个 current value。 好,这个我要条件,我要 id 等于一, 那么现在问题来了,当我们执行完成这条 update 之后,我们来执行一下, 那现在有个问题,就是这两个字段应该的结果是什么呢?比如说 carry the value, 它执行完成这个语句之后,这个没有问题,我们认为它应该是等于二,对吧?但是这个 old value 它等于 current value, 那么它应该的结果是什么呢?我们看到在执行这个 update 的语句之前,这个 current value 是一,对吧?那 all the value 等于 current value 一种说法,它等一对吧?如果大家认为它等一的,那就可以敲个一,那还有一种 可能,我们来看一下,查询一下这个语句, 然后我们看到 message 当中它不是一,它是二, 对吧?我们看一下, can value 等于二, out value 也等于二, 这个有一点违反了我们的常识,对吧?我们说了,在执行之前这个值是一,那么 我执行之后 carry value 十二没有问题,但是这个 old value 它不应该是原来的那个 carry red value 吗?对吧?它应该是一,但是在买 c 口当中,它也变成了二, 那么当然我们也做了一些测试哈,在其他数据库当中呢,我们也可以测 试一下,我们看到像这个 sick several 里头, current value 十二没有问题, old value 是 e, 是它上一次的这个值,对吧?当然我们也测试了其他的,像 oracle 啊, push the circle 啊, seclud 等等这种其他我们常见的睡衣库, 他们的行为也都是和这个 six seven 一样的。这个 all the value 是记录的是你上一次的值,而这个 kind value 是你当前的最新的值。但是在买 cipa 当中,我们看到它是不一样的,它这个 all the value 跟 kind value 是都变成了二,对吧? 那么按照思考标准当中来说呢?应该是二合一啊,不应该是这两个二。那买思考为什么这么做呢?他,呃,或者说他这么做的呃原理其实就是他是按照顺序来执行这个字段的,他是先把他人的 value 等于二,这个执行完,然后再执行 alt value 等于看 review, 这样就会导致看 value 和这个 alt value 都会变成了二。 那么这其实是我们和这个标准思考是不一样的,因为标准思考里头,你这一个语句在执行的时候呢,他认为你这个值的地位是一样的,你不应该是定义说 can value 先要执行, alt value 是后面执行,他们是相同时间执行的,你这个 alt value 复值的时候, 这个 code value 应该还没有更新,对吧?所以呢,这是一个不一样的地方,如果大家不小心不注意的话,有可能这个更新是 old value, 会被更新成二。 那么怎么解决这个问题呢?其实也很简单,就是我们需要注意一下,当你在 update 语句当中引用了你表中的字段,如果你想引用 之前的值,那么你需要注意的一下,就是你需要把这个写在前面, 你需要把这个 alt value 写在前面, alt value 等于 current value, 然后再对 current value 进行复制,对吧?我们可以看一下,假如说那现在是两个都是二,对吧?那么 我们去呃重新执行一下这个语句吧,或者说我们重新运行一下,把这个表删掉,然后我们再重新跑一遍,对吧?整体执行一下, 删掉这个表再来执行。我们看到,哎,如果我把这个 alt value 放在前面,那么它就变成了二合一,原理就是你执行 alt value 的时候, kind of value 它这个 还没有执行,他还是一,然后你执行完成之后,他再把这个纸设置为二,那这种行为就和其他的数据库是一样的,那么当然这个就要求我们在编写这个 sk 语句的时候需要知道这背后的原理,对吧?而像这个其他数据库或者 sk 标准当中呢,他默认就是采用这种方式, 所以呢这个是我们在买 circle 使用这个 update 语句的时候需要注意的一个小小的点。我们今天的这个案例呢,就给大家分享一个这个小的知识点,如果大家对 circle 编程感兴趣的话呢,想了解更多 circle 的知识呢,也可以关注一下我写的这本书,我们下个视频再继续聊。

演示一个 microsoft 猛灌数据的场景, 先准备一个 ysl 的 普通表,没有表,那就简单创建一个 非常简单的键表语句,逐渐自增 确认测试表是空表, 查询式临行记录。 用 ai 简单写个 c 框,插入的场景列子出实化,然后建立链接,因 search 插入拼接 value 值拼接了三万, 因 search 插入失败会直接瑞特然掉,执行成功,会打印批次号和当前批次插入的数量,记录开始时间点和结束时间点,统计运行的时间。 开始单线成灌入数据,灌入数据中, 单线成循环。三十五批次灌入数据,使用九点六秒 select 查询数据总量是一百零五万的行数,测试结果是九点六秒插入一百零五万。 再简单查询一下前一百行的数据,结果已经查出。 mysq 二的存储引擎还可以更快,敬请期待!请关注 mate 薄 db, 谢谢!

复制大表,还在傻傻地用 insert, 这叫做逻辑搬运,慢得让你怀疑人生。今天教你一招物理考背,速度直接飙升一千倍。为什么 insert 语句会慢?因为每条 sql 它要经过解析生成 on do log 编 log, 这叫做手抄书。 而我要说的是,表空间传输,是直接拷贝底层的 i、 b、 d 文件,这叫做复印机,跳过了所有的逻辑层,直接操作此盘文件,能不快吗? 数据复制分为三个档位,第一个青铜档位, create a table at slice。 这种最坑,不仅慢,还把主键和缩影都搞丢了。生成的表就是 c 或复制生产环境,大表容易锁死 王者段位表空间传输,只要此盘 i o 性能好,数据瞬间迁移到位,简直降维打击逻辑复制。关于表数据复制的方法,我整理了这张图, 生产环境经营小表用 insert 的 方式。大表建议上物理复制,物理复制的命令比较多,容易操作。我整理了一份完整的命令放在评论区了。关注我,每天帮你少走一个弯路!

说一下这个 clik 语句,它在 micro 里面的一个执行流程吧。啊,好,就史莱克语句,它首先会查询缓存,就如果缓存里面有,就直接返回, 如果没有,就继续执行,生成一个执行计划,最后就由这个存储引擎按照这个执行计划去读取数据。嗯,你 提到了这个缓存和执行计划,方向是对的,不过这个流程其实可以拆的更细一些,也更容易在面试中体现你的个系统性思维。我帮你捋一捋整个 c 的 一个执行过程呢,其实是可以清晰的划分为六个关键的阶段。第一是连接器, 很多人会忽略这一步,但它其实是在所有 circle 执行的一个起点,这个环节会验证你的个用户名密码,还要检查你对目标数据库有没有访问权限。第二,查询缓存,你刚才提到了这点很好,但要补充一个重要的一个变更,从 mc 八点零开 开始查询,缓存功能已经被彻底移除了。为什么呢?因为在高兵法写多读少的一个场景下,缓存命中率极低,而且每次写操作都要清空相关缓存,维护成本反而成了性能的瓶颈。 三、分析器,检查你的一个思考,它是否符合语法规则,比如关键字有没有拼错,括号是否匹配,表明字段是否存在等等。如果通过了检查,分析器就会生成一棵解析树,你可以理解为思考的一个语法骨架,这棵树结构后续会被优化器和执行器反复使用,是整个执行流程的一个语义基础。 四、优化器,这是性能的关键啊,它决定用哪个锁影多表,捉影顺序是否用临时表?比如先过滤小表再关联,能大幅减少中间的一个数据量。第五,执行器按优化器的一个计划调用存储引擎 提取数据,如果走锁影,就通过 b 加数定位数据页,如果是全表扫描,就顺序提取数据块。第六,返回结果。把查到的个数据分批分装为网络包发给客户端,结果极太大时还会流逝返回,避免内存溢出。如果能把整个链路串起来,尤其是强调优化器的一个决策作用, a server 与引擎 那个协助机制就能展现出更强那个底层理解力理解了吗?嗯,好。最后视频配套的面试题答案都整理在评论区了。另外,如果近期面试受阻,没有面试机会,我们也有面试突击陪跑服务,可以私我咨询。从简历优化、项目包装、技术突击、面试、突击、项目业务难点亮点梳理、模拟面试、面试复盘并向内推等。

看具体啊,咱们采购过程当中呢,什么是两阶段提交?五两 pc? 那 这个题呢,一般问的也比较频繁,我们给他两颗星吧,感觉人买错。这个题呢,都不是特别难,但我觉得就是墨迹, 太墨迹,问来问去的,其实就那点东西。那两阶段提交呢,就两 b c, 是 一种确保分布式系统数据一致性的协议和两阶段提交。在采购过程当中呢,它的流程有保两阶段呢,第一呢,一般都是咱们准备资源,那准备资源呢,就牵扯了一个概念,叫做事务协调器是吧?对,他有概念啊,先把概念解释清楚了, 这个 r p c 叫两阶段提交,是一种呢,确保咱们叫分布式系统,分布分布式系统数据重点关键词和数据一致性的协议,对吧? ok, 流程如下,那第一个呢,咱们开始准备阶段,准备阶段呢,有个核心概念,它叫事物协调器,就像裁判员一样,是吧?说这个各个位预备运动员,就各个事物嘛,预备的时候咱们准备开始跑了,那这个就事物协调器 向所有参与节点发送准备消息,开跑。那么参与呢,节点执行事务操作就锁定资源了。那锁定资源呢?比如说咱们去库存买订单,你快准备,这时不能动了,看好对不对?看好之后呢,咱们准备开跑,下面的节点 执行自我操作,并这里要锁定资源,就不能动了,资源锁定之后要向咱们授旗,要去反馈状态。哎,你看咱们那个去跑一百米比赛是吧?各就各位,那运动员干啥是不撅下屁股的准备起跑姿势呀? 那这样的话呢,前面一看啊,大家伙都准备好了,那如果说你在站着没动弹,那前面还是不能发枪的,对不对?那这就是咱们有这么一个面试过程,前面说准备开始,你这边给他反应,前面一看你准备好了,收到,咱们就开始发车开始需要事物了,所以这一定要注意,还得像呢这个竖斜的 t 返回状态,返回准备就绪,大哥,准备好了,你来吧,这准备阶段干那么两件事,发信号,收信号,返回信号,搞定了,对不对?第二呢,就是咱们开始受这道气,准备跑,那跑的话,正常的话是没问题的,对吧?那可能说呢,裁判咳嗽一下, 稍等一会,这怎么办呢?撤销呗,这帮呢锁定资源的参与事物的节点开始回滚,失败了吗?对不对?正常的话咱们开始提交事务了,所以还有两个,一个是提交正常提交或者终止,就咱们再发下一枪吧。这个意思,那如果呢,所有参与的节点 准备就绪了,但呢,其他学员会发送提交请求,会发送事务提交请求,那谁提交啊?咱们各个参与事务的节点自个提交自个的,对吧?那如果呢,咱们这里任意一个节点, 任意一个节点未就绪,就是运动员没准备好,则发送中止,就取消吧。那下把再来。 那你想一下,同学们啊,就这个两极点提交,在咱们分分系统当中,他到底是力大于弊还是弊大于利,对不对?这个东西到底在生产环境能不能用到?其实这仁者见仁智者见智的,这个东西不见得他就是特别好的东西。那如果咱们有三个节点参与事物,你想一下啊,我们延展一下,那这是咱们那个竖协调器, 对不对?那这边呢?节点 a、 节点 b, 节点 c 三个,它是一个什么样的过程啊?是不是咱们要去扣那些节点啊?对吧?我这边就是集中化管理,问你们三准备好没有?有一个没准备好都不行。那有没有种可能,我这个 a 他 就是一个坏蛋分子,我就是不想准备好,我就糟践你。 那你这个是怎么弄?那兽型要进,刚准备好取消,又取消完了,这个兽直接派去了,对不对?有没有?我说这种情况出现百分之百会有,对吧?因为咱们真实的生产环境情况复杂多样,咱们得保证每个节点都是健康的,但如果节点准备途中而屁了 又完了,对不对?就像这种集中化管理,两阶段提交,在一定程度上能解决咱们分分兽的问题,但是咱们真正生产环境去做的话,不建议使用这个东西,而是有补偿的手段。这有个概念啊,咱们稍微多说一点 业务补偿,这个是啥补偿呢?稍微麻烦点手动补偿呗,对吧?那这个其实也有成熟的方案啊,就说白了,你这边有转账吧,这边减十块,那我要去补偿的话,我是不是加回来继续通过业务手段去保证这个事物的正确性,而不是通过这种精细化的管理? 那精细化的管理呢?就我刚说了个问题,所以咱们这个东西吧,就正反两方面说,没有完全好,也没有完全坏,取决于咱们这个使用的业务场景 适不适合。那如果小来小去的这个事务周期比较短,短事务没有,长事务实际上是可以用的。那如果恰好在你事务协调器所管理的节点当中,他有一个长事务,这事务老长了, 那是不是咱们得用超时机制来保证咱们整个事务的提交啊?那如果没有超时机制,或者在超时,超时时间呢?咱们有的节点设的比较短,那可能短事务就超时了,长事务没有执行完,他可能有这种情况出现,对吧?我再说一遍刚才那个问题啊,说完呢,咱们在节点当中,如果有长事务 和短事务一块执行,有这种情况出现啊,比如说咱们这边有个事务,他需要去做磁带业务操作,或者掉低三万 a p i 接口,那 a p i 接口如果没掉着,咱们先重试机制嘛,对吧?那重试如果说还不行,我这个长事务一直在等待,那这个短事务早就超时了, 那超时的话,我要通知事务管理器,是吧?协调器大哥,取消吧,不行了,整不了了这事。那对查事务来讲,我还没执行完呢,你就给我取消了,是不是不大合理啊,对不对?所以说呢,这个问题本质上咱们要看业务场景也差不多了的吧,避免查事务,所以说莫不如呢,咱们直接去找啥呀?手动补偿去,这是最后的方案,可控性比较强, 咱们可以做任何业务逻辑去保证我事物的正常值钱,对不对?而不是局限于这个事物协调器它很多弊端,所以现在把这个技术发展一切业务为王,看这个技术用到哪块业务上。这么个逻辑啊, 这样如果跟面试官这么聊,我觉得要比单独打这两条好很多,对吧?你能说出你这个八股神当中没有的见解,这个才是真正的融贯通,并且能把这玩意熟运到用到自己的业务当中去,这就更好了嘛,是不是? ok? 这个题啊挺重要的,实际上。

哈喽,大家好,今天要跟大家分享的是白色口里边奥特贝和格虎贝的那些坑需求呢,就是需要查询用户呢,使用不同的 ip 登录以后,然后他最新访问的页面。呃,所以我就写了一个 sake, 大家可以看一下。我首先首 我首先是根据这个格控 bab 对这个用户的 ip 进行一个分组,然后呢,按照这个主键道序取十条。但是这个功能 呃,发布测试以后呢,发现他并不是我们想要的,我也不明白为什么大家来看一下, 大家可以看到我在这里的话,他显示的话,呃,这个访问时间呢,基本上是在九月份和十月份,但实际上我这个账号最近也有登录的, 咱们来查询一下啊。 首先我查询这个我的账号啊,然后取最新的十条。咱们来看一下。 咱们来对比一下。我们可以看到啊,这是同一个账号,他使用我下边的查询的时候,他的显示的是呃,最后的一个登录时间呢,是在昨天啊, 但实际上我上面这个语句呢,购物败以后啊,按照 id 到去取十条的话,他查到的并不是最新的数据,而是历史数据。那这种问题咱们怎么解决呢? 咱们要注意啊,咱们这个呃进行根部的时候呢,咱们需要取 每个 ip 的最新一条啊,咱们就需要使用到一个子弹群, 咱们看一下最后的语句啊,最后的语句 就一句就是这样子啊,咱们首先根据这个这个 ip 进行各部分组,然后取那个 id 最大的一条,然后呢,再 再通过查询这个用户行为的这个表来把这个数据给取出来,咱们看也可以看一下这个是不是对的。 咱们可以看到啊,他最新的一条已经出现了,他是在十一月五号,这些数据就是 正确的, 大家说一下这是为什么呢? 希望我能解决方案,对有同样问题的同学有所帮助啊。 好,本期的视频分享就到这里,更多精彩请关注我。