00:00
那个咱们现在的时间是晚上的九点半,那么咱们就开始今天晚上的学习,嗯,今天晚上呢,咱们来学习一下结构化的查询语言CQL,那CQ呢,总体上来说呢,它还是属于咱们的基础知识,因此呢,今天晚上的内容呢,相对来说呢,会比较的简单,那么咱们希望通过今天晚上的学习,能够让大家对我们的ccom能够有一个进一步了解,那么为大家后续的深入学习哈奠定一个基础。那么这个地方先说一下,尽管C口呢,它属于咱们的基础知识,但是呢,这个基础知识非常的重要,大家之前哈,如果听过赵老师的课程应该都知道,赵老师呢,在上课的过程当中会给大家记录一个课堂的笔记,今天晚上呢,咱们着重给大家介绍以下三个方面的问题,首先咱们需要对C口的一些基本知识。
01:00
要有一个基本了解,到底什么是ccom,它里面呢又分为了哪些不同的类型,那么我们以后呢,在学习C的时候,重点就需要掌握CQ的什么查询语句,通过使用S语句,我们能够去查询表中的数据,比如说当你使用查询语句的时候,那么咱们呢,能够进行基本的查询,比如说你的select form, 那么我们在书写C口L查询的时候,那跟中要的呢,是书写我们的什么多表查询,还有我们什么这个子查询,那么多表查询和子查询是以后呢我们在书写这个的时候最重要的两种语句,稍后呢,咱们来给大家进行详细的介绍,那我们将会在第三个部分来给大家介绍如何在我们的大数据的体系当中使用我们的C口语句,因为呢,在大数据的生态圈体系当中。
02:00
它提供了什么呢?各种各样的数据分析引擎,大家以后只要看到了这六个字,数据分析引擎,大家就要反应过来,它是支持我们的CK与dream,比如说我们的哈多put当中的have,还有我们在18课当中的18C com, 还有我们在弗Li克当中的什么弗Li克c com, 这些都是属于大数据的数据飞行引擎,他们支持使用标准的什么C口语据来去分析和处理我们的大数据,这个呢怎么放到第三个小节来给大家进行相关的介绍,因此呢,咱们现在呢,咱们就按照这样一个顺序来给大家介绍今天晚上的内容,首先看一下C课的一些基础知识,当然我们在基础知识的时候呢,首先要讨论第一个问题,就是说我们为什么哈,为什么要学习我们的CQ?
03:00
CQ呢,尽管它是基础知识,但是呢,这个基础知识它是非常的重要,那么咱们学习CQ呢,主要有两方面的原因,首先学习c com, 它是我们后续。学习什么学习关系型数据库的什么基础,同时它也是我们学习什么大数据技术的什么基础,那么基于这样的原因,咱们就需要好好的去学习一下到底什么是C口,首先它是关系型数据库的基础知识,不管是哪种关系型数据库,你的orac口也好,MYCQ也好,PG也好,那么他们都支持使用CQL语句再去分析和处理数据。稍后呢,咱们将会使用Oracle数据库来给大家演示如何书写我们的查询语句,查询表中数据,这些关系型数据库都是支持我们的C口语句的,那么同时CQL呢,它也是我们后续学习大数据的基础,因为通过刚刚的介绍提到,那我们在大数据的体系当中提供了什么各种各样的什么数据分析引擎,通过使用这些数据分。
04:15
病情,我们就能够使用标准的CQL语句来去分析和处理我们的大数据,因此呢,基于这两个原因,咱们呢,就需要好好的去学习一下,到底什么是我们的CQL语dream,既然有了基本的了解以后呢,那么首先需要去了解,那么到底什么是CQ呢?那么咱们把它全称写在咱们的课堂笔记上,全称叫做我们呢,是structure的什么呢?Query language, 好,如果呢,把这个呢翻译成是我们的中文的话,它就叫做我们的结构化查询语言,那么换句话说,通过使用C口语dream。只能够处理什么呢?只能够处理我们的结构化数据,那么什么又叫结构化数据呢?就是说我们能够使用一张二维表的行和列表示的数据都是属于咱们的结构化数据,反之来说,它就不能够处理咱们的半结构化还有非结构化数据。那么有了基本知识的了解以后,他咱们还需要去了解一下我们在C口语言当中啊,C口语当中它的类型,C口的什么呢?类型,它分为以下四种不同类型,我先把这四种类型的名字先给大家写在咱们的课堂笔记上,首先C口的第一种类型叫做我们的什么DML语句,稍后呢,咱们来给大家详细的介绍,好,这是第一种,然后呢,第二种是什么?第二种是我们的什么这个DQL语句啊,这是c code的第二种类型,那么c code.
05:57
怎么第三种类型呢,是我们的嘛,DDLGM, 然后呢,C口的第4种类型是我们的DCG,因此呢,从功能上来说呢,我们可以把C口L语言一共划分成是这四种不同的类型,那么这四种类型分别代表什么含义呢?我们来给大家讲一讲,首先咱们看一下第一种就是我们的什么DML语句,把它的全称写出来,全称叫做我们了嘛,Datatime, 我们的many,什么poulation language, 那么把这个呢翻译成是中文的话,它就叫做我们的嘛数据操作语言,那么数据操作语言主要指的是我们的什么,插入我们的更新,我们的删除语句,那么我们把这三个操作。
06:49
统称叫做我们的DML句,当然这三个操作很明显共同组成了关系型数据库当中的什么事物,那事物呢是我们在关系型数据库当中非常重要的一个特征,目前的lowcy com还不能够取代关系型数据库呢,很重要的一个原因就在于呢,Nocy com不能够严格保证事物的acid属性,那么我们在事物里面呢,只会包含我们的插入、更新和删除,并不包含我们的查询语句,因此呢,我们给事物呢下一个准确的定义,那到底什么叫事物呢?事物呢它是由一组DML语句组成,那么这呢就整个事物的最基本的含义,那么关于事物的更加系统知识,张老师呢,也会在后续的直播课里面单独的来给大家进行相关的介绍,好看一下第二。
07:50
种类型,那么就是我们嘛,DQ l Jim, 那么把它的全称写下,它叫做我们嘛,Daytime, 我们的啊,Daytime, 我们的什么query language, 好,咱们去把这个呢,也翻译成是中文的话,它就叫做我们的什么数据查询语言,那么数据查询语言很明显主要指的就是我们的S,通过使用S句呢能够去查询表的数据,而我们以后我们在学习书写CQL的时候,重点就需要通过使用查询语句来去查询表中的数据,这个问题呢,咱们放到稍后通过具体事例来给大家进行讲解。好第三种类型叫做我们的DDLG,也把它全称写下,全称是我们的什么?
08:43
叫做我们的data Di frame lesson language, 那么把这个呢,翻译成是中文的话,它就叫做我们的数据什么定义语源,那通过使用数据定义源的DDL运,我们呢,能够去管理我们的数据库的对象,那什么叫数据库对象呢?比如说我们的表,我们的索引,我们的视图,我们的存储过程,存储函数等等,那所有你在数据库里面操作的对象都是属于数据库对象,那么你要创建一张表,你要删除一张表,你要创建个视图,删除个索引,这些语句都是属于我们的DDLG,比如说create table create, 什么index,或者呢,Drop view, 这些语句都是属于我们的数据定啊数据定语呢,它管理的是数据库的各种的对象,它整个。
09:43
E的什么最后的一种类型呢,它叫做我们的d CL ju, 也把它的全称写一下来,全称是我们的嘛,这个data啊,C呢是我们的control language, 好,咱们把这个呢,也给它翻译成是我们的中文的话,它就叫做什么数据控制啊,数据控制什么语言,那最典型的两个DCL据一个呢是我们嘛这个光RY,一个呢是我们的revolry dream, 好问一下各位直播间同学,你能不能够告诉一下张老师,这个地方的光regime dream和我们的revolcry它们的功能和作用分别是什么?如果说大家知道呢,就请把答案发送到咱们的公屏之上,如果说大家不了解呢,就请在咱们的公屏之上。
10:41
回复一个0,或者给赵老师呢点一个赞,这些知识看似呢非常的基础,但是呢,越是基础的知识越是重要啊,越是重要,好,咱们接着往下来给大家进行讲解,那么这个光头句呢,主要是授权,或者呢授予角色,而我们的revoke呢,主要用一种撤销我们的权限或者是角色,很明显呢,他跟我们的用户是有关系的,我把角色和权限授予给用户,或者呢撤销某个用户的角色和权限,因此呢,讲到这个地方的时候,赵老师呢,就把整个我们在CQ当中的一些基本的问题呢,需要大家了解的呢,都给大家做了一个非常详细的介绍,重复一遍,尽管C口的知识看似呢非常的基础和简单,但是它是一个非常重要的什么呢?基础知识因。
11:41
因为呢,它是我们后续学习关系型数据库的基础,同时也是我们学习大数据基础的基础,因此呢,这个基础知识呢,希望大家好好的掌握一下,还因此介绍到这个地方的时候,问一下各位直播间的同学还能不能够跟得上赵老师的节奏,如果说大家都还能够跟得上呢,就请在咱们的公屏之上,请给赵老师呢回复一个1,或者呢给赵老师呢点一个赞啊,我们接着呢学习我们的第二个部分使用CQ的什么查询语句,那通过咱们刚刚的介绍啊,咱们提到我们以后呢,我们在书写查询语句的书写circleq的时候,重点就需要使用我们的三从表当中查询数据,因此呢,你在书写它的时候,首先就需要对它的语法格式要有一个基本。
12:41
能了解C口呢,它本身也是一门语言,那么看一下它的语法格式,语法格式呢,总体上来说呢,还算比较的简单,对,通过这个地方红色字的关键是使用我们吗?这个S left form从哪张表当中获取出数据,那么这个地方的什么新号代表表中的什么所有列,对,当然你也可以呢,把表中所有列一个一个呢写在咱们的后面,对同时还支持我们的呢,算术表达式expression,还有我们的A式别名,对,那通过使用这个地方的distinct关键字,我们呢能够去掉表中重复的数据,因此呢,语法格式还算比较简单。那么了解到基本知识以后,现在呢,咱们就通过具体的操作来看一下如何使用查询语句查询表中的数据,好切换到我的命令行的什么。
13:41
窗口当中去对好这个地方先说一下张老师呢,用的这个实验环境呢,我使用的是我们的Oracle数据库,因为呢,Oracle数据库它支持C口的标准呢,支持的什么最严格,因此呢,我使用orac呢,来给大家讲我们的c com, 对当然你使用my c com或者呢,其使用其他的关系型数据库呢,都是可以的,可以在比如说我首先写第一个例怎然后写个注释啊对两个减号表示呢,这行是一个注释,我要去查询员工表中的什么的,所有的员工信息,对好这个语句呢,很简单,那们写一下就是我们的吧,是那个什么我们的新for应聘,那这下面呢,有张表应聘代表我们的员工表,通过执行这条查询语句,我就能够什么返回这14条员工数据,这个里面呢,每一行包含有8个列。
14:41
简单解释一下第8个列的含义,好,首先咱们的第一个列。我们的什么EP number代表员工的什么员工号,En name呢,代表员工的名字,Job呢,代表员工的职位,MGRR代表老员工的老板号,也就是老板的员工号是多少?Hard date呢?代表员工的入职日期,Sal呢?Salary代表他的月薪,CA奖金,然后de department number, 员工所在部门的什么部门号?当然我们在查询语句的时候,对,那你可以不用写新号,直接写列名呢,也可以的,比如说我要去查询什么,我再写我要比如说查询啊,我要去查询什么,查询我的员工的信息,要求显示哪几个字段呢?比如说我要显示员工号,员工的什么姓名和薪水,那么我使用具体地名呢,也能够书写我的查询语句,对,好,我们来写一下,这语句写了什么,我们。
15:48
我们的什么员工的员工号inlumber elien, 姓名薪水from什么员工表,这样子呢,我们就能够得到以下的呢,就输出的结果好这个地方呢,就会有个问题,既然写星号代表所有列,我写列名呢也是一样的,那么我们以后我们在书写C口语句的时候,应该尽量写列名还是应该尽量写星号呢?这个呢对C口的什么优化是有帮助的,好写一个注释,在这个地方书写CQ的时候,尽量使用什么,尽量使用列名代替星号,尽量使用什么列名代替我们的什么这个星号,为什么?因为针对不同的表,那么的星号,它所代表列那是不一样的,当你执行带有星号的查询语句是时候,首先它需要去解析查询数据库的什么呢?数据这里获取到。
16:48
P号具体代表的力,然后呢,查询相应的数据,那这个过程呢,它是会影响降低查询的性能,因此呢,一个基本的原则就是以后呢。
17:02
我们在书写C口的时候,尽量使用星号,要尽量使用什么列名来代替我们的星号,这样子呢,能够去提高CQ的什么执行的效率,好我们再来协调,嗯,我要干嘛呢?我还是需要去什么查询员工的什么信息,要求显示哪几个字段呢?那么第一个就字段员工,员工的什么员工号,第二呢是员工的什么姓名,第三个呢是员工的什么薪水,我再多一个店是我们员工的年薪,那如果说一年是发12个月的薪水,那么薪水乘以12,那是不是就是我们连薪,当然我们在CQ语句当中查询的时候呢,支持使用我们的算术的表达式,对,Expression对不对?好,我们写一下这套查询语句set了什么,我们的什么,我们的员工号in p number, 对,然后呢?
18:03
DM的姓名,薪水,然后薪水什么乘以12代表我的什么,这个连薪,那比如说我在写一条C口鱼的时候,如果说比误呢,写错了呢?本来我想查询12,查乘以12,但是我写成11,很明显呢,你所得到的表达式值呢,就是一个不正确的值,那么我们有没有一种办法能够很方便的在命令行的窗口里面修改我们上一条C口L语句呢?对,写错了对不对?那有同学可能会说,我直接把这条C口L语句重新写一遍不就可以了吗?但是如果一条c com比较复杂的时候,我们可以通过使用一种比较简单的方式,直接的去书写上,直接的去修改上一条C口L语句,对,我想把上条C口L语句当中的什么呢?这个11改成12,对可以吗?当然可以好,你在Oracle里面的话,直接在命令行上。
19:03
敲我们了嘛,这个ED命令,那什么叫ED命令呢?它的全称就是我们的嘛,Edit特当你敲这个命令的时候,它就会把上一条C口语句放到系统的默认的编辑器当中,对与咱们当前的操作系统s Linux是因此呢,它就会把上调C口语句放到咱们的VI的什么编辑器当中,方便咱们进行修改啊好看一下这个效果,敲个什么EDM直接回撤,好这呢咱们上调什么C口语,就现在呢,咱们进到了咱们的VI的编辑器里面啊,改一下就可以了,把这个地方的把十音改成我的这把12改完以后保存退出,这样子呢,上条C口已经就改正确了,然后呢,咱们再敲一根右斜线表示直行上一条C口诀,这样子呢,咱们呢,就能够得到正确输出的什么连心,它等于什么月。
20:03
给心乘以12,大家学会了吗?啊,如果刚刚的小技巧大家都学会了呢,请给赵老师呢点一个赞,或者呢回复一个666,好,咱们接着呢往下来给大家进行介绍对不对?我再来输入写个查询语句,我要去查询什么,我还是去查询什么,查询员工的信息要求显示哪些字段呢?比如说我要求显示我的什么员工的员工号,员工号员工的姓名,员工的什么薪水的,还有什么奖金,包括呢,他的什么年收入,那什么叫年收入呢?年收入等于年薪加上奖金,而年薪又等于什么?薪水乘以12,很明显呢,这个呢也是一个算数的表达式,对不好,我们来写一下。
21:03
这个什么C的语句好是那个什么,我们查询一下员工号,员工的姓名,对薪水,Commission代表我们的奖金的薪水乘以12是年薪,加上commission,那就是我们的么年收入,好问一下各位直播间的同学,这一条C口L语句,你在执行的时候,他能不能够得到正确的输出结果,如果说大家觉得能够得到正确结果,就请给赵老师呢?回复一个能,如果说大家觉得不能够得到正确结果,就给赵老师呢?回复一个不能,好给大家30秒的思考的时间,思考完以后请你把你认为的选型的答案呢,发送到我们的公屏之上,诶这个查询就能不能够得到正确的输出结果呢?好给大家3。
22:03
重要的思考的时间,思考完以后呢,请大家积极回答一下赵老师的问题啊。好,再给大家20秒啊,大家思考一下,积极思考一下,积极思考一下。好,那个我们来执行一下这道C口语句,看一下啦,能不能够得到正确输出的结果,对,好,看一下这个结果,那么这结果是正确的结果吗?不是对,因为所有的员工他都是有什么呢?都是有月薪的,都有月薪很明显呢,都应该是有年收入,但是呢,通过观察你会发现有些员工的年收入它是空值,因此呢,你现在你所得到的这个结果,它是一个不正确的结果,为什么会不正确呢?因为这个什么年收入的表达式里面呢,包含奖金,而奖金有一些字段它是空值,它是空值以后,它就会导致整个表达式的值为空值,因此呢,我们在C口语句当中有一个非常重要的约定,给大家记在咱们的课堂笔记上。
23:23
哪个约定呢?就是包含空值的表达式都是空值啊,写一下包含什么,包含空值的表达式啊,表表达式啊,都是什么都是空值,因此呢,当我们以后遇到了这种情况以后呢,就需要通过使用一种方式把空值转换成是我们想要的这个值,那么很明显你这个地方什嘛,奖金为空代表奖金为0对不对?因此呢,我们就需要使用率空函数,把奖金为空变成奖金为零,那怎么去做呢?敲个E定命令,把上调C口语经放到咱们的VI的什么编辑器当中,稍微的改一下,那么我们在Oracle里面对它有两个滤空函数啊,那分别是我们的嘛NVL和我们的NVL2,它们都能够去实现我们的率。
24:23
滤空功能,当然在你的MYSQL里面,在PG里面呢,也有类似的函数,也能够去完成滤空,对,我们直接使用NVL函数,把奖金为空变成我们的奖金为0,那么0是一个什么?0是一个数字,它不是空值,对不对?这样子呢,我们就能够得到正确的输出结果,好看,我们改一下这个表达式。那么由于奖金里面呢,可能会包含我们的空值NVL,当奖金为空的时候呢,返还我们0,这样子呢,我就能够保证这个表达式当中不包含空值,它就能够得到正确的什么输出的结果,对,好,咱们这个地方呢,保存退出一下来执行我们的这条C口诀,这样子呢,你所得到什么最后的这个字段,就剩这些员工他的什么年收入他都不为我们的控制,这个结果呢,他才是一个正确的结果对。因此呢,尽管C口语dream看似非常的简单和基础,但是呢,这个里面它涉及到很多的细节问题,需要大家重点的什么关注一下,还有从讲到这个地方的时候呢,整个我们的CQL当中的一些基本的查询,就给大家演示到这个地方。
25:48
好,问一下各位直播间同学们,关于什么是CQ的基本的查询,大家是不是都看明白都听明白了?如果刚刚赵老师演示的事例大家都看明白,都听明白了呢?就请在咱们的公屏之上。
26:08
请给赵老师呢回复一个666,或者给赵老师呢点一个赞,好,咱们接着往下来给大家讲我们的多表查询,或者是我们的子查询的,好,我们接着往上面讲啊,问一下大家刚刚的示例大家是不是都看明白了的,当然我们以后你在书写一个查询语句的时候,不可能像我刚才那么简单,多数情况呢,你需要去书写我们的多表查询,或者是只查询这个地方呢,与时间的限制,我们就以多表查询来给大家讲一讲,对什么叫多表查询呢?比如说我要去查询员工信息,包括员工信息,包括员工所在的部门信息,我就至少需要去查询员工表和部门表,我需要关联这两张表得到这个结果。而我们在C。
27:08
课当中执行多表查询的时候,首先它会什么产生我们的笛卡尔级,笛卡级呢,它是属于数学上面的一个知识,那么正因为有了笛卡尔级,才有了我们的多表查询,因此呢,我们再给大家讲这个多表查询的时候,先要来给大家讲讲到底什么是我们的迪卡级,那通过咱们刚刚的介绍啊,咱们提到了笛卡尔基,它是多表查询,他在数学上面的基础对不?因此呢,我来举个例子,那我这个地方呢,事先准备好了两张表,一张是我的这个员工表,一张是我的部门表,对员工表里面呢,它有三行四列数据,而部门表里面呢,有两行两列数据,那这两张表如果说。
28:08
我们要执行多表查询的话,首先它会产生我们的笛卡尔级,怎么表示笛卡尔级呢?我们用一个什么,用个乘号来表示它们两张表的抵卡尔集对它肯定也将会是一个什么呢?大的一个集合有行和列组成,既然如此的话,赵老师呢,首先问大家一下,这两张表它们所生成的笛卡尔基它有多少个列?你能够把这个迪卡级的列数发送到我们的公屏之上吗?员工表里面有4个列,部门表里面有2个列,好问一下各位直播间同学,这两张表他们所生成的抵抗集它有多少个列?你能够把列数发送到咱们的公屏之上吗?说错了呢,没有关系,毕竟咱们本身。
29:08
也就是来学习的,对这些知识,你之前你在书写CQ的时候,你在书写多表查询的时候,有没有考虑到的这些知识呢?再说一遍,嗯,尽管非常的基础,但是呢,有很多细节还是很重要的,好,我们接着呢往下去讲,那现着呢,你的这个员工表里面有4个列,部门表里面有两个列,最终他们所生成的笛卡尔基将有6个列,列数相加得到了笛卡尔级列数,哪6个列呢?员工表的这4个列首先组成笛卡尔级的什么前4个列,然后呢,部门表的这两个列组成笛卡尔级的什么后两个列,它列数呢,一共有6个列,列数确定下来以后,咱们再来确定一下行数。那员工表里面1。
30:08
共有什么3行数据,而部门表里面呢有两行数据,那么这两张表他们所得到的笛卡尔集将会有多少行呢?大家能不能够也把它的行数也发送到咱们的公屏之上,如果说大家并不确定呢?就请给赵老师呢回复一个0,或者给赵老师呢点一个赞啊好,咱们接着往下来给大家进行相关的介绍,对,刚刚呢,咱们已经把列数确定下来了,再确定下行数,员工表当中有三行数据,部门表当中有两行数据,那么咱们所得到的迪卡基里面将会有6行数据,行数相乘得到底卡T的行数,哪6行数据呢?首先员工表中的这三条数据先跟我们不。
31:08
门表当中的第一条记录10号部门开发部组合一项,生成笛卡尔级当中的前三条数据,按照同样的这种方式,员工表中的什么这三条数据再跟什么第部门表当中的第二条数据,20号部门行政部门组合生成抵卡机当中的吧后三条数据,这样子呢,我们所得到的这个集合就是这两张表的什么笛卡尔基,好,我们去小结,像笛卡尔基如何得到的呢?笛卡尔金它就是等于每张表的列数相加,行数相乘啊,列数相加,行数相乘,我们呢,就能够得到一个大的集合,如果你有两张表,三张表,四张表呢,都是按照同。
32:08
样的方式,那么这个大的集合呢,就叫做笛卡尔集,但是呢,请大家注意一下,我们在笛卡尔集当中不一定每条数据都是正确的,换句话说,你在笛卡尔集里面呢,有可能会包含一些错误的数据,好,咱们来分析一下,首先看一下迪卡级里面的第一条数据,张三他从黄色这边看,它是我们的10号部门的,它从蓝色绿色这边看呢,它也是10号部门的,这两个部门号它是相等的,因此呢,迪卡尔基当中的第一条数据,它就是一条正确的数据,那么再来看一下第二条数据,你是它从黄色这边看,它是2号部门的,对,而他从蓝色这边看呢,他是10号部门的,这两个部门号,他就矛盾了,因此呢,第二条数据你是他就是一个不。
33:08
不正确数据,而我们要执行多表查询,那么你要执行多表查询,就是根据你的要求,根据你的需要,从这个笛卡尔级当中选出正确的数据,那么就我们现在的这数据来说么,只要满足个什么条件,这条数据它就是一个正确的数据呢?啊,很简单,很明显就什么很明显就是你的这个啊。很明显就是你的什么黄色这边的什么部门号和蓝色这边部门号如果相等,这条数据是不是就是一条正确的数据,如何把它表示出来呢?我们写在我们了吗?写在我们的右边,那么黄色这边它是我们的员工表的好,员工表的什么EP number的什么员工表的部门号对等于什么蓝色这边,蓝色这边它是我们的部门表,部门表的什么部门号对,好如果我在右边写的这个条件成立的话,它就表示呢这一条数据,它是一条什么正确的数据,那么咱们把这个条件叫做什么,叫做多表查询了什么连接条件,那么为什么么要有连接条件呢?有了连接条件以后。
34:40
就能够去避免使用笛卡尔全集,那么什么又叫笛卡尔全集呢?大家现在看到的什么这个大的集合就叫笛卡尔全集,因为在笛卡尔全集当中包含一些不正确的数据,因此呢,我们需要使用连接条件来去避免使用迪卡全集,那这样子呢,就有了我们多表查询的VR条件了,对,但是呢,注意一下连接条件它有多少个呢?注意下连接条件至少有N减一个,好,我写在这个什么这个图的右边,连接条件至少啊,至少有多少个呢?有N减一个,好问一下各位直播间同学,你能不能够告诉一下赵老师这个地方的什么N代表什么含义,如果。
35:40
多,大家知道这个N的含义,就请把它发送到咱们的公屏之上,如果说大家不了解呢,不知道就请给赵老师呢回复一个0,或者给赵老师呢点一个赞,那么你有在写语句的时候有没有注意到这些问题好的老师呢?重复一下刚刚的问题啊,这个地方的N连接条件至少有N减一个,这个地方的N代表什么含义呢?如果说大家知道他的含义,就请发送到我们的公屏之上,如果说不了解呢,就请在咱们的公屏之上回复一个0,或者给赵老师呢点个赞。好,我们接着往下来给大家进行介绍。
36:26
他们说一下说一下嗯。这个地方的,咱们这个地方的N代表什么呢?代表表的个数,如果说你有两张表,至少啊就有一个连接条件,如果说你有两张三张表呢,你有三张表至少就有两个连接条件,以此类推。通过使用这个关系,我们能够初步判断出来你所书写的多表查询的VR条件是否满足咱们的要求,对好的这个基本的知识以嗯,好来写一个什么多表查询的语句,对好,我写个语,嗯,我要去干嘛,我要去帮你查询我的员工的员工信息,要求显示哪些字段呢?要求显示给你员工号啊员要求显示给员工的什么。
37:24
员工号,员工的姓名,员工的薪水,还有就什么。嗯,还有这个员工。所在部门的什么部门的名称,那很明显前三个字段你是需要去查询我们的员工表,而部名称呢,需要查询我们的部门表,首先看一下部门表当中它所包含的数据,S什么先放咱们DPTDPT呢代表就是我们的department department的部门表里面呢,一共包含有四个部门,每一行呢有三个列,简单解释一下每个人的含义啊,首先第一个name是我们了吗?第Department number部门的部门home,第二个呢,第name部门名字,第三个呢,Ls l location代表部门的嘛,地点,好有的这个基本知识以后,现在呢,我们就来书写一个什么多表查询语句,查询这些相关的字段,那好直接敲ED命令,改一下上面的一条C口语句本,对,既然你是一个什么。
38:34
多表查询对不对?那么我在什么from关间字后面呢?就需要写上两张表中间使用逗号风格,而我们在进行多表查询的时候,写的多张表以后,那么你可以呢,给表呢起一个别名,不起别名也可以,比如说我们给员工表起个别名叫一表,我们给部门表起个别名,叫做我们的地表,按照咱们刚刚所说的两张表至少就有一个连接条件,对,很明显这个连接条件就是wherer Jim就应该是什么,员工所在部门的部门号等于部门的部门号,如果这条件承应,那就表示这个员工他属于这个部门,而前面咱们需要查什么?查询一下员工的员工号EP number, 员工的名字e name, 员工的信息。
39:34
跟水沙类以及部门表的部名称,那通过使用这样的一种方式,我就得到了一个什么多表查询语句,它有一个连论条件,对,那么这呢就是根据咱们的底卡尔节目所得到好保存退出一下,对,按一个什么右斜线表示执行上一条CQL语句,这样子呢,咱们呢就能够得到正确的什么输出结果,这四个列呢,分别代表的就是我们的什么员工的员工号,员工的名字,员工的薪水以及他所在部门的什么部名称,这呢就是咱们的多表查询语句,多表查询是我们以后在书写查询语的时候非常重要的一种类型,当然了,除了多表查询语句以外,还有我们的么?这个只查询,那简单说一下,什么是只查询?只查询,就是在一条查询语句当中嵌套了另外的一条。
40:34
什么查询语句写下,写下基本的概念是什么?是在一条什么查询语句中嵌套使用了什么另一条什么另一条另一条什么查询语句,对,就是查询语句对吧,嵌套对吧?就叫做咱们的子查询,好了解到子查询的基本的含义哈,简单的来给大家举个例子,首先需要明确,像只查询它可以应用在什么场景之下啊,它的什么应用场景,那应用场景就是当问题不能够一步求解的时候啊,当什么当你的问题或者说当需求啊,当你的什么需求不能一步求解,我需要多步求解的情况下,我就需要考虑使用子查询的方式来去解决这个问题。好,我们来举个例子。
41:34
整举个例子,比如说我要去查询什么,我要去查询部门名称是销售部的员工要好吗?写一下这样查询查询什么,查询部门名称是sales的什么的员工信息,那么很明显这个地方呢,我告诉你的是什么部门的部门的名称,那么而我们在员工表里面存储的是员工的部门号,因此呢,你首先需要通过部门名称得到部门号,然后呢才能得到部门的员工,很明显呢,他需要两步,当你需要多步求解的情况之下,那咱们呢,就考虑使用什么只查询的方式,首先把握住问题的主体部分,问题的主体部分是什么?查询员工信息,既然主体部分是查询员工信息,那么我的主查询应该怎么写呢?
42:34
啊,主操性就很简单啊,写一下我们的么,Select, 我们的新from,我们的EP表C口语均它可以换行书写,这个呢,就是我想要的什么员工的信息,只不过呢,这些员工他应该是销售部的员工,因此呢,我指定什么条件,部门号应该等于什么,应该等于销售部的原销售部的部门号,而你需要去查询部门名称。
43:04
和部门号的关系,就需要去查询我们的部门表,因此呢,我在这地方嵌套一个子查询,对,先查询出部门号方咱们部门表,部门表为了条件部门名称等于我们的什么销售部门,因此通过使用只查询的方式我就解决啊写错了department number啊改向改向department number, 这部门改向写错字段,写错DPT版本保存退出一些的好来执行一下,你就能够得到下面的什么六条记录,这六个员工都是属于30号部门的销售部的员工,因此呢,这个问题就是一个非常典型的什么只查询的问题,重复下只查询它可以用在什么场景之下呢?当问题不能够一步求解的时候,我就需要考虑使用什么只。
44:05
子查询的方式呢,来去解决,那么因此讲到这个地方的时候呢,那么实际上呢,我们在什么呢?我们在C口语句当中,到底什么是我们的多表查询,到底什么是只查询呢?这两种查询语句非常的重要,也是大家以后你在书写CQ的时候最重要的两种语句们好讲完的,讲到这个地方呢,问一下各位直播间同学们,关于赵老师们刚刚讲的多表查询,还有子查询这些相关的知识,大家是不是都听明白了,如果刚刚讲过的内容大家都听明白了,那就请在我们的公屏之上,嗯。请给赵老师呢回复一个1,或者给赵老师呢点一个赞,好,我再重复一遍,尽管C口的知识非常的基础,看是呢也非常简单,但是它是一个非常重要的基础知识,里面呢有很多的细节问题需要大家注意,好,咱们接着往下面讲,对讲最后的一个问题,前面呢,赵老师呢用的是什么?用的是Oracle数据库来给大家讲的,用呢scom它是我们学型关系型数据库的基础,当然我们在什么,我们在大据体系当中也支持使用C口语据来去分析我们的大数据,因为呢,它提供了什么?各种各样的大数据等数据分析引擎,比如说哈杜普当中的hive,斯巴克当中的斯巴克iccom,还有我们在弗林克当中的。
45:53
弗Li克cco,这些都是属于什么,属于大数据的什么数据分析引擎,比如说haveve呢,它属于什么?属于哈多,它在默认情况之下,它会把一个什么C口的语音转换成是一个什么my produ, 运行在哈多的亚M进行,这样那么有了这种方式以后,大家以后呢,你在哈多里面,当你要处理结构化数据的时候,你就不再需要去开发我们的map produce程序,直接协调C口句就可以了,它就能够什么自动把它翻译成是一个程序运行在哈多亚M上上,当然了也能够把它翻译成是一个斯Spark克,对,好,当然你的斯Spark克0呢,那么它提供也提供一个数据分析引擎叫spcycle,那么它能够把一个什么C与Jim。
46:48
翻译成是一个什么斯巴克Z呢,也运行在巴克基之上,从功能上去说,跟哈杜普当中的have是完全一样的,弗link也是一样的,Link里面的话,这个弗link s它也能够把一条S口语转换成是一个弗Li克的任务呢,运行在我们的弗林克基之上,对好所有的这些大数据的数据分析引擎本质上都是类似的,现在呢,咱们就随便挑一个吧,那么就挑最后的这个吧,弗林克C口,那当你把弗林克集群启动起来以后呢,你通过弗林克S克直行跳S口语,它就能够被转换成是一个弗林克的任务呢,运行在弗林克的集行之上,我们简单的演示例子啊,让大家能够有一个感性的认识,好切换到命令行窗口当中去,先去把我的R孔先去给他把它停下。
47:48
它来,否则我的弗Li克集群就启动不了了,对下单我们的immediate好尔停止下来以后呢,我们先去把我们的林克集群去给它启动起来,再好,这个地方呢,稍微的等待一会儿,那好等or关闭以后呢,切换到我们弗林克的安装的目录下,启动我们的福林克的集群啊,这个地方稍等一下,好问一下各位同学啊,还能不能够,嗯。
48:17
还能不能够跟得上赵老师的节奏,如果大家都能够跟得上呢,就请在咱们的公屏之上,请给赵老师呢回复一个1,或者给赵老师呢点个赞,大家还能够跟着上吗?对好,现在呢,我去把我的这个flink集群去给它启动起来,进到flink什么安装的录像执行并向那什么使到class的,而当你把这什么link就启动起来以后呢,它给我们提供了一个什么图形化的界面端口号是8081,因此打开我们的浏览器访问一下输主机的什么呢8081的端口,那么咱们呢,就能跟打开flink么图形化工具,那么这个图形化工具它叫什么?它叫弗Li克什么达西波仪表盘,那通过使用这个仪表盘。
49:17
你能够去监控你的弗林可集群,如果说你有计算任务呢,运行在弗林可之上,你通过现在的这个仪表盘工具,你也能够监控到任务的执行的状态,好整个弗林克集群启动起来以后呢,那么当你把弗林克安装好以后呢,它提供了一个什么c code的客户端,帮我们去执行我们的C口G,在他启动弗Li克c code呢客户端并下面的么C康我们的看的使用咱们的么嵌入方式启动,启动完以后呢,你就能够去创建表,能够去插入数据,能够去查询数据,当然你还能够把数据存储在你的文件系统之上,比如说能够存储在HDFS当中,好我们单独打开一个新的命令行的什么窗口,去把我们的HDFS去给它启动起来,对那H。
50:17
DFS呢?它是属于什么?它是属于哈都普当中的什么分布式文件系统,那么你使用这个flink s创建一张表,表的数据都可以存储在HDS里面,表呢,就是HDFS的一个目录,而中的数据就是HDFS的文件,因为呢,我们在弗林克C口当中提供了各种各样连接器,能够去连接外部的存储啊好,整个环境准备好以后呢,回到我们的弗林克西口这边,我去创建一张表,那么这个呢,就是标准的什么接口语句,对好开把我们的table,比如说我创建一张表来保存学生的信息,表呢叫做什么是students次表,最终对应到HDFS之上,它将会是一个目录,这个0呢,有3。
51:17
分个字段,学号I丁,它是个整数名正它是一个什么字符串,再来一个什么A代表学生年龄的,那这张表我希望把它创建在HDFS之上,因此呢,你需要指定连接性,那如何指定连接器呢?写上关键字,我们的位关键字,把参数呢写在为的里面。对首先连接器的类型connector指定的是我们的file system, 因为呢,HTS它本身就是一个转文件系统,你要存储在HTF上,存储在哪个路径上呢?通过Pass参数来指定需要写上HDFS的吗?它的全路径HDFS冒我们的local term.
52:11
端口号是9000,我下面创建一个什么弗Li克C口的目录,下面再创一个什么,一个是student次最后呢,你的表的数据呢,将会去存储在这个什么HDFS什么上,对,那你所存储的数据文件采用什么格式呢?一个指定我们那个form ma格,比如说我们可以存储成式CSV文件,CSV呢,它就是我们的嘛,逗号分一个文件,那通过使用这样的一种方式,我在什么呢?Flink circleql当中,我就创建好了一张表,并且呢把表呢创建在我的HTFS上,表创建出来以后呢,你当然你也能够通过使用标准的什么C口据往表里面呢,插入数据,查询数据都可以,那数据呢,最终它将会以CSV文件格式存储在上面的什么这个h DFS doing.
53:11
对,好,我们写一下in that语境,往里面插入数据啊,In that呢,In into, 我们的是students,我们插入两条数据吧,Values对不对?我们的一号M名字呢,叫做我们的Tom,年龄是21岁,那插入第二条数据的名字呢,叫做Mary,年龄呢是我们20岁,当你执行这些S的时候,它将会有我们的什么弗link scom, 把它转换成是一个弗link的任务呢,运行在弗link进行之上,稍后呢,咱们通过使用那个仪表盘工具,我们呢就能看到了这个ccom到底是不是被转换成是一个弗林克的一个任务了。对,好,新表数据插入进去,它会提交成是一个任务,把任务呢提交到class集群上去运行,对它数据插入进去以后呢,任务执行完成以后呢,你当然了也能够去查询数据命。
54:11
写在什么新方,我们的什么10STUDENT词这个题呢,就是标准的什么C口语句,而你在这个地方你所执行的这个插入语句,那么这查询语句都将会被弗Li克circle呢,转换成是一个弗Li克的任务呢?运行在我们的弗link的集群之上,好,先看一下查询结果,它输出格式呢?到底是一个什么格式呢?直接查询掉,好结果呢,将会被显示在我们的命令行的窗口当中去,两条数据分别是一号叫Tom,二号的名字叫Mary,那你刚刚你不是执行过两条CQL语句吗?这两条C口L语句到底有没有被转换成是弗Li克的任务呢?好,咱们去刷新一下这个仪表盘的工具,对,那通过刷新你会发现呢,在屏幕的什么最下方有执行完成的任务。
55:11
啊,有两个,这两个任务呢,这两个job很明显就是怎们刚刚写的什么两条S么,一个呢插入语句,一个查询语句,因此呢,通过使用这样的一个非常简单的事例就演示了一下,诶我们在大数据的体系当中,如何使用标准的C口语句来去分析和处理数据,当然你在各个大数据的生态圈体系里面呢,都支持这样的方式哈,都不支持是巴克支持,弗link呢也支持,因此呢,学习好c com也是我们后续呢学习大数据的基础,那这个部分讲完以后呢,实际上呢,今天晚上的主要内容呢,基本上就给大家讲到这个地方,那么我再重复一遍,尽管C口的知识看似呢非常的简单和基础,但是呢,它非常的重要。
56:11
我们为什么要学习C口语句呢?因为学习C口语句,它是后续我们学习关系型数据库的基础,学习orcom,学习MYCQL学习各种关系型数据库呢,都需要掌握CQL,同时呢,它也是学型大数据的基础,因为呢,我们在大数据的体系里面呢,提供了什么,刚刚演示过了分啊对提供了各种各样的什么大数据的数据分析引擎,通过使用这些数据分析引擎,我们呢,就能够使用标准的CQL语句来去分析和处理我们的大数据,好因此呢,讲到这个地方的时候。呢,讲到这个地方的时候,好,咱们现在的时间是晚上的10:27,今天晚上呢,由赵老师要给大家分享知识呢,大概就是这么多。
我来说两句