00:00
那整个视图这张呢,咱们就讲完了啊,应该说呢,相对来说比较简单一些啊,我们看一看视图这一章的课后练习题啊,我们打开视图。那扣练机这块呢,我主要给大家提供了两个练习,整体上来讲呢,其实也比较简单啊,第二个练习呢,稍微的多一点好,那整个呢,我们就开始来做一下啊,先把这个练习一呢CTRLC啊转过来。啊,这里呢,我们去新建一个这个文件。啊,这个呢,是练习一。好,那首先的话呢,我们把这个文件呢,先保存一下。哎,试图的课后练习。好这块呢,我们还是跟原来一样啊,CTRLCCTRL,然后CTRLV啊保存一下。好,这块我们来看一下这个练习一。呃,就是使用表employees创建试读它啊,这个呢,咱们相当于它这块呢,我指的还是原来咱们艾特硅谷DB这里边的这个数据的表啊,那咱们现在呢,是不是在,嗯,我这么着一下啊,去use一下这个DB test14,咱们已经呢是在这个数据库下呢去做这个操作了,我呢把咱们employees和这个部门表呢,完全的给它复制了一份数据,是不是到我们这个DB test14里边了,那我们就基于这个数据库呢,咱们去操作。
01:17
那使用这个表EPS呢,去创建一个视图,其中包括呢,这里边的一些字段信息啊都列出来了,那这个相对来说比较简单一些,OK,那我们这儿呢,就create一个view是吧,你要是担心之前呢,可能有过同名的呢,你就可以做一个or replace啊,如果要存在呢,就把原来的view呢给它覆盖掉啊。叫什么名呢?叫employee view。嗯,这样的一个叫法,就是有的时候呢,我们会看到一些视图,这块呢,是以V开头的啊,有的呢,是以这个V结尾的啊,这也是两种情况,就类似于我们说那个约束一样,这个有的时候呢,是以结尾呢,表现出来它是什么样约束,有的是以开头的,这个都可以。Create replace view,这是这个名字,然后呢,就是as select。
02:02
嗯,查询,嗯包括呢叫lastname。然后呢,叫employee ID。还有呢,叫depart。问,ID。然后from一下我们这个叫EMS这个表,他也没有说呢,过滤其他的数据,那我们就用这个,然后这个名字的话呢,我们可以去修改,修改的话呢,咱们是不是可以在这块呢,去做个指明,对吧,比如我们这个呢叫l name。嗯,这个呢,我们就叫e pd,这个呢叫DEPID没有问题,好此时呢,我们选中呢做一个执行。嗯,可以了,下面呢,叫显示视图中的这个结构,那其实就是D或者叫describe对吧,然后把我们这个视图呢,啊,名字往这一放啊,查看一下我们这个视图中的这个结构啊,1233个字段啊,这时候呢,这个字段的名字呢,就是我们这里边起的这个别名。下面呢,查看视图中的全部内容,那我们就可以呢,叫select行from一下,我们叫哎这个视图。选中。
03:01
执行可以了啊,106是吧,那前面我们做练习的时候呢,删了一个人嘛,把那个101那个人给干掉了是吧,这就少个人了,好,这就是他,然后下面呢,将视图中的数据啊,限定在部门号是80的这个范围内啊,相当于呢,对我们现有的这个视图实际上呢,是一个修改对吧,那我就直接用那个叫a replace了,或者你直接把这块呢,呃一去掉,改成叫al是吧,也可以啊。行as,然后在这个后边呢,我们加上一个过滤的条件叫depart。问,ID等于就行,发烧部门的。好,那这时候呢,我们选中呢,做一个执行。啊,这就OK了,然后你可以再去做一个这个查询,此时的这个数据的话呢,对应的这个就只是80号部门的这个数据了。嗯,OK行,这个呢,就咱们这个叫练习的第一道题,然后呢,我们来看一下这个第二道题。嗯,这样啊,CTRLC。练习二啊,行转过来,嗯,练习二的话呢,这块也提到了,就是我们需要创建一个表,然后呢,是把员工表里边那个数据拿过来,咱本身已经有了啊,已经有了我就不用管它了,行,我们看第一个说创建一个视图叫EP view1,然后呢,要求查询电话号码,以011开头的员工信啊这个行,那我们就这样去做,其实这块呢,大家要是熟悉前面这个头的话呢。
04:21
主要呢,我们现在去创建视图还是在练查询对吧。Create。Replace,这个will。那e be,然后as这块呢,就主要来写这个查询了。查询什么呢?查询的是叫lastname。然后工资salary。然后这个邮箱email。Email写错了。诶,From一下我们这个EMS是吧,呃,然后where这个电话号码以谁开头的啊,Where叫这个咱们这个里边这个字段用的是什么呀?对你要不清楚的话,你可以在这DEA去查看一下emps是吧。
05:03
这里边儿呢叫phone number,行,那你这块呢,就是where。嗯,Phone number这个呢,以谁开头的,这个我们是一个模糊查询了,嗯,大家可以用这个正则,前面我们讲这个时候呢,也稍微提到过啊,或者的话你就是直接写011,然后这么着,这就相当于是011开头了呗。啊,没有问题是吧。哎,你要这块担心的话呢,你可以先单独的去执行一下我们这个查询语句,那这就查出来了。嗯,他这块也倒没说去展示这个这个这个phone单模了,那我们就不加了吧,啊这块呢,就查出来这些数据呢,都是以这个012开头了,然后呢,我们前面加一个create,那这呢就把这个查询句呢,就给它固定下来了啊这个我们试图就有了,OK,然后下边说呢,要求将试图他修改为电话号码以他开头,并且邮箱中包含E的。呃,员工的姓名,呃邮箱和电话号码,现在这里边儿我们要做一些这个,呃一个视图的修改,对吧。
06:00
好,视图修改的话呢,我们比如说还把这个呢,就原封不动,咱就粘过来吧,在这个基础上我们做个调整,由于这个视图已经存在了啊,你要首次创建的时候呢,这个哦,这个replace呢可以不加,但是现在的话呢,是必须要加上了,因为我们要做一个修改,对吧。然后呢,修改为什么呢,这个查询电话号码以它开头的这个我们还保留了,并且那我们就加一个and了。这个邮箱当中包含了E啊邮箱就是这个email。Email中这个包含E的,那我们还是用这个模糊查询。哎,包含E是不是就这样搞定了。呃的,什么员工姓名,这个邮箱和电话号码啊,这块呢,这个salary那就不要了。这个邮箱有了,再加上一个叫诶phone number,诶是不是就可以了。哎,就OK了,哎,这块呢,你要愿意给他起别名呢,你就这块再加上就可以了啊,我要是不改的话呢,我就直接这样就运行了。嗯,运营完以后呢,我们此时呢,再去做一个这个de啊,这呢是一个查看D查错了,我们要查的是我们这个view。
07:03
咱们查起来吧。Select星from一下我们的E这个be。这样对吧,哎,我们选中。执行哎就可以了,哎这呢,就我们需要的这三个字段,像下边这块说像这个EP啊,V中插入一条记录呢,是否是可以的。能不能插入啊。啊,这个我说呀,我也不是特别保险啊,他能查啊,前面呢,我们讲这个内容的时候提到过,说这呢,其实咱们算是一个比较简单的一个视图了,就是里边呢,没有涉及到一些函数啊,分组啊,Having啊等等的是吧子查询啊,这个这个运算符这种表达式啊都没有啊,就是相当于是我们这里边的一条记录呢,就对应在底层一条记录,说这种场景下不都是就能添加成功,为什么还说不一定呢?啊,这里边还会牵扯到一个问题,就是说我们往这个EPVE当中去插入数据的话呢,实际上只是会插入是不是这三个字段啊,那么意味着我们这个数据呢,要是成功的话呢,肯定就添加到我们这个表里了。
08:06
肯定会填到这个表里边,但是呢,我们这个EPS这个表里边有可能非这三个字段,其他这些字段呢,存在着not nor的约束。对吧,那如果有no闹约束的话呢,我们这个添加实际上就不成功了,因为咱们只填这三个字段,剩下字段相当于都要填no的,它要有其他字段非空的,那不就失败了,哎,是这个原因造成的,那只能咱们试着看了啊来,那我们insert或者咱们这个从后往前推也行,那怎么着呢,大家你也可以呢,就DEA咱EMS,咱们看一看这个表,来咱们走起。这个表中呢,大家把这个呃,Lastname email和phone number呢先挑出来。啊,这是一个。嗯,Email和phone number啊,他的哥仨挨着呢,行,就这仨,除了这仨之外呢,咱们看一下是不是说咱们这里边还有像这个her date和招牌D呢,你看我这里边写的是不是都是no啊,言外之意呢,就是他们是非空的啊,你要有这样的一个证明之后呢,我们现在要是往这里边去添加记录呢,结论大家应该知道了,是不是就不可以啊?
09:05
来咱们看一看,哎。我们叫insert into是吧,E。这个你愿意加这个字段你就加,不加的你就直接在这块老老实实的按照生面的这个顺序来啊,顺序不就是123这样吧,插入一条记录好,那last last nameme呢,我们比如说就叫Tom了。这个email com啊126。点com啊这个字段的长度呢,这个你也可以看一眼,25这都没问题。这个拉伸的25,这也都够啊。然后下一个呢,就是我们对应的这个叫phone number,这个phone number的20啊,这个都OK的啊,这个来一个比如说010,然后呢,12345啊,这是这个市政热线是吧?好,那这时候呢,我们就选中呢,试图呢去做个执行了,来我们走起。来走起,说这里边儿呢,你看就报了,说你这个,呃,相当于table啊,它相当于关联的那个表呢,它没有一个默认值啊,就会涉及到了我们要添加的,像刚才看到的那几个字段啊,像这个还是date呀啊,像我们这个招白地呢,因为没有默认值,然后呢,这个我又飞空,你现在又想给他填填这个now,那就失败了。
10:13
啊,这个我们相当于是这个叫什么呀,叫实测啊失败了。啊,就是相当于我们在这个测试之前,咱是不确定成功还是失败的啊OK。然后再往下。修改EPVO1中的员工的工资呢,每人涨1000块钱啊,这个呢是可以做到的,对吧。行,那我们此时呢,就做一个RB,嗯,先做一个查询吧。Select星from。这个EP啊,V。好,选中执行。嗯,哎呀,很遗憾,这个表里边儿呢,我们根本也没有加人家这个sal的这个字段是吧。没加这个字段,那加这个字段的,我们去涨薪1000块钱没问题的,那没加这个字段,这这咋咋搞啊。我们这时候呢,去修改它里边salary,这就不现实了是吧,这个我们还得把这个salary给人家加上啊。
11:02
来吧,那我们在原有的这个表的基础上,咱们再给人补一个啊。它上面也没提这个事儿对吧。那行,我这时候呢,把这个呢,整体选中走起。这就相当于是又重新再修改了一下这个视图了,来,我们这时候再去select星一下,我们走起,这时候我们就有这个salary吧。有salary的话呢,我们再谈这个涨薪的事,哎,这个update这个EPVE,然后set一下这个salary,这个每人涨薪100,变成它原有的薪资,再加上这个1000块钱,然后呢,就没有然后了,所有的都涨对吧,然后此时呢,我们查询到的这个数据呢,我们暂且来往这块呢,先盯一份,然后我们选中。走起。然后我们再去做一个select啊,查看一下来,我们这个对应一下,那相应的这个薪资呢,是不是都是涨了1000块钱。啊,那这块涨了,那对应的我们这个EPS这个表里边儿呢,肯定数据就涨了,对吧,这个我都不用去验证了啊。好,再过来说删除这个里边的姓名为这个啊,叫这个人的这个员工啊,这块我们就做一个delete了。
12:09
嗯,From一下E啊,VE,然后呢,Where啊,这个叫lastname等于。啊,这个人。哎,CTRLC一下就是我们这个删除操作呢,能不能成功呢,大家你主要就是看啊,你想想,如果我们在表里边就是对应的你这个基表叫EPS,这个表里边要是能删,那这个呢就能删。对吧,就能删啊,那因为我们在讲表删除的时候呢,可能会有一些这个叫什么引用完整性嘛,就涉及到这个外界的一些关系,有时候不让我们删啊,不让我们删,那如果表能删,那这时候他也就能删,所以这个呢,你看成功了啊。嗯,我们再做一个select啊,刚才能看着的,你看现在看不着了。行过了下一个说创建视图EPVR,然后要求查询部门的最高工资高于一万二的部门ID和其最高工资,这就是普通的一个咱们说的一个分组的一个查询。
13:03
Create。啊好啊,习惯上我们再去造一个视图的时候呢,咱都加上这个replace了啊。这个view,然后EV,然后as,看select。哎,我们要查的是这个各个部门的这个最高工资啊,只要这个高一万二的行,相对来说比较简单。Department ID和他的这个最高的salary。诶,From一下我们的employees啊,记着一定是如何buy的。在第1PART。ID是吧,然后接着呢,我们这时候还有个having啊,要求我们这个max的这个salary呢,它得是大于12000,是这意思吧,然后呢,我们这时候是创建的一个新,呃,基于这个查询机创建的这个视图,我们需要呢,把这个,尤其是这个max salary啊,得把它固定下来,前面这个呢,你愿意改名就改,不改也没关系啊,后边这个呢,是一定要给它。哎,附一个具体的字段了。
14:00
好,不让它以函数的形式去呈现,而是以这个别名的方式啊,列名的方式来呈现。嗯,大于万没了吧,OK了,行,我们选中呢,做一个执行。哎,说我们这个呢,Doesn't exist啊,我们这个位置写错了啊EMS吧,好来我们选中执行。好了,那这时候呢,我们去做个查询,他下边也没说查询,那我们就在这写一个查询。Like形容from一下,哎,咱们的DPVR。诶看看一下各个部门的这个最高工资是吧,哎,这里边我们只要这个高一万二的啊,就这三条,接下来说向这个里边去查不查记录是不是可以,这个基本上能判定这个是不是就不靠谱了,那我们insert into一下这个EVR。啊,这个你要愿意加呢,你把这个字段名字写上,跟咱们原来讲表数一样啊X x2。行对吧,然后value呢,呃,加一个部门的ID啊,咱们来一个这个呃,一四千号部门吧,这个咱们表里边肯定是没这个部门的啊。
15:00
嗯,你要愿意这个演示一下,你就看一下这个实际上是没有的啊,所以我就随便写了个4000,然后呢,这个最高的工资咱们来一个2万吧。2万块钱相当于呢,我们想往市数里边呢,插入一个部门,然后呢,还插入这个部门这个字段,你注意它是部门的这个最高工资了。啊,你想想这个事儿呢,其实都不太靠谱。说呢,你这个呢,Insert它是这个不行的啊,不能够去做insert了,哎,为什么呢?啊这时候呢,就是大家用这个反正法啊,就是如果要是成功了的话呢,你想想咱们对应的是不是有员工啊,那员工表里边有好多员工,现在你加了一个部门,叫这个4000号部门啊这个呢是忍了,但问题是呢,你这个员工这块怎么处理啊啊员工这块你说啊先闹行,这个可以先闹的,那他们不是每个人都有工资嘛。啊,每个人都有工资,都有工资,都有工资,然后现在是最高工资呢,你定义成是个2万的了,那我们这块怎么去分配这个部门到底几个人是吧?哎,最高工资呢,是是是怎么来说是叫最高呢?哎,这个人最高还是这个人最高啊,这个都说不清楚的事儿,所以这个也不可能成功的啊,所以呢,这个相当于是啊不可以是吧。
16:08
啊,不可以的,哎,我们这里边呢,就报这样的一个错误信息了啊,CTRLC下。哎,错误,哎,就这么着行,这就OK了,然后下边呢,叫删除刚才的两个视图,那我们呢,就叫drop view啊,你也可以加上叫if it exist,如果要存在的话呢,我们就删掉了啊VIEW1逗号impp一个VIEW2,那我们可以呢是同时呢把它们干掉了来执行。啊,删除成功了啊,然后你这块你可以叫show tables。看一下我们这两个氏族呢,他还在不在?这里边的EPVE你看都没有了,那B2都删掉了啊,删掉以后呢,因为我们有这个if exist,所以你要再执行的话,其实它也不会报错。啊,诶不会报错行,这个呢,就是我们说的这个视图这一章的课后练习题,整个来讲呢,视图这一章呢,比较简单。啊,比较简单啊,大家还是把基本功的这个查询语句呢能搞定了,创建表的方式呢会了,那这块呢,基本上就触类旁通。
17:05
好,那关于视图呢,咱们就说到这儿。
我来说两句