粉丝2.7万获赞7.8万

excel 结合 circle 轻松搞定复杂数据处理!有粉丝留言问,怎样从一份人员信息明细表中按任意条件查询出想要的数据?这期视频就来回答这个问题, 简单的条件,用一般的筛选就可以实现,这里就不赘述,重点介绍以下三种场景下的查询。第一,多个字段条件取并集,比如性别等于男性或者年龄在三十五岁以下。 第二,对查询出的结果进行计算,比如计数,求和等等。第三,在不打开工作簿的情况下,从中获取数据。这里我们依然用这个数据查询面板来实现。 首先看第一个场景,性别等于男性或者年龄在三十五岁以下。这种条件用一般的筛选不能一次性做到,因为如果先限定性别,就没法选到所有年龄三十五岁以下的人, 而先限定了年龄,又不能选到所有男性,必须通过多次筛选才能够实现。而用这个查询面板就可以一步到位,首先指定人员明细表所在的文件位置,然后指定数据在哪张系统中。再然后设置查询条件,性别等于男或者年龄小于三十五。 最后执行一下,很快就得到了我们想要的结果。也可以通过编辑 sql 语句的方式来实现。输入 select 星星号表示,取所有子段 from 人员信息表。 最后输入条件,威尔,性别等于男或年龄小于三十五。再运行一下,就得到了同样的结果。如果查询条件比较复杂,一般需要编辑 sql 语句。下面再来看第二个场景,对结果集进行一些计算, 比如这里我们想要统计一下符合条件的员工数量,只需要修改一下 circle 语句, select count 姓名 as 人数, count 表示计数, as 表示给计算后的结果时段取一个名称,然后运行一下就得到了人数。如果我们还想计算一下符合条件的员工的月薪总额,并且按部门分类汇总,只需要修改一下 circle 语句, select 部门 sum 月薪, 再加一行分组 group by 部门运行一下就得到了结果。 最后,对于场景三,在不打开明细表的情况下,就可以在这个面板中完成查询,这非常有用。如果你的明细表有三万行甚至几十万行, 打开再筛选会非常慢。而用这个查询面板就可以在不打开明细表的情况下,直接从中获取数据, 这也意味着你完全可以将所有明细数据都放在一个工作簿中,把这个工作簿就当成一个数据库,然后借助查询面板来从中获取想要的数据,这对于处理大量的销售或者成本数据而言非常有用。好了,这期视频就到这里,大家工作中还有遇到哪些 excel 或者数据方面问题, 也欢迎留言,下期再见!

这里我们已经连接成功了,我们在这里创建一个临时表。啊,临时表我们直接用查询设计用 cq, 试图在这里创建这里的 cq 语句,我已经事情准备好了,就是这个 cq 语句,把这个语句我们直接把它拷贝过来,放到我们这个 查询里,我们直接点运行好,这个表,我们已经进好了,这个是空的。好,关掉, 我们都关掉。好,有了这个临时表放在这里。好,我们接下来也可以把这个表给进一个 数据表。好,我们把它名字就改成客户信息历史啊,叫列表稍微调整一下,美观一下,把这个呢数据改成 快照,快照就是只读的好记录,打完卷的都不要。好,我们就这样好了,我们把这个测试打开,我们为了测试方便,所以我们就把这个客户表直接拉到这里,我们 做测试,我们先放到这里,稍微调整一下就好了,调的大一点。好,名称稍微改一下,就叫客客户信息列表。好,目前都是空的。好,这样,好,接下来我们要做测试,我们要做 客服的新增,我们先做一个把 cq server 的 数据先加载在这个临时表里的。啊,这个这个函数会比较复杂,我先把它做出来下,但是我就不解释这个函数的代码是什么意思。好,我们就叫 加载数据到临时表。好,好,这个代码我已经直接写在这里,我们写到这个模块,这里,我们插入模块,我们就改成 加载临时表。好,好,代码我已经写好了,这里代码我就不清,不解释会比较多啊,把我们 cq server 里的那个数据加载在我们那个临时表里,我们已经写好的函数,我们直接在这里调用,我们名称稍微改一下就叫 加载,加载好,好,我们把这个函数给调用过来。好, 接下来我们可以先看一下加载数据,我们点一下,这里应该要按 f 刷新好,这里数据就有了,好,正常一下,我们应该如果想要加载过来马上刷新,我们也可以这样,我先把它删掉好了,关掉,关掉 直接告诉大家,如果加载过来直接可以有数据,我们可以在后面这里加一个刷新语句啊,就可以了,就是 点密点。好,我们想了解一下这个川体的名字,我们就叫是福历史的。好了,好,川体的名字我们叫过来。好,我们加载时间,好,我们就把它 点一块了,啊,就刷新一下。好,这样的话我们加载就直接刷新啊。好,加载好就有了,就不需要按 f 五。 好,有了这个数据以后,我们现在来做测试,我会在这里做新增。好,比如我想要新增一个客户信息啊,新增一条客户记录,好,名称我就叫改一下,叫 b t, n, a, d, d, 好, 好,这里我就写代码了,新增好,好,新增的代码我们就是这样写,我们就先定义一个。好,先定义一个 c o o over jack, 好, 让它连接 c o n n, 这个,这个连接函数我们已经分装好了,你看这里就是已经分装好了,所以我们就直接调用,就不需要重复写了,我们就直接调用,让我们的可以连接。连接以后呢我们这个 c 点 exe c 库特, 然后这样就是来执行我们各种插入和插入函数,然后我们插入我们的客户表, 然后呢我们把对应的客户编号还有客户名称这里都用英文的 大小写逗号,客户名称好好,输完了再写到,我们再再弹出来 box。 好, 我们就比如我们现在就添加,添加一条客户信息,这个 c q 语句就是我们添加 c q 语句的 这个写法,一个 c, 零零四,杭州贸易公司,然后谁谁谁,好,好,我们就这样。好,我们来测试一下。好,现在这里客服编号只有三条啊,我现在点, 现在添加成功了。好,我们添加成功以后,我们看一下加载好,这里就有,有了。好,接下来我们再来测试一下编辑,编辑,我们名称就改 b t n e d。 好, 好,我们编辑的代码也写一下,编辑的代码其实也是一样啊,这里我们直接复制过来。好,编辑,这里就不是印刷特,印刷也叫 b date。 好, 哈,比特,我们客户编辑成功。好,这里我改一下哈,比特,我们改一下这里的语句,比如说电话号码是零零一的,我们改成一二三四五 五六,好吧,二九,好,就这样。好,我们来看一下。好,如果是改这一条,他现在电话号码是幺三九八八八八。好,编辑, 然后再刷新加载啊,马上变成一二三四五六七八啊,好,这个可以再加一条数据删除 b t l dl。 好, 写一下这个代码, 好,这个删除代码就直接,我们可以把这个编辑的代码给复制过来。好,这里呢就改成 delete 啊,就是 delete 客服信息,我这里改成这个就这个代码。好,我们试一下能不能成功,我们删除啊,删除这条客服编号,零零四,好点,加载数据。好,零零四刚刚删除的是什么?零零一吗?我看一下应该是零零一被我删除了。 哦,零零一删除了。好的,那我们这里的新增编辑删除啊都啊,都能正常运行了。好,接下来我们再来做一个查询。

好,今天我们继续来讲 sql 的 操作,前期我们已经完成了用 ado 的 方式连接了 sql server 的 数据库,然后相当于我们已经用钥匙把门打开了,我们人已经 进到房间里了,接下来我们要拿一些资料,也就是 ado 来执行 sql server 的 增加, 呃,增删改查。哦,好,这个是我们这个架构一些这个很核心的一步,所以掌握了这一步,我们后期的大部分操作我们都是围绕这个这些语句来的。好, 接下来我会,我们操作的时候,我们会用这个语句啊 ex 酷的这个语句来执行增删改。我的架构呢,是这样,首先我们是 有 sql server 客户表,我们在这个数据库里有,这有这个客户表,客户表里呢存这些数据,我通过 ado 来连接这个客户表,我又在我的 excel 数据库里建立了一个临时的客户客户表,这个我先删掉,就是临时的,我测试的时候,我可以直接在这里加载临时表,这里就会调取我 qq server 这里的数据。我们这里先不用关心这个加载临时表这个代码怎么写,后面我会再讲,我在做测试,比如我这里添加一条一条数据,比如这里我先删掉,行,删掉。行,好,比如我现在 我添加一条数据,我这里点一下加载临时表,在 f 刷新,好,这里呢就直接会数据更新过来,如果我删除这条数据,好,我也 刷新一下,好,这里数据就没掉了。但是这这个临时表其实他只是临时的,过度的,真正的数据是存在我们的 cq server 这个数据库里的,所以这就是 我们现在的操作。好,接下来我会一步一步来带领大家怎么完成这个操作啊?

欢迎来到 cda 数据分析课程,掌握数据分析能力,提升您的职业技能,助力您在职场中脱颖而出。 大家好,我们继续讲 cda 认证一级的课程内容。第八章 sql 的 应用上一节我们讲了 数据库操作,数据库定义语言 ddl, 这一节我们来讲数据库操作语言 dml。 如果把数据库比作一个书店,那么 ddl 呢?负责盖房子和打书架啊,它负责创建数据库创建表。而 dml 呢,就是店员每天要进行的业务操作, 一个书店,那他的业务操作有什么呢?核心的就四个字,增、删、改、算,其中算通常指数据的批量导入与处理。 第一个就是 insert, 就是 增数据的入场券。第二是改 update 数据的整形数啊。第三个数据的终结者 delete 数据的传授们大批量的搬运 load data 啊,这就是它的四个核心的功能。下面我们通过一个试例来给大家演示一下 好数据库操作语言 data manipulation language 啊,简称 d m l, 是 sql 语言中用于对数据库中的数据进行增、删、改、查等操作的核心组成部分。 它与数定义数据库结构的 ddl, data 定义定义 definition 单位值和控制数据的访问权限的 dcl 啊完构成了完整的数据库操作体系。我们下面分别通过 店员每天的新增删改算,我们来演示一下,第一个,我们来创建数据,一个库存表,我们创建一个视例啊,对我们下面的演示做准备。首先我们需要创建表结构, 我们先转化到这个数据库啊, 然后呢,我们去创建表, 创建一个 box 表啊, 我们缩进一下,第一个字呢是 id 啊,我们把它定长字,串十个, 我们把它定义为主键逗号。第二个字段呢,是书店嘛?第二个字节就是 title 啊,它是这个书的名称, 变长字不串 第三个作者, 变长字不串第三个呢?第四个是价格, 第五个字段是 stock, 这个是库存啊,我们用几个整形,我们最后一个没有逗号啊, 好,我们执行一下,先转到这个数据库里面来,没问题, ok, 执行当前的语句有错误。什么错误呢? i m t 这个有错误啊,这里是我们少一个逗号啊, ok 啊,可以了,我们刷新一下表, 我们看到 box, 这个已经成功了啊,我们看一下表,结构 好,没问题。 id, title also price, stock 啊,都创建成功了, 创建成功以后呢?那我们首先要来看一下 insert, 就是 增删改算嘛,先看增 新增数据,那么我们就一个书店,我们要开始进货啊,功能就是向表中插入一行或多行的新记录场景。就是,哎,比如书店新进了一批流量地球, 那我们要把这个书插进来啊,基本的语法它就是关键字 insert into, 后面是表明列一列二,这个列一列二也可以省略掉啊,那你后面要完全的把每个列的值完全对应上啊,然后 balance 再把你,你要插入的值呢,都在小括号里面,如果有插入要插入多条记录呢?要需要多个的小括号,中间用逗号把它隔开就可以啊,这就它的基本语法。我们来演示一下, insert into 后面是没有 table 的 啊,直接就是表的名称 books, id title price 啊,这是他的字的名称 values 啊,第一个呢, b 零零幺, 这是他 id, 里面是流浪地球 autor 作者, 作者是 刘慈欣, 那么价格呢?是四十八,我们看一下啊,四十八点零,库存里面有二十个,我们用逗号隔开啊,我们再插入条数据, 我们把它复制过来。零零二, 我们是三题啊,这里我们变成一百二, 我们这个变成二百二吧,这是一个 insert 的 插入语句, insert into, 这是 字断的名列名,插入两行数据,第一行,这个逗号隔开是吧? id, title, 作者,价格,库存,好,我们执行一下。 好,我们执行成功了,我们看一下数据插进来了没有?打开表。 net 的 打开表啊, 我们可以看一下啊,插进来了啊, 好,这就是 insert 啊,下面我们来看一下 update, update 是 修改数据啊,我们调价或者售出。 他的功能是更改更新表中已存在的记录。比如有两个场景,第一个,三体卖出一本啊,库存减一。第二呢,全场流流流行的作品呢,涨价五元啊, 场景一呢,我们要精准修改是吧,因为你就三体,是三体,这些书呢,你卖出一本就是要剪一个。场景二呢,是所有刘慈欣的作品都要涨价五元啊,好吧, 我们来看一下 update 啊,它的关键字是 update, 它也没有,后面也不跟 table 关键字啊,直接跟这个表表的名称 set, 这个,这是列名字段名, 我们让它减一啊, bear id 等于 b 零零幺,好,我们就把 i id b 零零幺的这个啊,我们把它 库存减一个,我们看一下。 好,没问题,我们来看一下啊,刚才我们插入的 b 零零幺,它的库存是二十,是吧?现在我们减了一个,它应该是十九,我们看一下 where id 等于 b 零零幺,精确指定它的 stock 卖出一本减一十九没问题啊, 我们场景二呢,批量修改,全场留字型的作品涨价五元。 update box price 啊,等于 加五元啊,所有价格都加五元,什么呢?什么条件呢? where 呢? 作者等于 刘慈欣。 update set 这个字段加五,所有条件式,所有作者等于刘慈欣的都加五。来执行一下。 好的,执行成功,我们再看一下啊, 我们来看它,原来是 它的 price 是 一百二是吧,加五块那就是一百二十五了, 很明显它是一百二十五,原来它是四十八,加上是五十三,对吧。所以说所有投资性的价格都上涨了五元, 那么我们红色警报啊,在执行 update 时,千万别忘了 where 子句,如果没有 where, 整个书店的所有书都会变成同一价格, 那可能就是你职业生涯的最后一步了啊,所以说一定 update 的 时候注意 where where 的 这个语句啊。 那么第四个小节我们来看一下 delete 啊,删除数据书本要下架啊, 功能是删除表明的某一行或者多条记录场景,比如说流浪地球,由于版本变动,需要从库存系统移除啊。语法是 delete from, 表明 where 是 条件,这就叫语法啊, 我们来看一下删除关键字, delete from 表明啊,删除了表呢,后面要用 very 语句 删除哪一个数呢?流浪地球是吧。所以说 title 呢,等于 流浪地球啊, 流浪地球好,删除 from table 流,把流浪地球删掉啊, 我们来看一下啊, 浏览地球那本书就没有了啊, 这里我们要注意一下,复习一下我们以前这个在 ddl 学过的,跟这一章小节我们学过的,我们总结一下啊, delete from table, 作用是用于删除表中的具体行数据,可以执行条件表结构 中的表根,所有结构,包括缩影,约束都可以保留,是吧? 它只是这样一个具体的数据表结构啊,缩影,约束都会保留创建的 table 啊,这个作用是用于快速清空表中的所有数据表,关于表结构的表结构的列约束,缩影都会表现保留技术去 自重置规定啊。如果是 drop table 呢,它的作用是彻底删除整个表,包括数据表结构权限,缩影 触发器啊,表中所有关联对象都拥有删除,从数据中数据库销售。所以这个 drop table 是 最最严厉的啊,一定要慎用 选择建议呢。第一,想有条件的删除部分数据,并可能需要撤销呢。用 delete 的, 它是可以回滚的啊, 想快速清空整张表的所有数据并重置计数器,用 charkey 的 啊,想彻底删,删除整张表,包括其定义与 drop, 那 么它的表结构也就没有了。这个还是有表结构的啊, 我们再看最后一节啊。第五, load data 批量导入数据啊,大批量进货,它的功能是将文本文件中的数据直接映射并灌入数据表中。案例的场景,书店总部 有一个这样的 d m l box 的 csv 的 文件,里面有包含了多条行书的信息,那么我们需要有一行行的写 sql, 直接一键搬运啊,我们来演示一下, 再演示一下,因为这个批量导入数据啊,它是跟它必须是在这个嗯,数据库的目录下面,所以我们要看一下这个它的文件的参数, variable, like secure。 我 们看一下啊,那么它这个目录你要导入的文件呢?必须要在 这个目录下面,如果不在,你需要修改这个,这个,这个值啊, 关键字我们都大写啊。 load data info 后面跟着是文件的路径啊,我们刚才在 user 下面,我已经把文件放到这个目录下了,所以我们直接把它写上 这个文件, 这是我们导入这个文件啊,呃,就是文件的路径, 我们要导到哪个表里面呢?所以我们要指定表 导到哪个表里面?要导到 box 里面啊,这是目目,这是目标的表明。 还有我们要指定分个符, fields terminated by。 我们一定要注意中英文的切换啊,刚才我们就是一个中文的代号,这个是指定的字的分格符啊,因为 c, s, v 的 通常是逗号,所以我们指定是逗号。 enclosed 的, 我们呢字段包围符,我们防止书名里面有逗号啊, 我们指定换行符啊, terminated, 我 们忽略,忽略第一行, 我们要跳过表头啊,第一行是标题,不是数据,我们也可以指定列的名称 对应表中的列。 好,我们看一下 load data info 这个目录,没问题啊,到这个表表明是 both 啊。 folded terminated by 是 分割符,然后这个是防止这个书里面有有这个逗号啊,自作的包围符,换行符,忽略第一行,这是表的自作名 啊,这是 rose 啊,我们少写一个 s, 我 们来看一下啊, 我们可以看,我们就又插进来三行数据, 那么这就是用批量的导入数据,实际上我们批量导入,我们使用 navigate 或者是 my saved workbench, 不 需要这样,我们直接,比如我们这个 navigate, 我 们直接导入,向我们导入向导 我们,我们就可以指定啊,指定这么多的这个队形的数据来进行导入啊,它是很很方便的,不需要你这个用那个 load data, 那 个工那个东西来导入, 这里面有一个这个需要避坑的地方,我给大家说一下, 因为我们的导入当中会发生很多问题,主要是这些问题啊,一个是权限限制,我们刚才已经演示过了啊, self file prime, 这是 mac 出于一个安全考虑的默认值,允许从特定的目录导入文件, 如果报错,通常需要检查这个 circle for private 这个边上的设置啊。第二个叫 local 关键字,如果每一个服务,如果你安装的每一个服务跟你要上传的文件都在远程服务器上,那你就可以执行 load data in file 啊。 而如果你的每一个服务在远程服务器上,文件在本地电脑,那你需要加 local 关键字啊,这样就会把你的文件从你的电脑上传到服务器上,大家要注意一下,这个呢,你要打开 local 的 这个 相关的权限,就需要在你呃, linux 是 my 点 c f 或者 windows 的 my 点 i n 这种配置文件里面呢,把这个 local 杠 inf 等于一啊。 第三,如果 microsoft 服务及上层的文件都在本地电脑,实际上两种方式都可以啊,我就是这样,我现在的服务跟文件都在本地电脑上,这个大家要注意一下啊,这就是编码问题啊, c s b 呢,是 excel 生成的,通常是 g p k 编码, 而数据库是 u t f 杠八的,如果不指定这个 capture, 这个的 导入书名化,这个中文,中文常常会会,中文呢?常常会乱码啊,我们可以用一些像 note, pad 加 plus 啊,我们可以把这些可以查看一下它的编码,如果是 g b k 的, 我们就把它转换成 e t f 杠八的 啊。最后讲一下 这个 d m l 的 操作,三大均规啊。第一个,不 where, 不 update, delete 就 一旦操更新更 delete 啊,一定要讲,因为我们大量如果我们的生生产的数据库里面,那,那真的是你一旦操作错了,那真的是你可能会丢工作的啊。所以要永远检查你的限制条件,避免一处修改全表遭殃。 第二个,先查询后操作,就你要先看一看,在执行 update 的 和 delete 的 前呢,要先用相同的 v 二条件呢,写,写个 show, 看看影响的范围啊,搞清楚。 第三个的事务控制啊,传三个神。最重要的 dm 操作呢,记得先开启事务并确认后再提交啊。事务控制,如果你要银行转钱是吧你,你这个一定要保证你从原始的账号要转钱的账号, 你要扣钱了,在打入的账户里面已经收钱了,你才能 commit。 如果中间有任何的出现中断了,那你就要进行回滚啊。 好,最后我们来复习一下啊,我们是这三个, insert 新增, update, delete 啊,操作对象是新行, update 是 现有行的字段啊,一般来说是 update 更新的,现有行的字段 定义的是整现有的整行做删除啊。危险等级,一颗星,四颗星,五颗星啊。核心关键词, values set from 典型场景,单个注册,下单, 调价,改名,清理过去数据啊,这就是今天我们讲的内容。好的。

朋友,如果你想成为一名数据分析师,请跟随我系统学习 cda 认证的相关课程和内容。我们继续讲第八章 sql 数据库的应用。 上一节我们讲了 left 和 right 函数,含有查找与替换函数的 insta 函数。现在我们开始来讲 replace 函数。 replace 函数呢,包括三个参数, string, from string 和 to string。 它的功能是在原始词汇串 stream 中呢,查找所有出现的 from stream, 将其填全部替换为 to stream, 然后返回替换后的新词汇串, 也就是我们在 stream 这个字串或者字段字段当中呢,我们寻找 from stream, 然后把它全部替换成 to stream。 参数说明就 stream 是 必须的,要进行替换操作的原始字串或者字段 from stream 也是必须需要被查找并替换的目标字字符串。 to-s 指令也是必须需要替换的新字母串。比如我们有个场景,还是我们原来的员工表,我们要清洗职位名称,如把 manager 改为销售经理, 也就是这就是我们的员工表,我们要清洗这个 job 这个字段当中的 manager, 我 们要把 manager 替换成销售经理。 那么我们的操作 sql 代码是什么呢?我们用 update e m p employee 员工表,然后 set 呢?什么呢? job 等于我们用到这个 replace 函数。第一个是原始的字段或 stream 是 job 这个字段,然后 from stream 呢是 manager, 然后我们要把它。我们 to street 呢是销售经理,我们要把 job 字典的 manage 替换成销售经理。那我们来执行一下这个语句, 这就显示执行成功了。那么我们看一下它是不是被替换了, 我们看一下, 很明显 job 这个字典里面的原的管理者都被替换成了销售经理, 这就是 replace 函数的使用。

哈喽,大家好。呃,首先在这里祝大家新年快乐,然后上一节课的话,我们讲了这个莫斯科的缩影啊, 然后锁影,它就是一个,嗯,快速的一个查找的,帮助数据库进行一个快速查找啊,它就是一个排序加数据结构的一个过程,好达到一个十二口派快速查找,然后锁影优化啊,讲了怎么去判断一个十二口的一个好坏啊, 以及十二口它锁影失效的一些场景。然后这节课的话,我们来讲如何使用 b log 去恢复数据。 什么是低音 logo 啊?首先看一下低音 logo 的 话,它就是一个数据,它就是买车口的一个操作日记记录啊,它是以二进字的形式保存在那个你电脑的一个词盘上, 然后的话它里面基础记录了,插入,更新,删除啊,它用于增加备份和数据恢复啊,它可以把这些操作还原到之前的状态啊,然后 它这个它的主要是区别就是啊, sgo 单步,它是以文本的形式保存的窗口啊,可以读取和修改,而 b logo 的 话,它是以二进字的格式保存这个事物的日子啊,它不能在查看或修改,它需要用专门的工具进行分析。 呃,它备份的范围,买这个弹幕,它是整个数据库啊,全量备份,而 b log 的 话,它是你可以实现增量的一个备份或者是还原啊,然后可以看一下,哎,我们可以看一下整有没有开启这个 b log 啊, 就通过它看一下, 然后我们把数据库重新启动一下,然后 b log 的 话,它这个按按就表示开启的啊, 然后这个按 log 并。然后呢?它这个是在哪里看啊?在这个 mac 的 一个它的这个 配置文件里面去看百测口,八点零,他是默认是打开的啊,八点零往上啊,这个是他的一个百测口干冰啊,看下二进制日制,然后这个的话就是下面这个的话就是二进制。 嗯,他的那个二进制日制的一个格式啊,肉格式,然后我们看一下他这个三种格式有啥区别 啊?这个格式的话,它第一种格式 statement 就是 语句级别啊,就比如说你执行的这个,呃,删除语句,它里面记录的就是这样的一个日子啊,就是这样的一个窗口, 他直接记录的一个原始的三口啊,肉格斯的话,他就是,嗯,记录信息比较详细了,就有你删除啊,他会,他会这啊,把那个删除的数据给你,呃,链接出来啊,然后呢?方便你后续啊,利用工具去还原之类的啊,他这个 它这个特点是比较安全的啊,主存复制绝对一致,支持数据恢复,但是它有个缺点就是日字文件体积比较大,因为它记录的东西比较详细嘛,然后类似的格式的话又混合模式啊,它会根据你这个 语句的情况啊,然后来判断,哎,你是用,你是用肉格式还是用那个 statement 的 格式啊?它自己去判断。 然后编辑日记的话里面它只会记录啊,只会记录删除、新增、修改啊,这些语句,它不会记录你这个十二类的查询啊,比如秀之类的语句啊,然后我们来看一下怎么 呃怎么怎么去生成新的编辑文件方式一就是重新买它个服务方式二就 这是 flash log 啊,通过这个命令来生成一个 binlog 日历啊,它的 binlog 日历在哪里呢?它一般在你买车口安装目录下面的 datap 下面啊,然后这啊买车口干病 点,零零零零一啊,就是你看这,这个就是文件名,买车和看病啊,就是你这个拼音 log 日期啊的一个文件名零零一啊,数字越大说明什么?说明那个就是最新的一个啊,我们可以通过这个 show master data, 然后看。哎,这个就是最新的这个啊,也可以通过这个去看,这个是他会把所有的那个,嗯,那个日期文件名列出来啊,编号最大的那一个,就是现在正在用的那一个, 然后我们现在来看,因为这个买菜的病,他这个是一个二阶制日期文件,他是没办法打开的啊,他是没办法打开的。嗯, 它打开也是乱码啊,看一下,打开也是乱码,没办法看,那我们怎么办呢?我们有两种方式啊,第一种方式 通过通过这个啊,通过修编辑 logo 一 问特啊,然后它这个的话,我们来看一下它都有什么些格式啊? 啊,你看这儿有 log 的 log 的, 这是名字,它的一个开始点,它事件类型, service id, 包括它的一个结束点,还有包括它的一些信息啊,然后这下面下面有描述啊,有描述它这个 他这个制段,最主要的是他这个事件类型记录什么样操作,包括他扩展信息,还有就是开始时间,开始位置,事件起始位置啊,那个大家可以看一下啊,这些情况,这些常用的一些制段啊描述, 然后知道了这个之后啊,知道这个,那如果说我们现在对数据库进行误操作了,要恢复怎么办?如何使用这个工具啊? 你看他有个东西叫开始点和结束点啊,那我们要恢复,那肯定是在这某个点啊,选择一个开始点和结束点这段之间的区域去操作他,那怎么去操作呢? 就比如说我们现在先来搞一条删除的吧。啊?呃,搞一条修改的啊,就比如说我现在表里面有有这么多数据啊, 然后呢?你看二十测试,我现在比如说我修改了测试啊,我把测试这个名字改成测试零一啊,我现在给它修改了,然后我们来看一下冰诺这个日字,它会记录什么内容啊?你看这里它会首先记录一个开始的点啊, 从从哪里开始呢?这个就是开始的开始点,幺五六啊,二三五这结束点,然后从这个位置啊,从这个位置开始,然后它干嘛?它 update 了一行啊? update 了一行。 那如果说我们现在修改错了,我们想要还原回去啊,那我们怎么还原啊?首先第一步通过看这个日字,通过这个命令去看来还原。还有一个是干嘛直接把这个嗯 b log 日字转换成可以阅读的一个文件。那怎么去转换呢? 我们来看一下怎么去把它转换一个可阅读的文件啊?就比如说,哎,这个啊,通过它,然后把搜索 并 logo 啊,然后这个参数先不管了,就是制服机的问题,然后干杯,然后转化成格式化的一个格式啊,设置制服机,然后它的一个编码的名字啊,你重进一下到哪个文件啊?好,我们来看一下。 哎,我们在这执行一下。好,执行成功了。好,首先让我们来看一下,哎,这已经被重新加载了啊 啊,这个有点乱码啊啊。先不管他,好,我们来看一下他这个是大概就是这么个内容啊。首先艾特,艾特就是那个开始的位置吗?就是四吗?你看这四,好,然后呢? 哎,在这啊,有个幺二五,看到没?幺二五啊,就这个位置啊,结束的一个点。然后我们主要关注的是一般主要关注的是什么? 关注的是 begin 和 commit 之间的啊?一个操作,就比如说三三三零五零七啊这个操作,然后我们去找找三三三零, begin 在 这儿,对吧? 然后结束是在哪里啊?结束在这儿 commit 啊,四四七六啊,四七六。然后我们还有一个五零七啊,后面应该还有个五零七。呃, 对,在这啊,然后我们来看一下,看一下怎么去还原它啊?怎么去恢复它。那我们怎么去恢复呢? 就比如说我们现在把 mac 这个命令拿过来,我们看一下,就命令 mac 这个是这些,这些都不用变啊,最主要的是变的是哪一个?你这个 mac 的 一个文件名字啊,文件名字, mac 的 一个文件名。还有开始点,你要去 恢复哪一段操作啊?然后这个 stop 啊,这个, 然后这样的话,其实这里它相当于把之前的语句再执行一遍啊,就比如说我们这里,这里如果说我们把它改成测试您,我们又把它改回去啊,改回测试回去。好,改回测试回去, 现在他已经又回到测试了啊,已经又回到测试了。然后如果说我们要把它还原回测试零一,那怎么去还原呢啊?我们来看一下, 就比如说我们再看一下它这个日子啊,你看它执行的又执行了一个 update 啊,又执行了两个 update, 第一次是把它改成测试零一,现在又把它改回为测试,现在我们要还原为测试为呃,零一,那怎么还原?那就是 五零七啊,五零七这儿是结束点,然后二三五,这是开始点啊,我们通过这个点去还原试一下呢, 哎,看到没?它现在就还原为测试零一去了啊,还原回去了,现在已经 啊,比如说我们再执行一下,把它改成测试啊,然后再执行一下,它现在是不是已经又是测试了,我们又改回去了,然后我们再来执行一下,看看它是不是就通过这个点去还原它,它是不还会回到测试零一啊? 啊?你看已经变回去了啊,然后他这有个有个点,就是相当于他是把你这一步执行的操作再重新执行一次啊, 重新执行一次,然后这个需要注意的一个点就是他可能有时候,哎,你不知道什么时候修改的,那你可以借助别的工具,哎,这他你查看表结构啊,然后给他改回去,或者说,哎,给他 给他,然后重新转换为呃 update 窗口啊,或者说 insert 窗口之类的啊。如果说现在我们要删除这条数据,那 怎么怎么怎么去搞啊?就就比如说我们现在要呃新增一条数据,但是我后面不小心给它删除了,那我们怎么去恢复他?就比如说我们现在要新增一个 id 为二十一的啊, 然后呢?我们给它改成叫测试零零零二,对不对?我们先给它插入一条啊,插入一条,看, 现在已经插入成功了,测试零零零二,好,二十一的这条,然后现在呢?我们不小心,假如说我们不小心把二十一的这条删掉了啊,我们该怎么去恢复它?好,我们现在已经删掉了,那我们现在来看一下这个 b log 的 一个日制啊, 啊,看一下边那个日字,然后看到找到,那我们要你看这有一个 begin 开始啊, 呃, delete 肉丝啊,已经删除了一条,然后提交了,那我们要操作的这一块,那是不是应该是,呃,就是写入的时候 begin 开始啊,从幺九七八啊,然后到这个卡密特 二二二二幺这里啊,这里提交的,那我们是不是在这个区域内,然后去 去执行,让他再执行一下啊,然后让他把数据恢复回去啊?是不是这样的啊?那我们来验证一下,就比如说我们二二幺啊,开始点是在这个位置啊,这个位置幺九七八,好,然后我们现在来看一下数据,数据,那个数据库的数据, 刚我们操作的那个二十一的那条 id, 这条是不是已经被删掉了?是的,已经被删掉了,然后我们现在来看一下怎么去给他还原啊?我们你开始点和结束点都已经找到了啊,那我们现在要做的就是给他执行一下啊,这个, 这个买车口干 u 啊,就是后面就是登录啊,就是登录啊,登录就是用户名密码嘛,那我们再来执行一下,看一下他会什么样的一个效果啊?那已经执行成功了,那我们来看一下, 哎,你看二十一测试零零零二这条是不是就恢复回去了啊?是的,是这样的,已经恢复回去了,所以说 我们这个买这个冰那个他会执行一个数据恢复的操作啊,这个笔记里面是之前的笔记,但是大家只要知道这个是怎么去操作的啊?具体的这命令啊,笔记都有,那大家按照这个个呃这个笔记去操作,基本上没有太大的问题啊。 然后如果说这觉得这个工具不好用,大家可以借助一些别的工具把 bingo 转换成欸格式化的那个 insert circle, 或者是说 update circle 啊,然后的话。

现在我们开始讲查找与替换函数当中的 int 函数。 查找与替换函数的 int 函数呢,它的功能是查找一个字母串 在另一个字母当中首次出现的位置啊。首先参数说明呢,就是 string, 这个是这个和这个参数是必须的,它是被搜索的目标字母串或者是字段的名称。搜索哪个字段? 那第二个这个 substring 呢?是也是必须的,这个参数是要查找的子字母串,也就是说你要在这个字段当中或者是目标字母串当中来寻找 这个字母串,并返回它的位置啊,它的位置是一个整数啊,如果找到子串,则返回第一次出现的起始位置,所以从一开始如果未找到子串,则返回零。 比如说我们有一个应用场景,要筛选员工表中在十二月份入职的员工信息, 我们要从这个 heidi 的 这个字典里面来筛选呢,哪些是十二月份入职的员工?我们可以看到 smith 是 十二月份入入职的,还有就是 james 和 ford 啊,他们也是十二月份入职的, 我们看一下代码的执行情况。 那首先呢,我们仍然是从员工表 from emp 来进行查询,我们查询什么呢?我们来查询员工的姓名,还有他的职位,还有他入职的日期,还有他的薪水这四个 字段。但是我们是有条件的,我们从这些行里面来筛选什么呢?我们来筛选 int 函数,查找一个字母串 返回它的位置。我们从哪个字典里面呢?寻找从 high date 入职日期。我们要查找这个子字母串是十二啊, 返回的位置是六,它等于六,我们就认为这个条件是真是错啊,为什么是六呢?我们看一下, 我们来查找十二啊,十二这个字母串呢,它是一二三四五六,正好是返回位置,应该是六,如果不是六就是错误的。 我们来看代码执行的情况, 我们来看我们筛选的条件是十二月看没有,这全部是十二月入职的啊。 smith, james 和 ford, 这就是 查找于替换函数当中的 insta 函数的应用。

你们有没有懂的呀?今天开了一天会,然后公司的一个技术顾问聊了一下,我们现在用的是买色口,然后他非常坚持的说得用 p g 色口,说 p g 色口处理大数据比那个买色口要强性的。 我们现在的需求是一天十万条数据,然后他存的字段都是阶层字段,一条数据差不多是八 k 币,每天这样的数据过来会做查询,然后 我的方案是做分库分表,然后他的给的建议是分区,然后数据库要用成 pgc 口。嗯,有没有懂的呀?评论区可以聊一聊。

用 xl 手撕舌口第二期直接上干货!大家可认为这是员工表,这是经理表,这是薪水表,这是员工 id, 这是经理 id。 把员工表引用过来,先匹配出每个员工的经理是谁, 再匹配出员工和经理的薪资数据。 用 filter 筛选出需求数据,此时得到需求数据,需求不打乱原序列的情况下,输出基数型的 first name, 这是对 first name 声序排序后的结果。最后输出结果的判断标准。先把数据表引用过来,再用 sort b 函数对 first name 进行声序排序,这里直接填写数字,实现排序序号。也可以用 rank 函数, 用 filter 函数筛选出来基数型的数据,搭配 mod 函数使用即可。最后按 id 列进行声序排序,就能还原原序列了。 这个是用户是否正常的识别列零代表正常,一代表不正常, completed 代表邮件发送成功, no completed 代表邮件发送失败。先匹配一下邮件发送者和接受者的用户是否是正常的, 判断一下当前的数据行是否为邮件发送失败。 用 filter 函数筛选出邮件发送者和接受者的用户都是正常的数据。 题目要求以每个日期的维度做统计,用 sumifs 函数计算每个日期中有多少个失败的数据。 用 countif 函数计算每天有多少个正常用户之间发送的邮件数量,两者相处就等于最终的结果。如果觉得本期视频对你有帮助,记得点赞、收藏、关注三联,我们下期再见!

x l 首次牛客奢口第五期直接上干货,我们要看一下各个岗位的中位数位置,注意是范围啊,这里有两个时段,一个叫 start, 一个叫 end, 这个是起始值,这个是终止值。然后这里给大家举例一下,比如说这个 b 工作的这个数据,它有三个嘛?那它的中位数是二,大家都知道,那这个二怎么计算出来的? 比如说这里有三个,我们除以二,它的结果等于一点五吗?一点五代表的是它是一个奇数哈,一二三三个数据代表是一个奇数,那这里的话,比如说这个 java, 它是多少呢?二除以二吗?它是等于一,这个代表的是一个偶数,那我们对于奇数来说的话,我们可以直接四舍五入,它的结果就是二吗? 那这个二就是它的一个中位数,而对于这个 java 来说,它是一个偶数哈,那它的一个中指位置,其实是要在这个一的基础上,它去加一个一变成二的, 所以它的起始位置就是一个是一,一个是二。而对于基数行来说,它的中位数一直都是二,那根据这个思路,我们就可以去实现它最终的一个结果了。我们来看一下以下是怎么实现的。首先我们先做一个排序,题目说了要按这个 job 进行一个顺序排序,所以我们首先先排序,它,排完之后呢,我这里顺便也把这个分数给他排个序。那其次呢,我们先算一个同类质变,这里默认为一吗?上个视频讲过, 然后这里面只要它是工作相同的,那我们就会变成了一这个结果,这样我们能看到这个工作是怎么样产生的,其实我们对这个工作进行一个去重嘛, 因为我们要得到每个工作的一个中位数位置,然后序从之后我们用 max if 对 它进行一个计算,得到它的一个最大值。那我们算这个 start 的 方法的话,就是用 mod 这个函数取余数,如果它的余数存在就是等于一的情况下,那它就是奇数,那我们要对这个值除以二之后 做一个四舍五入的,那如果偶数的话,它在这个 star 的 这个时段里面呢,它就直接除以二就行了。那我们看一下 n 的 计算,前面都是一样的逻辑,那不一样的逻辑是在后面。就是我们刚才讲了,如果说它是偶数的话,那它其实位置是中间两个数字,那它需要在这个除以二的基础上再加一才能得到这个结果,最终我们就能得到这样的一张表,完成这个需求。 第二个题它是在刚刚那个题的基础上,要输出所有这个分数表的一个信息,你可以理解刚刚输出的是缩影,然后现在需要你输出这个缩影下面的信息。首先我们还是按这个刚刚的方法进行一个计算,就是排序得到它这最终的一个结果,然后就有一个自增的累计函数嘛,然后求它的一个最大值, 只不过说我们这里的最大值用这个 code 实现了,就实现一个问题,他会有很多种方法,那我这里会尽量的在同一个问题给大家举例一些不同的方法,供大家去参考。那接着我们去算他的一个 start 以及他的一个 end, 这个是刚刚讲过了,比较简单,我们得到这张表之后呢,我们就要去筛选出这个表的数据。比如说刚才讲的加法,它其实是有两个值的嘛, 就是一个一,一个二嘛,对吧?所以我们要做一个筛选,这里面我们有一个筛选函数,这里有一个知识点,就是大家可以留意一下 我们现在筛选的情况下,就是就是这个 r k 这一列等于 star 的 这一列,或者 r k 这一列等于 n 的 这一列就行了,所以它是一个或者的一个关系,不是一个 n 的 一个关系,那或者的关系在 filter 这里怎么产生呢?就是用这个加号,如果说你这里用的是一个乘号的话,那它就是一个和,就是一个 n 的 一个关系,所以我们这里用一个加号,我们就能筛选出它对应的一个数据,这道题就可以用这种方法去解决它。 第三题我们看一下这个题目看着会比较复杂,然后我们来猜一下,首先他有四个条件,第一个这个是日期吗?他要在这个十月十五号以后。第二个就是一个用户要下单两个级两个以上的这个订单。然后第三个状态要为购买成功的这个用户。第四个就是要买了这些课程,就有三个课程吗?然后呢说出的结果就是要说 出这个优者 id 以及他第一次购买的这个时间,然后就是十月十五号之后购买这个次数,那我们看一下他怎么实现。那第一步就是我们做筛选,这里面的话我们筛选三个, 第一个就是他要筛选这个课程是 pass、 c 加加以及 java, 那 我们简单来写的话,只要这个值不等于 j s 的 话,那他就是其他三个值,那第二个就是他的一个订单的状态,一定要是完成的。然后第三个就是要在这个时间之后,这里的时间大于这个值就行了。那我们刚刚讲了,如果是或者的关系的话,这里是加号,那我们现在是 在满足所有条件情况下都要成立,那这里就是用一个称号,那这里的筛选我们没有做两个及两个以上的订单的状态,因为这个是需要做到一个分组的, 所以我们这里暂时就不以这个写法来写。其次呢,我们用这个 uni 可以 对它进行一个去虫嘛,然后去虫之后我们会得到这样的一个数据,可能因为我们刚扫了这个两个级两个以上的购买状态,如果我们现在新增一个状态,就是这个十的用户,他在二十三号他买了一个,那这个时候说出这个数据的话,他就是有问题的。那这里的话我们就要进行一个筛选,就筛选出他两个级两个以上的,就是按照这一列, 只要这一列大于一,那筛选出来的结果就是对的,这样我们就能得到它最终的一个结果。如果觉得本期视频对你有帮助,记得点赞收藏,关注三联,我们下期再见。

接下来呢,我们来讲开始讲清洗与格式化函数,这是我们数据分析是非常重要的,因为我们从一些原始的,比如像 excel 表啊, 导入的数据呢,经常会有一些呃空格呀,这些这些异常字幕,所以我们要进行把这些字幕进行清洗啊。首先我们来看 trim 函数, trim 函数呢,有这么几个仓参数, boss, leading, trading, r m stream from, 还有这个 stream 啊,这个清洗这个 trim 函数的 功能作用是什么呢?它就是返回移除字母串,使追开头和结尾所有空格后的字母串,就是把开头和结尾的空格或者是其他字母。不光是空格,你可以指定其他的异常字母, 我们可以看一下它的参数说明。 boss 呢是默认选项,就是从字母上的开头和结尾都移除。 leading, 这个呢,关键字呢,是只从字母叉的开头左侧移出。 trading 呢,是只从字母叉的右侧移出 啊,这个 rem street 呢,是可选要移出的字母或字母串,你可以指定,如果省略呢,默认为空格啊,这个 street 呢,就是要处理的原始字母串或者字断。 比如我们有一个场景是要清洗员工表中的三类代码,开头或结尾的星号啊,这写错了,我们是 job 代码, 我们要清洗这个 job 代码里面的这个星号。 我们在清洗之前先看一下, 我们可以看到呢,这个 mountain 的 这个 jobs 呢,是前面中间后面都是有星号的,因为空格我们看不见嘛,所以我们用星号来在点实际工作当中呢,肯定是空格比较多, 所以我们 the select 的 语句呢,是从员工表里面来查询员工的姓名,职业,然后呢把这个用 trim 这个关键字。函数呢,把 leading, 把前面 leading 是 前面的左侧的星号啊,把它去掉,然后呢作为一个新的 字段啊,别名 clean job。 我 们来执行一下这个语句, 我们可以看一下它原始的是这样的,清洗完以后的呢,我们用的是立领,所以我们把前面的这个型号去掉了,中间跟后面的还有。 那我们来看第二个例子啊,这个呢,我们仍然是从员工表当中呢查询员工的姓名, 职业,这时候呢,我们仍然用 train 函数,这时候我们用 training 这个关键字啊,这个参数。 training 是 从右侧,从后面去除所有的新号啊,从 from 这个照过这个字段 仍然是这个别名。 我们来看垂理呢,很明显是把后面的这个信号去除了,中间和前面的并没有去除。 我们再来看第三个例子,仍然是从 员工表里面,我们来查询员工的姓名,职业。这时候呢,我们 select 函数里面用 boss 啊,这个也可以省略啊,省这个它的意义是把前面跟后面的型号全部去除啊。 from 后面是根你要清洗的字段,我们用,我们用一个加一个别名,我们来执行一下这个 我们可以看到原来是开头中间基本都有信号。 我们用 boss 以后呢,把前面后面的信号都去掉了。那有的同学可能问,那中间的怎么样呢?怎么去除呢?中间我们可以用我们以前学到的 replace 函数把它替换掉。

距离上库到跑路最近的一次,不是你写错了字带,也不是服务器宕机了,而是你自信满满地敲了一行 delete, 然后顺手一个回车。 一个职业工程师的肌肉记忆应该是这样子的,每次执行 delete 或者 update 的 时候,永远永远要把 delete 换成 select, 原封不动地跑一遍 cork, 看看你要操作的到底有哪些?数据到底有多少行, 别靠猜,别陷计,更别相信你的未而条件。小结一下我工作中常用删除数据的方式,第一个, delete 语句之前必须执行 select。 第二个,删除 delete 之前开启安全模式。 第三个,利用事物包裹的方式进行删除,确认无物后 commit, 否则 rollback。 在 工作中我见过 delete 忘写误饵条件的,甚至还有人把线上库误以为测试库操作的。你还经过哪些翻车事件?评论区聊。

一选表,二自断,三加分区,四判断多表关联加条件,切记类型要转换。此查询别明线,不然报错别急眼。分组统计 group by 条件函数嵌里面 if case 最常见,零和空值要明见 not in 里坑最多空值去留业务说开窗函数很重要,数学规律要会找, sum 汇总要分清, log number 要会用,上面口诀要记清,剩下豆包来搞定。

x l 手撕牛客折扣第三期直接上干货,我们来看一下第一题,就统计牛客新登录用户的次日成功的留存率。这里的案例介绍第一行表示的是用户 id 为二在十月十二号第一次登录的牛客网,然后第四行的话是这个用户 在十月十三号第二次登录的牛客网,所以对于用户 id 为二这个用户来说,它是算了一次次日成功的留存率的。然后基于这个结果,我们来看一下它的一效实现是怎么 做的。首先呢我们需要对它进行一个排序,就任何跟日期相关的,比如说什么之日留存率之类的这些问题,大家都可以去排过去,观察一下它是什么变化。然后我们这里可以发现,你看这个用户 id 为一的同学,他在十月十二号、十月十三号、十月十四号都登录的,所以证明他是一个 成功的之日登录的留存率。然后二我们刚才讲的也是,然后三的话呢,他因为只登录了一次,四也只登录了一次,所以他不算,所以这里的留存率的一个结果是多少呢?就是总共四个人, 有两个人登录成功了,那它的概率就是零点五。那我们的实现方式是怎么做的?首先我们先去做一个差,这里用 data diff 这个函数,然后我们需要判断的话,就是要按用户的角度去判断,比如说这里先要判断它是不是同个用户, 这个它的时间是不是相近的,如果是相近的话,那我们记为的结果就是一,否则记为的结果就是零,这是第一种方法,第二种方法就是可以直接减它,也可以当成那个数字去计算,所以我们这里直接减的话,也可以得到对应的一个结果,这里有两种方法。那 第三个我们怎么去计算它的一个结果呢?就是这个概率怎么算呢?首先我们可以去筛选一下,这里的筛选就是筛选出这个作差之后,日期等于一的 这个同学,因为等于一就证明他是次次登录成功的。那我们取出来之后,这里用一个 uniq 进行一个去重,我们为什么要用 uniq 进行一个去重呢?我们这里可以看到用户 id 为一的同学,它出现了两次的这个一的结果,所以我们在统计的时候呢,我们会把它算重复了, 但实际上它只有一个人,所以我们这里要对这个用户 id 进行一个去重,这样我们的结果才不会错。然后最后就是用这个靠的函数把它的人数给统计起来,那对应的话就是它的一个总数嘛,总数就是对这整一列进行一个去重,然后再计数,那我们就能得到这样的一个结果了。 第二题我们来介绍一下这个题目,就是统计一下牛客每个日期登录的新用户有多少个,那我们看一下它的时间步骤,因为我们只要每个日期以及新用户登录的个数,怎么判断是不是新用户呢? 我们只要找到它的最小日期,比如比如说我们这个用户 id 为二的这个同学,对吧?他就只有这两条信息,那他第一次登录的话是十月十二号,第二次登录的话是十月十三号,所以这个数据应该归在十 月十二号里面,所以我们按照这个思想,我们就可以去确定,只要找出每个用户的最小日期就行了。所以这里我们首先对它进行一个去重,就是得到一个用户的序号,就是我们找到这里的用户 id, 我 们要找这个 date 这个词,然后呢我们筛选呢是用 user id, 你 看 点击这个 u 的 id, 我 们就能匹配他最小的值是多少了。得到之后呢,因为他要计算每一个日期,所以我们这里用 u, 你 可以 把这个日期也去重一下,然后得到这样的一个序列,我们只要找这里面出现了多少个对应的日期就行了。比如说十月十二号这里出现了三次嘛,那他对应的结果就有三,然后十月十四号他一次,那这里就是一,那这样子我们就能找到他对应的一个信息是怎么出现的了。 第一张题我们来看一下这个题目,他要找出每个岗位分数排名前二的用户,然后按照这个规则进行一个排序,然后得到下面的这样的一个结果,然后我们看一下它怎么实现的。首先呢我们先把这个表给引用过来,然后对它进行一个匹配,用插入个二对它进行一个匹配就行了。匹配完了之后呢,我们需要按照这个 排序的结果进行排序啊,所以我们用 stored by 这个 d 列的话,就是这个工作嘛,这个工作它是要顺序排序的,所以我们这里的结果是一,然后 c 的 话是分数嘛,它的结果是负一,因为它是要降序,然后最后按这个 id 进行一个顺序排序,所以这里的结果也是一,那这里的话我们计算一下它的一个排名, 就按照这个分数计算一个排名,那这个排名第一个我们是默认打上一的,那方便我们做一个其实的累计。 那第二个呢?就是我们只要判断他的这个岗位名字是一样的,那他就在这个一的基础上进行一个累加,所以我们可以看到这里是一十九加一,那如果说,比如说这个 c 加加和加法中间他是不一样的,那这个词的起始值就变成了一, 所以这个是我们一个累加函数的设置规则,我们就能得到这样的一个排列结果。最后我们用一个修改函数进行一个筛选,因为他要找出每个岗位排名前后的用户, 所以我们只要筛选出这个一而二就行了。只要我们用 filter 进行一个筛选,然后这个值这一列的值小于等于二,我们就能得到对应的一个结果。如果觉得本期视频对你有帮助,记得点赞、收藏,关注三连,我们下期再见。

是今天中午的这个学习,今天中午呢,咱们主要是给给大家来介介绍一下啊 sql 的 相关的知识,那么 sql 呢,就是咱们的结构化的查询语言,通过使用 sql 呢,能够查询存储在关系型数据库当中的知识 啊,关系型数据库当中怎么数据啊?因此呢,咱们希望通过今天中午的学习,能够让大家对 sql 呢能够有一个进一步的了解,并且呢, sql 它是咱们后续 学习关系型数据库,或者说是学习大数据技术呢非常重要的一个什么基础的一个知识?因为呢,我们在这个关系型的数据库当中,不管是你的 oracle 也好, my sql 也好,那么只要是关系型数据库,它都支持我们的 sql, 那 同时呢,我们在整个的大数据体系里面, 比如说你在这个 hash 里面,或者说在 spark 里面等等,这些里面呢,它都提供了这种什么呢?数据分析引擎,那么通过使用大数据的什么呢?数据分析引擎,它就能够使用这个标准的什么呢? sql 语句 来去分析和处理我们的大数据,因此呢,学习好 coco 是 咱们后续学习数据库,包括呢学习大数据呢非常重要的一个什么基础的知识? 那大家哈之前哈听过赵老师的课程呢,应该都知道哈,赵老师呢在上课的这个过程当中, 会给大家记录一个课堂的一个笔记,那么通过记录课堂笔记的这种方式,我们会把课程里面呢比较重要的知识给大家记录下来, 因此呢,今天中午呢,咱们也会按照同样的这种方式来给大家记录一个课堂笔记,重点给大家介绍以下三个方面的知识。 首先第一个部分, coco 的 基础知识,那这个里面首先咱们就需要知道哈到底什么是什么是什么,是啊,什么是我们的 coco, 那 么了解到 coco 的 什么基本的概念以后呢?好,咱们还需要去了解一下 coco 的 什么类型,那么我们可以把整个的 coco 语言一共划分成是四种不同的类型,那么这四种类型 分别是什么?稍后呢,咱们来给大家进行一个详细的介绍。那么后续咱们在使用 sql 的 时候,重点的部分呢就是使用 sql 的 什么查询语句,通过 sql 的 查询语句 select 呢,我们能够去查询数据库当中的数据。那么这个地方呢,首先咱们就需要给大家讲一讲最基本的什么呢?查询语句如何使用我们的 select 查询表中的数据, 当然我们以后呢在实践工作当中写一条 check 查询的时候不可能这么简单,那么咱们用的比较多的是什么呢?是我们的这个多表查询,还有我们的什么子查询, 那么多表查询和子查询呢,是后续我们在书写 sql 查询的时候,书写最多的两种查询语句,那么咱们稍后呢也会来给大家进行相关的介绍,那么这一个部分咱们着重呢会使用什么?会使用我们的 oracle 数据库 来给大家演示,那么这地方既然提到了 oracle 呢?顺便提一下大家后续如果要系统全面的去学习有关数据库的知识, 那么赵老师呢,强烈建议大家一定从 oracle 开始学起,因为呢 oracle 是 所有数据库当中功能最强大, 结构最复杂的一个,当你把 oracle 掌握以后,我们再去学习其他的数据库,那么就会比较简单和容易。因此呢,咱们稍后呢再讲 sql 查询的这个部分呢,将会使用到咱们的 oracle 的 什么数据库, 他刚刚提到,那么除了我们在这个关系型的数据库当中可以使用 sql 语句以外,那么我们在大数据体系里面呢,也能够使用咱们的 sql 语句,那么去处理我们的大数据, 那因为我们在整个的大数据体系里面呢,他提供了什么呢?各种各样的什么呢?数据分析引擎,后续大家 比如说你在大数据体系里面呢,看到了什么呢?数据分析引擎这六个字,那么咱们就应该反应过来,它是支持 c 口语句的。 好,顺便就问一下各位直播间同学,那么你能不能够告诉一下赵老师,我们在大数据体系当中提供了哪些大数据的数据分析引擎的名字 发送到咱们的公屏之上吗?好,如果说大家都清楚呢,就请积极回答一下赵老师的问题, 如果说大家不是很了解,就请在我们的公屏之上回复一个零,或者给赵老师呢点个赞,那么这些知识都是咱们后续呢需要系统学习的内容。好,我把整个大数据体系里面 提供的一些主要的什么呢?数据飞行引擎给大家写在这地方,比如说我们在哈杜普当中的什么 have, 包括我们在斯巴克里面的什么斯巴克 second, 包括我们在 flink 当中的什么 flink second, 还有我们的什么 presto 等等, 那么这些都是属于大数据的,什么数据分析引擎,它支持使用标准的什么 sql 语句来去处理我们的大数据。稍后呢,咱们会结合实验环境来给大家进行 demo 的 演示。好,因此呢,咱们介绍到这个地方的时候, 赵老师呢就带着大家去梳理一下,我们在今天中午呢将会学习到哪些知识。好,咱们现在咱们就按照这样的个顺序来给大家进行相关的介绍。 首先咱们看一下第一个问题,什么是 coco? 好, 各位直播间同学,你能不能够把 coco 的 最基本的定义或者说他的全称发送到咱们的公屏之上。好,如果说大家知道,那么就请积极回答下赵老师的问题, 如果说大家不是很了解,就请在公屏之上回复一个零,或者给赵老师呢点个赞啊! 好,感谢咱们的无所事事同学。那么结构化查询语言好,这地方我们写下。首先咱们需要知道哈, sql 的 什么,它的这个全称是什么?那么它的全称是我们的什么 sql 格式的什么 query language, 那 么这个呢,你如果说把它翻译成是中文的话,那它就是刚刚这位同学说的啊,就是我们的什么 结构化查询语言。那么换句话去说,通过使用 sql 的 什么结构化查询语言好,咱们只能够去处理什么结构化的数据, 那么什么又叫做结构化数据呢?结构化数据它就表示我们能够使用一张什么呢?二维表的行和列的这种方式 表示的数据,那么就是我们的结构化数据。那么在你的什么呢?在你的这个关系型数据库当中啊,咱们写几个,那比如说在你的这个关系型的数据库里面,比如说刚刚提到的嘛,我们的 oracle, 还有我们的 my sql, 包括 p、 g、 m, 当然这里呢还可以涉及到各种各的什么国产的数据库,比如说国产的达摩啊,对泰迪 b 啊等等等等,这些 都是属于传统的。这什么关系型的数据库,那么我们在关系型数据库里面呢,都它的数据存储形式都是这种二维表的行和列,那么咱们呢就能够使用标准的 sql 语句 来去查询分析这种类型的数据。好,这个呢是整个 sql 那 么最基本的一个定义,那么你去反过来去说,那么你通过使用 sql 语句呢,咱们就不能够去处理,纯不能够处理我们的半结构化, 或者是我们的非结构化数据。好,因此讲到这地方,我们就把整个 sql 的 最基本的定义, 基本概念呢,都给大家做了个什么简单的给介绍。好,问一下各位同学,这个部分应该都听明白了吧,很简单。对,好,如果大家这个部分 都听明白了呢,请在公屏之上,请给赵老师呢回复一个音,或者给赵老师呢点个赞,让赵老师呢能够了解到大家都还能够跟得上赵老师的节奏啊。好,了解到了什么最基本的概念以后, 接着呢,咱们就讨论一下我们的第二个问题, coco 的 类型。好,问一下各位直播间同学,你能够告诉一下赵老师吗?我们可以把 coco 语言划分成是哪几种不同的类型, 你能够把这几种类型的名字发送到咱们的公屏之上吗?尽管咱们讲 coco 语句看似非常简单, 但是呢,我们在使用 sql 的 时候还是有很多的细节,那需要大家去注意啊,所以好,咱们讲 sql 呢, sql 语言啊,咱们一共呢可以划分成四种不同的类型, 那么这四种不同类型里面呢,它都包含了哪些语句?这个呢,是我们在学习之前都需要重点了解的什么知识。先把这四种类型的名字先给大家写在咱们的课堂的什么笔记上。 好,首先咱们讲 sql 什么?第一种类型叫做我们的吗? d n q l 语句,好,接着写它的什么?第二种类型 叫做咱们 d m l 语句,然而它的第三种类型是我们的 d d l 语句,它的第四种类型是我们的吗? d c l 语句。那么因此呢,我们可以把整个 c 口语言 一共划分成是这四种不同的类型。对,那么咱们接下来呢,就需要详细的去讨论一下,在这四种类型里面, 它们各字母包含哪些语句。好,首先咱们看一下,我们的第一种类型就是我们的 d q l 语句,那么它的全称是什么呢?大家需要知道一下,让就是我们呢 daytime, 我 们的这个 quarry language。 好,如果呢,你把这个呢翻译成是我们的中文的话,它就叫做数据查询语言,通过数据查询语言,当然就能够去查询表中的数据,它重点指的就是我们的什么 siri 操作。那么后续我们在书写 c 口的时候,绝大部分情况都是使用什么 d n q l 语句,通过查询语言查询表中的数据。 而咱们稍后呢,重点也会给大家讲如何使用查询语句查询表度的数据?好,了解到了第一种类型以后, 再来看一下我们的第二种类型,叫做 d m l 语句。那么这地方呢全称大家呢还需要去了解一下,那它就叫做我们呢? datam manisma pune listening 我 们的 language。 好, 如果呢,咱把这个呢翻译成是我们的中文的话,它就叫做我们的什么数据操作语言。 好,问一下各位直播间同学,我们在 d m l 里面呢,包含哪几个操作?你能够把这几个操作发送到咱们的公屏之上吗?对,好,如果说大家都知道呢 啊,就请积极回答一下赵老师的问题啊,如果说大家不了解,就请在公屏之上回复一个零, 或者给赵老师呢点个赞。 d m l 里面呢,包含哪几个操作呢?好,咱们讲我们在 d m l 里面呢,主要包含我们的插入, 我们的更新,还有我们的什么删除操作。好,这三个操作共同组成了我们的 d m l, 同时它也组成了我们的事物。那么怎么讲事物的这个 transaction 是 我们在关系型数据库里面呢非常重要的一个特征,那么目前你的这个 lucy com 还不能够取代关系型数据库呢,很重要的个原因就在于我们的这个 low c 口数据库呢,还不能够严格的去支持事物的 a, c, i, d 属性。那么关于事物的更加系统的知识呢? 赵老师呢,会在后续的直播课里面呢,单独的给大家进行介绍。对,好,咱们今天中午呢,中午着重呢讲我们的 c 口的这个部分。对,好,咱们讲事物里面, 它包含我们的插入,更新和删除,那反过来就说我们在事物里面呢,并不包含我们的查询语句。对,好。这个地方既然提到了我们的事物,简单的问大家一个问题, 那大家能不能够告诉一下赵老师呢?那你在关系型数据库当中,不管是 oracle 里面, my sql 里面都是一样的,在提交事务的本质是什么?那么当你执行一个 commit 操作事务提交成功以后, 到底什么叫做提交成功?他,他的本质是什么?那如果说大家知道他的本质,能不能够告诉一下赵老师啊?如果说大家不了解, 那就请在公屏之上,请给赵老师呢回复一个零,或者给赵老师呢点个赞。好,这些涉及到数据库系统原理更加深入的知识。当然了,赵老师呢也会在后续的直播课里面 单独的来给大家进行相关的介绍。对,好,接着讨论一下我们的 c 口的第三种的类型 叫做我们的什么 d, d, l 语句。那首先大家需要知道它的这个什么呢?它的这个全称,哈,那它的全称叫做我们什么 date, 我 们呢? definition language。 好, 如果呢,你把这个呢翻译成是我们的中文的话, 它就叫做我们的数据定义语言。那通过使用什么 d, d, m, l 的 数据定义语言,我们能够去操作和管理我们的数据库的对象,那么什么又叫数据库的对象呢? 你在数据库里面,你操作的都是数据库的对象,比如说有我们的什么,我们的表, 我们的视图,我们的,所以包括我们的存储过程,存储函数,出发径等等。那比如说你要去创建一张表, 我要去创建一个什么存储过程,修改个视图等等,这些操作数据库对象的语言都是属于我们的 d d l g。 对, 好,这呢是我们 sql 的 第三种的类型。好,接着去讨论一下 code 的 什么第四种类型叫做我们的 d c l 语句。那么什么又叫 d c l 呢?大家需要知道一下它的全称,它叫做我们的 datam, 我 们的 control language。 好, 如果呢把这个呢也翻译成中文的话,它就叫做什么数据控制语言。 那最典型的两个 d c l 语句呢?一个是我们的这个什么光腿语句,一个是我们的 oral 语句。好,问一下各位直播间同学,你能不能够告诉一下赵老师,这个地方的光腿语句 和我们的 reverclip, 那 它的功能和作用分别是什么?好,跟刚刚也是一样的,那么如果说大家都知道呢,就请积极回答一下赵老师的问题, 如果说大家不了解,那么就请在我们的公屏之上回复一个零,或者给赵老师呢点个赞。好,因此咱们介绍到这个地方的时候,那赵老师呢就把整个我们在学习 c 口之前 需要大家了解的什么呢,这些基本的知识都给大家做了个什么详细的一个介绍在,尽管这些基础的知识 非常的简单,但是呢,赵老师认为越是基础的知识,那么越是重要。那么如果说大家认同赵老师的观点,就请给赵老师呢回复一个一,或者给赵老师呢点个赞。那好了,这样的一些基础的知识以后, 通过刚刚的这讲解,对,好,咱们提到了在我们在书写 sql 的 时候,对,最重要的就是书写它的什么查询语句,那么通过使用查询语句, 咱们去查询表中的数据,对,那因此呢,咱们首先就需要知道一下整个查询语句 select, 它的最基本的一个语法格式,它会是个什么样子的?好,给大家看个什么语法的好,大家现在看到的什么呢? 这个语法格式就是查询语言的最基本的语法格式,通过使用什么呢?我们的关键字,我们的 from 指定,你想从哪张表当中查询数据,对不对?前面的关键字母 c, s 呢?是指定的是查询表中的哪些字段, 那这个地方的新号代表表中所有的列列,你也可以指定具体的什么呢?列名表达式,或者是列表达式的这个什么别名?那通过使用这个 distinct 关键字好,咱们呢可以去除表当中重复的数据。好,了解到了什么呢?查询语句的 最基本的一个语法格式以后,现在呢,咱们通过具体的什么 demo 的 演示,看一下如何使用这个查询语句,咱们去查询表中数据,好切换到咱们的实验环境当中去。 那么刚刚提到赵老师呢,在这个地方用到的数据库,说一下是我们的什么呢? oracle 数据库,对,把刚刚的那句话要重复一遍, 如果说大家后续你要系统全面地去学习有关这个 oracle 有 关数据库的知识,不管你是学习学习关系型数据库也好, 还是学习 oracle, 只要你想学习数据库的话,赵老师呢,都强烈建议大家一定从我们的 oracle 开始学起,因为呢, oracle 是 所有的数据库的这当中 功能最强大,结构最复杂的一个,那么换句话就是说,如果说你把这个 oracle 掌握以后呢, 你再去学习其他的数据库呢?当然就会非常简单和容易的。好,咱们进到咱们 oracle 的 环境当中去, 好,直接把我们直接执行一条命令,将 ccom plus 斜线啊,这什么 c is dba, 好, 直接使用咱们管理员用户呢?连接 登录上来,好,当你连接登录上来以后呢,你看到的这句话,它被打印输出好,我们连接到了一个什么呢?空闲的使命上, 那这句话表示什么意思呢?表示当前的 oracle 数据库使命啊, oracle 数据库什么 实力?它没有启动,对,那什么又叫实力呢?那么我们在数据库里面,不管是关系型数据库还是 lo c 口数据库呢,都是通过实力 来去操作存储在数据库当中的数据。对,好,这一些知识呢,当然当然赵老师也会在后续给大家介绍什么啊?介绍这个 oracle, 介绍 my sql 的 时候,那么再来给大家进行更加系统的说明。对,好,既然你没有启动 好,咱们直接的去执行跳命令叫 start up, 启动数据库实体以后, 我们呢就能够通过实令去操作存储在数据库当中数据,执行一个最基本的一个什么查询语句,比如说我们能够去查询我们的员工表。对,好,咱们这地方清一下屏,清完屏以后呢,切换到一个什么 普通的用户上,对,好,这个用户上面呢,有我们的员工表,有我们的部门表,首先咱们通过一条查询语句,查询 员工表当中的所有的员工的数据。对,好,咱们给执行什么?一个 select 方,我们的心方,我们的 tab。 那 这句话表示什么含义呢? 这句话它表示我们在 oracle 里面的查询当前用户下面的表,或者说是试图。那么通过输出的什么信息 好,咱们会发现呢?这下面呢,有很多的表。对,其中有一张表是我们的 dpt 表,这是我们的部门表,还有一张表是 emp 表,他是我们的员工表。对,现在呢,咱们通过一条最简单的查询语句 查询员工表这个数据,这个里面呢,一共包含有什么?十四条员工数据? cell, 什么?我们的新号发我们的音频,那新号代表什么呢?代表表中所有的列。那通过查询语句啊,咱们看到呢,这个里面一共包含有什么?十四个员工的数据, 每一个员工它包含有八个列。好,这地方换行显示了的。好,咱们可以调整一下列的什么这个宽度,让它显示的好看一点点。好,重新去执行一下。好,这个里面一共包含有什么? 十四个员工,每个呢,它里面有八个列。简单解释一下,这八个列的什么呢?基本的含义是什么?首先我们的第一个列叫 emp number, 代表员工的员工号。第二个呢, em 代表员工的名字。第三个呢, job 代表员工的职位, mgm 代表员工的老板号,因为员工的老板也是公司的员工。对,就是员工老板的员工号。对, card payment 是 这个员工的什么入职日期? s a l salary, 它什么月薪, commission, 奖金,最后一个点呢?是底薪。 最后一个的呢是 the part number, 员工所在的部门号,很明显呢,员工所在的部门号,它跟部门表应该是一个外界约束的一个什么关系?因此呢,通过使用这样的一条非常简单的查询语句, 那么咱们就查询出来了什么员工表单的所有的数据。对,当然你在查询的时候,你也可以指进你想具体查询哪些具体的列对。比如说我只想去查询员工的姓名 和他的薪水,我只查询这一两个列,是不是也可以啊?对不对?好,也是发我们的 e m p 表,通过输出信息。好,咱们看呢,有员工的名正包括他的什么薪水,对,这地方呢?他还进行了什么?进行了,我们的分页显示, 你能够把这两页呢显示在一页上。对,写一个什么 set, 编辑 size, 设置页面大小呢?每页呢显示二十条记录,右斜线表示执行 上一条执行过的 c 口语句。那通过使用这种方式呢?就十四条员工数据,那么就显示在什么一页上面呢?对,当然我们还可以在 刚刚的问题之上,我们可以去进一步。那你在查询的时候不是还支持我们的表达式吗?对,比如说我想去查询什么啊?清下贫寒。对,我想去查询员工的姓名,还有他的什么这个薪水。 后面呢,我增加一个链,代表员工的年薪,如果一年他是发十二个月的薪水, 月薪乘以十二,是不是就是年薪?因为我们在 c 口语句当中支持使用算术表达式,加减乘除都是可以的啊。对,他薪水乘以十二,放我们的什么这个员工表。那通过使用这种方式, 我所得到的第三个链就是这些员工,他的什么呢?年薪,年薪等于什么呢?月薪乘以十二。那么我们在刚刚的这个问题之上, 我们能不能够再去进一步呢?比如说我再来写一条查询语句,我要去查询什么月薪, 查询员工的名制,他的月薪,他的奖金包括什么?他的什么年薪。最后一个呢?我再增加一个时段,我要去查询他的年收入,年收入 等于什么呢?等于我们的年薪加上奖金啊,加上奖金,血薪乘以十二,是我们的年薪加上奖金。那通过从这种方式,我是不是就能够得到他的年收入?好,这地方呢?赵老师就需要问大家一个问题, 现在的这条 c 口语句,那能不能够得到正确的年收入?如果说大家觉得可以得到,那么就请给赵老师呢?回复一个一,如果说大家觉得,嗯, 不能够得到,那么就请给赵老师呢回复一个零,那这些看似非常简单的问题, 都是我们在书写 c 科的时候需要大家重点关注的一个地方。好,赵老师呢,简单重复一下刚刚的这个问题啊,通过现在的这条,嗯, 通过现在的这条查询语句,我们能不能够得到正确的这个年收入? 如果说大家觉得可以得到,那么就请在我们的公屏之上呢?回复一个一,如果说大家觉得不能够得到, 那就请在我们的公屏之上回复一个零。对,好,咱们直接的去执行一下这条 c 口语句,那不就可以了吗?对,好,通过执行这条 c 口语句,那么你得到了什么?下面输出的这个结果,那通过观察这个结果,大家 可能会发现,对,因为所有的这个员工,他都是有什么呢?都是有月薪的,但是为什么 有些员工的这个年收入它是空值呢?因此呢,你很明显呢,你所得到的结果它是一个不正确的一个结果。对,那通过这地方的观察,大家会发现年收入 为空的这员工,那他的奖金都为什么呢?空值,那一旦遇到的什么这个空值问题,大家需要非常的什么就注意啊,因为空值有可能会造成最后的结果的不正确。我把这个需要大家 注意的问题给大家写在咱们的课堂的什么笔记上,哪个问题呢?就是在 sql 语句当中啊,咱们在 sql 语句中不对,包含什么呢?空值 啊,前面写包含空值的什么表达是 m, 都是 m 空值。那这句话请直播间的各位同学一定一定要记住啊,那我们在 second 语句当中,真删改查都是一样的,包含空值的表达是 m, 都是空值。对,因此呢,大家后续你在书写 c 口的时候,一旦遇到了空值,那需要非常的什么小心,因为呢,它有可能会造成结果的这个不正确。但是呢,我们这个地方呢,就需要有一种方式, 把你的这个什么空值转换成是我们想要的一个值。对,通过使用我们的这个什么律空函数,你就可以把空值转换成是一个想要的值。 那刚刚咱们的这四例呢,会发现,奖金为空,实际上是代表奖金为零。对,因此呢,我们在 oracle 里面,包括你在其他数据库当中都是一样的, 我们就能够通过使用律空函数,把空值转换成是一个想要的值,咱们这个地方呢,想要的是零。对,好,咱们直接在命令行上敲一个什么 e d 命令,它会把上一条的什么 c 口语句 放到系统的默认的编辑器当中。好,咱们这个一个默认编辑器是我们的 linux 吗? vi 的。 好,放到 vi 里面来一下,我们就能够去修改咱们的 c 口语句。对,加上一个什么滤空函数 n v l d n v l 表示什么含义呢?我们写下我们的,我们的,我们的 n v l, 它表示当这个值为空的时候,返回后面零,如果这个值不为空呢?返回这个值的本身。因此,通过使用什么这样的一种方式, 我就把奖金为空,都转换成了奖金为零。零是一个数字, 他不是一个什么呢?不是一个控制,通过使用这样的一种方式,我就能够得到正确的结果的。好,怎么这个地方 怎么这样保存退出的?修改完以后呢?敲一个右斜线,直行上一条 c 口语句,那通过使用这样的一种方式, 我所得到的所有的员工的年收入都是一个正确的值。对,好,因此讲到这个地方时候,我们就把整个 sql 当中 最基本的什么呢?查询语言如何去使用?那都给大家做了什么?做了一个非常详细的一个什么 demo 的 演示。好,这地方赵老师呢就需要顺便问大家一下, 那关于刚刚演示的 demo 的 设定,大家是不是也都看明白了哈?如果说大家都看明白了呢? 那就请在我们的公屏之上,请给赵老师呢回复一个音,或者给赵老师呢点一个赞啊!好,咱们接着往下来给大家进行相关的介绍。当然哈, 当然咱们后续你在书写这个 c 口的时候,不可能像咱们刚刚这么简单,不可能只去查询一张表中数据。对,好,比如说我们要去查询我们的员工表, 包括我们的部门表,你要去查询员工表和部门表的话,至少就需要去查询两张表。因此呢,你通过使用多表查询语句 能够去查询多张表格数据。通过只查询能够去解决什么问题呢?解决查询语句的什么签套问题。对,但咱们这个地方重点以我们的什么呢? 重点以我们的这个多表查询来给大家进行相关的。这什么?这,这个介绍刚刚提到通过使用什么多表查询能够去查询多张表中数据,那么咱们在讲这个什么呢?在讲这个多表查询之前, 首先要来给大家介绍个什么,介绍一个数学上的概念叫做我们的什么,写下他们叫做我们的这个迪尼卡尔吉他叫迪尼卡尔吉的好,迪卡尔吉他是我们多表查询在数学上面的一个 理论的一个基础。对,正因为有了迪卡尔吉,才会有我们的这个多表的查询。对,那既然他是 多表啊查询,那么他在数学上面的一个基础,那么我们在数学上面针对迪卡尔级呢,有一个非常严谨的一个数学的一个定义。好,这地方呢,我们不讲那个定义。 赵老师呢,想要通过一个设定来讲到底什么是迪卡吉的好这地方呢?赵老师准备好了两张表,分别是我们的员工表和我们的部门表的员工表里面他有什么呢?他有我们的 这个三行四列数据,部门表里面呢,他有两行两列数据,那这两张表他们要执行多表查询的话,首先会产生迪卡尔吉啊, 迪卡尔吉通过什么方式表示出来呢?通过咱们这个什么成号去表示,他们写下,我们写上我们的员工表啊,我们的员工表 呈上我们的部门表,表示这两张表的迪卡尔吉他也将会是一个大的一个集合,也会是由行和列组成。好,这地方赵老师呢,就需要问大家一下,大家能不能够 告诉一下赵老师,那这两张表他们所生成的迪卡尔吉,他们将会有多少行? 将会有多少列?先说我们的列数,对,员工表里面呢,有四列,对,部门表里面呢,一共有两列,那么他们所生成的的卡结将会有六个列,列数等于每张表的列数相加, 那么哪六列呢?员工表的这四列,首先组成迪卡尔级的什么前四列?部门表的这两列,他组成迪卡尔级的什么后两列?那么好,咱们列数这地方确定下来以后, 再来确定一下他的什么行数行数。员工表当中一共有三行数据,部门表里面呢,一共有两行数据,那这两张表 他们所得到的的考勤将会有什么呢?将会有六行数据,哪六行呢?员工表的第三行的数据, 先跟我们的部门表的十号部门的第一条记录组合生成 dikk 级当中的前三条数据。那按照同样的这种方式, 员工表中的什么这三条数据,他跟部门表中的第二条记录二十号部门组合生成后三条记录。因此呢,咱们通过使用我们的什么这个函数相加 列数啊,我们通过列数相加,行数相乘,那如果你有三张表,那你有四张表,也是按照同样的种方式的,那列数相加行数相乘,我们得到的这个大的集合就叫做 多表查询的迪卡尔集。但是呢,请大家注意下,那么我们在迪卡尔集当中,你所得到的集合里面 不一定每条数据都是正确的,那换句话去说,我们在迪卡尔极当中可能会包含一些不正确的数据。很简单的呢,来分析一下,比如说咱们看一下我们的第一条记录,张三, 那张三他从黄色这边看,他是我们的什么呢?十号部门的,那他从蓝色这边看呢,他也是十号部门的,这两个什么部门号他是 相等的,因此呢,这条迪卡尔级的记录呢,他就是一条正确的记录。好,再看一下我们的第二条记录,你是 那么李胜,他从黄色这边看,他是二十号部门的,那他从蓝色这边看呢?他是十号部门的,很明显,这两个部门看,他是不是 就矛盾了?因此重复一遍,我们所得到的迪卡金里面,不一定每条数据都是正确的,迪卡金里面有可能会包含一些 不正确的数据,而我们要执行的什么呢?我们要执行的这个多表查询,就是通过指定一些条件,从这个什么呢? 从这个迪卡全集啊,那这个呢,就是我们迪卡全集,从迪卡全集全集当中选出一些正确的数据来满足咱们的这要求。 好,既然是如此的话,那结合咱们现在的数据来说,大家看一下,那只要满足一个什么样的一个条件,那这条数据 就是一条正确的数据呢?这么这个是不是就很简单,那很明显就应该是我们的什么呢?黄色这边的部门号呢?部门号如果相等 这条数据,那是不是就是正确数据?那如何把它给表示出来呢?我们写到我们的,对吧?表格的这个旁边好表示出来,它这样子的就写下合并一下单元格。那咱们的什么?这个 黄色这一边它是员工表,它的部门号等于什么呢?等于蓝色这边 部门表的部门号。如果说这条件成立的话,这条数据是不是就是一条正确的数据? 他再把这个条件叫做什么?叫做多表,查询的什么这连间条件?对,他们为什么要有连间条件呢?有了连跌条件以后啊,咱们就能够去避免使啊,咱们这样重新写下吧,这,这地方, 可能这地方他在,我在我表格里,他想他们写下刚刚的条件。好,这边是员工表的什么部门号?第一批 number 等于什么部门表的吗?部门号, 好,这个条件刚刚说过,他可以叫做什么?把它叫做多表,查询的什么这个连接条件,那为什么要有连接条件呢?那有连接条件以后呢? 我们就能够避免使用 decar 全机,因为在 decar 全机里面呢包含一些 不正确的数据,那就连接条件,它跟这个表的个数,它有一个 连,有一个什么对应关系,什么关系?连接条件至少要至少有什么 n 减一个,连接条件至少有 n 减一个。好,顺便问一下各位直播间同学们, 能不能够告诉一下赵老师,这个地方的 n 代表什么含义?你能够把这个地方的 n, 它所代表的含义发送到我们的公平条件发送到我们的公平之上吗?连接条件至少有 n 减一个 n 代表什么? n 代表表的个数。 如果说你有两张表的话,至少就有一个连接条件,那你有三张表呢?至少就有两个连接条件。那通过使用这样的一种方式, 我们大概呢就能够初步判断出来你所写的什么,这个多表查询语句是不是一个正确的。什么呢? 多表查询好的这些基本的知识以后,他们通过一个简单的视例来看一下如何使用多表查询,查询多张表中的数据。 好的,咱咱们就刚刚举一个例子。好,咱们去查询什么?查询员工信息啊,要求显示 员工的名字和他所在部门的部名称啊,那么需求呢?显在咱们的这地方,需求咱们知道是这样的,咱们的这个问题啊,问题呢,相对的比较简单一些的,我要去查询什么员工的信心, 要求显示什么内容呢?要求显示我们的什么员工的员工的姓名和他所在部门的什么部门名称。那很明显,员工姓名呢?我们需要去 查询员工表,而部门名称需要去查询部门表。对,好,看一下部门表里面数据包含哪些数据。对,好了,这样清一下屏,对,好。 cs 吗?我们的心发我们的部门表, 通过查询语句啊,咱们可以发现呢,部门表里面一共包含四个部门,它有三个列,分别是部门的部门号,部门名称和部门的什么 location。 很 明显呢,现在呢,咱们就需要通过执行一条 多表查询语句,从这两张表里面呢来获取咱们相关的数据文件。它直接在命令行上敲 ed 命令,它会把上条 c 口语句 放到系统默认的编辑器当中,这样子可以用编辑去咱们修改的。好,现在你要去执行我们的多表查询,那你在方宇之后呢,就需要写上两张表或习惯呢,先写我们的方宇员工表和什么部门表,中间是 逗号分割,那我习惯上还可以给表呢,起上一个别名员工表,他叫做我们的 e 表,部门表叫做我们的吗? d 表。按照刚刚说的,你有两张表的话, 至少就有一个连接条件,很明显呢,什么写上咱们的 where, 对 这个连接条件就应该是什么员工所在的部门号, 等于部门的什么部门号,如果说这个条件成立的话,那这个员工他就属于这个部门的,是不是?而且连的条件避免使用抵抗全级。而咱们前面呢,需要去查询呢,前面需要去查询员工的姓名, 还有他所在部门的部门名称。他通过使用这么样的一种方式,我就得到了个什么等值连接的一个多表查询,查询员工表 和部门表态。好,那么这个地方保存退出,按一个什么右斜线表示执行上一条 c 口诀,通过执行上一条 c 口诀,我就得到了所有员工的名证,包括他所在部门的 部门名称。意思啊,就是这个呢,就是咱们什么多表查询,对多多表查询呢,大家首先需要去掌握到底什么是我们的这个什么迪卡尔级的。好,一从讲到这个地方的时候,嗯, 赵老师呢就需要问大家一下,那关于这个多表查询的基本的知识,大家是不是都听明白了? 如果我们刚刚讲的这个多表查询的知识大家都听明白了,就请在我们的公屏之上,请给赵老师呢回复一个音,或者给赵老师呢点个赞,让赵老师呢能够知道 大家都还能够跟得上赵老师的节奏。对,好,关于此查询,赵老师呢会在系统课程里面再给大家去做详细的介绍。对,因此整个查询语句这个部分呢,我们都是使用的是 oracle 来给大家进行演示的,因为 oracle 呢,它是属于我们的关系型数据库,当然支持我们的 sql 语句,当然我们在大数据引擎里面呢,也支持使用 sql 语句来去处理我们的大数据。比如说哈多普当中的什么 have[cls][plhd30],spac 当中的 spacisco 么? link 当中的么? linkisco, 还有我们那种 presto 等等,这些都是属于什么?都是属于大数据的数据分析引擎。对,通过使用大数据的数据分析引擎, 我们就能够使用标准的 sql 的 语句来去分析,存储在大数据体系当中的,它既能够处理我们的 离线数据,也能够处理实时流速数据。好,这地方呢,我们简单的给大家演示一个 demo, 对, 我们就用什么就用这个十八 cisco 吧,那通过使用什么这个十八 cisco 的 方式, 你在十八克里面,你就能够通过使用标准的 cisco 去你既能够去处理呢存储在 h d f s 的 数据,抓处理离线数据,也能够处理卡夫卡当中,对吧?流逝数据出来,进一步去构建你的什么这个离线数仓,包括我们的实时数仓。那关于这个里面 大数据的更加系统的知识,那请大家呢关注一下。赵老师呢后续的这个直播也会单独的给大家进行相关的介绍好吗?到我们的十八个里面, 通过我们的斯巴克 cipher 执行我们的标准,是吧? cipher 语句,对,好,赵老师呢,先去把我们的什么 cipher 呢?先去给什么停止下来,停止下来以后呢,去启动下我们的 这斯巴克的这个集群,对啊,下单我们的 intermediate, 通过这条语句能够正常关闭我们的 oracle 数据库,那么当当你正常关机的时候, 它就会自动触发一个完全检查点,对把内存中的所有的脏数据都写到数据文件上进行持久化。那么这些关于 oracle 的 什么呢? 体系架构知识,原理知识呢?赵老师呢,也会在后续给大家讲 oracle 的 时候,那重点呢,单独的来跟大家进行相关介绍,因为咱们今天中午呢,主要是讲 coco, 对, 那么结合大数据环境来给大家演示一下如何在我们的大数据 体系里面执行我们的 c 口诀。好,先去把咱们的 oracle 呢先去停止下来,再去把我们的这个斯巴克群重新给它启动下,通过启动斯巴克群,你就能够执行 标准的呢 c 口诀,它会把一条 c 口语句转换成是一个什么斯巴克语序呢?运行在我们的斯巴克群之上, 好,我切换到我们的这个 root, 用什么来对,好?进到斯巴克的安装的路径下执行 s b 下面是吧?四 dot o 的 脚本,它将会去启动斯巴克的主节点, 也会启动它的重节点,主节点叫做我们的 work, 因此它是一种什么架构呢? 它是一种我们的主从架构好,我们在大数据体系里面呢,主要的组建都是一种主从架构好。顺便问大家一下,你能不能够告诉一下赵老师, 这种主从架构他所存在的最主要问题是什么?如果说大家知道,就把他存在的主要问题呢发送到我们的公屏之上,如果说大家不了解,那么哦 也没有关系,就请在我们的公屏之上,请给赵老师呢回复一个零,或者给赵老师呢点个赞。对,好的,接着往下来给大家进行相关的介绍。 当你把十八 g 群启动完以后呢,他给我们提供了一个图形画的工具端口号是我们的吗?八零八零端口, 我们就能够打开斯巴克群呢图形的监控的页面,通过大家现在看到的这个界面,你能够去监控我们的这个斯巴克群。如果说你有计算任务啊,运行在斯巴克群之上, 通过大家现在看到的这个界面,你也能够监控任务的执行的状态的,并且呢在在这在这个页面的什么最上方 有一个非常重要的地址,告诉我们斯巴克地区主节点在当前主机的什么七零七七端口之上,主节点负责接受任务请求啊,还有了这些基本知识以后, 当你把 spa 请动完以后,它提供了一个什么命令行,就是我们的 spa-cinem, 你 就能够直接执行我们的 coco 语言。好,演示一下执行并下面,是吧,我们的 spa-cinem 通过刚刚 master 的 参数指定主节点在哪里,那么通过刚刚的网易来看到主节点就在当前主的什么 local host 吗?七零七七的什么端口之上的。当你执行一条 c 口语句的时候,它 会提交到语句上去运行,并且把这条 c 口语句转换成是 十八克的任务呢,运行在十八克的值之上。既然是如此的话,通过刚刚的那个什么图形化的界面, 我们就能够去监控 coco 啊,这个任务呢,它的一个运行的一个状态。好,这地方我们稍微等一下的,进来以后,首先咱们去执行一个修 tables, 看一下你在十八克 coco 里面, 你事先创建好哪些表。对,好,我们稍等一下,好,进来以后。哎呀, ctrl m 清一下屏先,我们了吗?这 table 这句话 不是跟你在 my sql 里面是完全一样吗?通过输出的信息。好,怎么了?这个里面应该事先没有创建任何的表。对,稍等一下,好,现在咱们就能够使用标准嘛, sql 使用我们的 d, d, m, l 语句, 我们呢就能够去创建表,表创建成功以后呢,我们能够往里面插,我们能够往里面 插入数据,也能够去查询数据。好,这里面有一张表是我们的啊,咱们这个样,有一张表叫我们的。什么是顿字,好像打出很多日证 啊,这些日字呢,不利咱们去观察这个结果,这样我们退出去,重新启动下,加上一个参数。对,加上我们呢,再加上一个 gm s 参数, s 呢大写,它表示呢启动十八 c 命令行的呢静默模式,静默模式就表示呢不要打印输出日字, 这样子呢,能够咱们便于咱们呢去观察输出的结果,你打印这字很多呢,结果呢就不便于怎么去观察。 好,重新进到命令行里来以后呢,再来去执行我们的修 table。 你 看一下这个里面,你事先创建好了哪一些表,基本上跟我们在 my sql 里面 操作非常的类似。好,这个地方咱们稍微等一会,稍稍等一会,稍等一会啊,好, 我们去清一下屏,执行一个 show tables。 好, 这些呢是先创建的哪些表呢?看一下。好,我们之前应该是创建过一张表,那个表呢?叫做我们嘛,这个是 丢等词的,你所创建的表,表的数据既能够存储在本地,也能够存储在 h、 d、 f、 s 上的。 好,我们去把这张表呢去给它什么删除掉,重新去创建一下吧,这个呢就跟你在数据库里面操作几乎是完全一样的。好,表删除以后呢,重新咱们去创建张表, 使用我们的 d、 d、 m、 l 语句的,它刻在我们那个什么 table, 这样是这样子,表那么包含三个列,一个什么 id 号,它是一个整数, 再来一个名字,它是一个字母串,再来一个 a 键,它表示零的,它表创建出来以后,默认直接把保存到本机表创建出来以后,你能够呢往里面呢插入数据, 而这条 sql 语句它就会被转换成是一个斯巴克域呢,运行在斯巴克域之上。既然能够去插入数据, 我们也能够去查询数据,你所执行的什么所有的 d m q l 语句,包括 d m l 语句呢,都将会被转换成是 十八个 zero 呢,运行在我们的十八个节点之上。因此呢,这种方式呢,基本上跟我们在 my sql 里面,或者说在 oracle 里面操作几乎是完全一样的。好,刚刚我们已经执行过两条 sql, 一 条插入数据, 那么一条查询数据,那这两条 sql 语句到底有没有被转换成是 十八 k 任务呢?好,咱们去刷新一下刚刚的什么图形化的界面,进到我们的什么这个地方的,我们的这个 十八 kc 怎么在连接里面去观察一下你所执行过的什么 cq 语句好通过输出的信息啊,放大一点点,刚刚执行过两条 ccom, 一 条 ccom 是 我们的吗?插入操作,一条是查询操作, 很明显呢,这两条 sql 语句它是不是就被转换成了什么呢? sql 转换成了 sql 域呢?运行在 sql 域之上运行呢?大家后续如果说你想在大数据体系里面,你去,你去处理结构化数据的时候,尽管你可以去开发域,开发你的 java 程序, 或者是开发 scala 程序,但是呢,针对结构化数据更简单的一种方式是直接书写一条什么 sql 语句,那么就可以了。 hedon 呢,支持这种方式, spock 呢,也支持呢? flink 也支持。因此讲到这地方呢,就回到咱们今天中午呢,就开始给大家讲的,他就说咱们为什么要去学习呢? coco 呢?学习呢? coco 呢,主要有两个目的呢,写在咱们的这地方,第一个呢,它是我们后续 学习什么关系型数据库的什么基础,因为呢,所有关系型数据库,比如说 oracle 啊, my sql 都支持 sql。 对, 那后它也是呢学习什么大数据的基础。因为呢,我们在大数据体系里面呢, 也支持使用 sql 语句来去分析和处理我们的大数据。好一层,讲到这个地方时候 啊,基本上今天中午呢,由赵老师要给大家分享的知识大概呢就剩这么多,他们现在的时间是中午的一点二十九分,马上一点半了,在赵老师呢,一点三十五分, 一点三十五分,我下播啊下播。呃,剩下的时剩下的什么?