00:01
那视图啊,咱们就已经创建好了,然后呢,咱们也能够查看一下咱们创建的这个视图的相关的一些属性的信息,对吧?那么接下来的话呢,我们针对这个视图中的数据啊,咱们说是可以进行DML操作的,那咱们上面的话呢,是不是也提到过了,比如说针对视图做这个DL操作的话呢,我们会影响到对应表中的数据啊,反之亦然,那我们这块呢,就要看一看,哎,是不是会影响,OK,行,那这块呢,咱们就做这个具体的操作了啊举个例子,比如说我们此时呢,这样子我先select星from一下。我们拿这个,呃,View,它这个压比一这样的一个视图呢,咱们来说好,那这里边呢,我截一下这几个数据啊,方便咱们去做查看啊,这个呢,是咱们现在查看出来的这个数据,对吧,查看出来这个数据,嗯,然后呢,我们也去啊select星,嗯,Select星别星了,Select employee ID,然后呢,这个last name。
01:00
还有这个salary。这个from一下咱们的EPS,咱们从这个表里边呢,查看一下同样的这几个字段。你看都没有变化,那就意味着你看我左边这块放的是咱们的视图,右边呢放的是咱们这个表啊,这个呢是直接截的图,你也没什么这个怀疑的是吧?好,那么接下来的话呢,我们去修改什么呀,我去修改咱们这个视图当中的数据。啊,咱们这块先标识一下,这咱们第四个事儿就是更新。啊,这个。诶,这样是吧,更新视图中的,哎,这个数据好,那么这个更新呢,它是一个宽泛意义上的啊,什么意思啊,就是这个这个更新呢,其实代表的就是增删改啊,这个共同的行为,不光是一个update啊。好,下边的话呢,我们把这个视图当中的,咱比如说呢,这个101这个人吧,把他这个工资啊,咱们给他改成2万吧。好,那这时候我们就要update了,Update啊,Will be是吧,然后set一下这个salary。
02:05
改成这个2万,嗯,Where什么呢?哎,Employee这个ID呢,等于101,诶能看清楚是吧?哎,具体的你这个字段名叫什么,这个呢,你也得考虑清楚啊,我们这个因为没有给这个视图中的字段呢,基于这个表呢,重新去命名啊,所以这个还好一点是吧?啊这这块执行了,那执行完以后的话呢,我们再去select from,我们这个view这块咱们去看一眼。大家看此时的话呢,咱们这个101这个人他的工资呢,是不是就变成了我们说的叫2万块钱了。啊,因为我们做了一个修改对吧,好,那这时候大家别扎眼,我们接着呢,在没有去修改表的情况下呢,咱们去查看一下表中的这个情况来走起。哎,你看我已经查了啊,哎,大家你会发现呢,我们这个表里边这个数据的话呢,你看是不是它也变成了2万呀。诶,通过这个呢,我们能够证明呢,就是说,呃,确实是呢,就是我们对这个视图的修改呢,会影响到我们这个表中的这个数据啊,其实说白了话呢,这不叫影响啊,因为本身呢,就只有这一份是吧?好,那么同样的道理,我们反过来,我update一下咱们这个employ employee,哎。
03:08
这个表上。然后呢,我塞一下这个salary啊,咱们就还改这条记录吧,我想给他改成这个,呃,1万块钱。哎,说where一下这个employee ID呢,是101还是这个人,咱们呢,再查一下这个视图,走起2万块钱没问题,然后呢,我们现在去改这个表中的这个数据来周期。改完表中数据以后呢,我去查这个视图,哎,我们这时候再看大家你会发现呢,你看视图中的这个数据的是不是也改成1万了,哎,所以在这我们标识一下啊,这个更新这个视图的这个数据,会导致表中这个表其实就是基表呗中这个数据的这个修改。啊,那同样的道理,同理这个更新。这个表中的数据。啊,也会导致这个视图中的这个数据的一个修改。
04:06
哎,行,这个呢,就没有问题了啊,也会导致这个修改,那我这里边呢,是以这个update这个操作为例的,那同样的大家你也可以呢,是不是我们往这个view里边呢,去增加一条记录,或者删除一条记录,其实也是OK的。那比如说我们现在呢,看啊我delete。Delete from一下我们这个view,那EPE,然后呢叫where这个咱们就拿这个101这个人开刀吧,这ID呢是101,我呢把这个人呢给干掉,好,我们选中啊执行一下,那我就给删了,说诶这个能删啊,这块呢咱们呃就是这块删除操作呢,其实因为我们复制过来的,咱们艾特硅谷DB里边的两张表,它的那些约束呢,相关联的什么外界啊等等都没有是吧,所以它相对来说是比较独立,没独立啊,没有什么外界的约束影响,这个就可以直接去删了。好,那这张我是从这个视图当中给删掉了,咱们再去查看一下这个视图,你会发现呢,你看这个101是不是就没有了呀。
05:00
就说那这一一定吗?咱们一共呢,不是有107,要记住你看变成106了,是不是就把这个幺幺给干掉了呀,那接着的话呢,我们再去查询一下咱们这个,呃,EP这个表啊,EPS这个表走起大家你发现呢,是不是也是106,你看这个101是不是也没有。哎,说明呢,咱们确实给他删了,你要觉得不保险,那你就就CTRLC一下,你你你就这样是吧,然后呢,说哎,Where这个。101。哎,你把这101呢,你看它是不是还存在走起是不是就彻底就没有了,哎,这个呢,就是我们说的这个删除啊,哎,删除这个视图中的数据,那也会导致表中的。这个数据的一个删除。没问题,好,那我就说到这儿啊,然后这里边呢,就是体现了一个就是增删改呃这样的一个行为啊,那当然呢,我们接下来要说下边一个问题,就是我们这个更新操作,注意我这个更新的话呢,加上一个引号啊,是我们这个宽泛意义上的,就是包括增删改在内的啊,这个叫更新行为了,这个更新操作的话呢,呃,一定能够成功吗?那其实我们讲的是不一定的,所以呢,我们这个呢,先写一个这叫哎,一般情况下。
06:08
啊,一般情况啊,可以更新数据。更新视图这个数据,那么在有一些情况下呢,我们说就不能够做这个更新。啊,不能更新。这个或者叫更新失败的这个情况啊,这个视图中的这个数据。说还有不能更新的场景吗?哎,是有的,那我这块呢,就要找到我上面呢,可以准备的啊,一个小的情况了,咱们针对单表的时候呢,我写了个情况一,是不是还写了个情况二啊,这个视图当中这个字段在基表中没有对应的这个字段,你看当时咱们写了一个这样的一个视图。哎,现在呢,就要派上用场了,这个视图里边大家你会发现呢,我们创建的这个视图是不是说基于咱们这个叫员工表里边的啊,咱们这块呢,做一个查询啊,然后呢,我们查询出来的这个是有两个列,这个呢叫部门的ID,这个呢叫平均工资。
07:02
这个没有问题的是吧,这叫平均工资,那么咱们这个平均工资啊,在咱们原本的这个员工表里边儿,是不是说根本就不存在啊。这个呢,是我们聚合函数算出来的一个值,那咱们这块是不是还拿一个别名给它固定下来了是吧?那么问大家,你想想我此时举个例子啊,我想update一下,咱们的叫view e SL,咱们这样的一个视图怎么着呀,我要set一下。Avg的SL呢,改成就比如说咱们现在这个30号部门,我想把30号部门的平均工资啊调成5000块钱。哎,Where?Part ID等于这个30,哎,你觉得这个靠谱吗?就把这个改成这个5000。来,走起。大家你发现呢,是不是就不合适了,说is not up to,那就不能够去做这个更新啊,这个我们就说诶更新失败了。哎,更新失败了,能理解这个事儿吧,大家你想我们要是把这个更新成功了,那是不是就意味着我们这个30号部门的平均工资就变成5000了,那么咱们都已经知道了,视图里边本身不存数据,数据是不是还在我们这个表里边的,那么这个表呢,会涉及到是不是有好多的员工都是30号部门的,咱们那会儿呢,是计算完以后呢,算出来一个平均值是一个数,现在你想给他改成5000,那我问请问这些员工,我们怎么去调配他们,使得他们的平均工资变成5000的。
08:27
别说你不知道了。啊,比如说数据库服务器不知道了,你自己是不是也弄不清楚啊。啊,不靠谱儿。不靠谱,说白了就是我们在你这个事作当中根本就不存在一个字段,那你这个或者说基于一些聚合操作等等的哈,有可能也不是聚合,比如我们这个大建,你还可以再去举例子哈,咱们查询的是呃,每一个员工呢的姓名和他的这个年工资,那年工资这块的话呢,你要是涉及到那个commission PPT的话呢,咱们还给他改成这个零,呃,来去替换一下是吧?哎,那相当于这个字段,你想本身是不是我们在现有的表里边也没有啊,那你要是想更新这个基于试图更新这个字段,你想表呢,是不是都不知道该怎么去改你对应的字段吧。
09:07
哎,那这些更新操作呢,他就不能够去成功了。哎,就不能够成功了啊,能理解啊,那有同学可能说,诶老师那更新不行,这个update不行,我delete看看可不可以delete一下咱们view啊emp这个icr啊,Where啊是不是想把这个部门呢,我们给他删了啊,看这个行为呢,我们可不可以呢,走起。哎,当然你发现了,是不是这时候,哎也是,哎捏着它啊,是delete啊,这个少from啊。Delay from是吧,我们这个表,然后Y等于三十来走起。哎,说这个呢,说is not an optable,是不是也不让我们去做一个这样的删除啊。哎,就是你这条记录呢,它我们在表里边儿呢,怎么去体现它呢,这个呢,是不能够直接体现出来对应的一条记录的,所以这个呢,看也不让我们去做这个删除操作。啊删除呢,就失败了。好,那我这呢,是以这个啊为例给大家说的啊,我觉得应该是比较容易去理解的,那么回到我们这个课件层面啊,咱们说呢,不能够去更新,这个也是加引号的更新啊,包括增删改它呢,其实是有很多的这个场景的。
10:11
啊,总归来讲的话呢,就是我们必须呢,保证视图跟底层这个表啊,它得有这种一对一关系,那这时候我们去更新是可以的,你要没有这种呃,一对一的这个关系的话呢,那就稍微麻烦一些。哎,稍微麻烦一些,比如我们是照样的操作呀,哎,涉及到我们这个有数学表达式了,有此查询了,他就这块呢,就是对于你现有的这个表呢,相当于是做过一,就像我们刚才说的,你算这个员工的这个年工资啊,年工资呢,还加上他这个奖金率了,那对应到原表中呢,我们就不知道该你比如既有奖金率,又有这个salary啊,这个乘啊加呀,算到一起的一个数,你把这个数给改了,那我底层怎么去改这俩变量呢?是不是就不好改了呀?对吧,还包括你这个驱虫啊聚合,咱们刚才说了有分组啊,有having啊,有union啊,哎,你这些操作一顿下来之后呢,我们这个就没法通过改视图去对应到你那个表中那个修改了。
11:01
啊是这个意思啊,下边提到说这个视图啊,定义基于一个不可更新的啊,这个不可更新的就是跟我们这个在创建视图的时候呢,哎,这块涉的涉及到一些这个这个这个行为了啊,咱就不过多的去说这个事儿了。这个不顾的说这个事儿了啊行,那还有呢,就是。啊,这个还提到这个叫常量视图是吧?哎,都常量视图了,你再去更新也不合适。行,那关于这个不可更新这个事儿呢,诶大家你就知道它,诶就是你没有必要呢,大家去死记硬背这个事儿哈,诶大家需要关注的点是什么呀?就是我们很多时候的增长改错的会失败,你知道呢,它不一定是成功的就可以了啊那说这样就行了吗?诶是的,咱们刚才提到了你这个视图啊,咱们称为叫什么呀,存储起来的select的语句,也就是它的作用呢,就主要是用来查询的啊,你别整那些其他的本身呢能做,但是呢,又不太适合他做的事。啊,也就是说呢,虽然试图呢可以去更新啊,但总的来讲呢,试图作为虚拟的表呢,主要是为了方便我们查询去使用的,你不要呢,给人家整过多的其他的增删改的功能啊,你要是想更新这个视图中所谓的数据啊,那我们还是需要呢,通过实际对应的机表中的数据呢,呃,针对于表中的数据,我们去做DML操作是比较合理的。
12:19
啊,这个大家一定要注意一下。那这个关于这个更新数据的这个事儿啊,是非常重要的啊,这个大家呢,需要这个理解一下。然后这个完了以后的话呢,我们关于下边这个视图的几个操作呢,就整体来讲,就这个比较简单一些了,比如我们说下边一个叫修改视图,删除视图啊分别来讲,修改视图呢,就是我们针对于其中一个视图呢,想去做一些调整啊,想做一些调整,你举个例子啊,比如说咱们原有的那个表,这视图基于这个表呢,我们造的这个视图,现在人家表中的这个字段呢改了。啊,字段改了个名,或者说呢,人家加了个字段,你现在也想把这个字段加起来,那你得改这个视图,人家这个字段呢改名了,那你这块呢,是不是也得改一下名,总之的话呢,就是是呃表中的一些结构的更更改呢,会导致我们这个视图呢,也有必要呢做一些调整,那我们这呢,就可以去修改这个视图。
13:09
修改视图呢,有两种方式,一种呢叫create or replace view,然后第二种方式呢,叫out table,那就是修改啊out view是吧,还修改这个视图的意思,那前面这个or replace呢,就是咱们在创建这个视图的时候呢,你看这块呢,是不是有一个叫or replace。嗯,这个就有点像咱们这个if not,一个if if if not exist,或者if exist,类似就是呃,类似哈,但是肯定不一样,就是我们这个视图呢,要本身不存在呢,我们就创建,你要这个视图存在呢,嗯,存在的话呢,咱们要是表那块呢,就不创建了,这个不是,这个呢,就是你要是存在呢,我就给你replace了,这叫替换呀。啊,所以相当于就是一个修改的意思,好这块回过来我们看一下。嗯,这个是我们第五个啊,这样叫,嗯,叫修改视图是吧。行,那首先的话呢,咱们先这个我DC一下啊,咱就拿一下这个EPE这个视图来开刀吧,来选中呢,我们去做执行,这里边你看就只有这三个字段是这意思吧,好,下边的话呢,我们来一下这个对它的修改啊,两种方式啊,这个方式一行咱们叫create。
14:16
Create all。啊,Replace单词你得会写view啥呀,啊叫view e对吧,然后下边呢,你就正常写这个select就完了,那我们这块呢,比如说employ,然后这个last name,再来一个salary,咱们还想再补个字段,比如这个email。哎,From一下红绿EPS行加了个字段。加你还还想说我这就再过滤一些数据啊也行。啊,Where啊,这个salary。大于七天啊,我只要这些数据好,那此时呢,我们选中做一个执行。可以了,然后呢,我们再去做这个de大,你会发现呢,是不是多了一个email啊,那这就修改成功了啊,比较简单,其实呢,就相当于加了一个它是吧,加了个它就行了啊这呢是我们说的这个方式一,然后呢方式二。
15:05
这个方式二的话呢,其实就跟咱们修改表是一样的啊,叫alter一下这个view,那view e怎么着呢,是不是就下边还是写这个as就可以了。那这块呢,我们CTRLC一下,我把它拿过来,咱们再加一个吧,这叫hair data。啊,就这样啊,这个呢,你愿意加就加,不加也没关系啊,我就这么着吧,来此时我们选中了再做一个执行。哎,我们这呢,就再通过这个D,咱们去做一个操作。你看这时候我们就又加了一个。啊,这呢,我就不去演示这个表中那个数据呢,原来的时候呢是大于7000,相对来说人就少一点,这个呢肯定人又多了,对吧?呃,这个我就不去select清了啊呃,当然你也看不出来了,那会儿我们因为没查看,现在已经把它给覆盖掉了啊行,这个呢就是修改的两种方式啊,比较简单啊,不用多说了,然后接着我们说下一个问题啊,第六个视图的话呢,正常用啊,你就可以用着了,然后呢,我们还可以呢去删除视图。
16:01
诶,删除视图,这个删除视图的话呢,也很简单啊,删除表大家都会叫job table,删除视图呢,就job view啊就可以了。找view是吧,来回过来drop一下这个view,嗯,咱们想删谁呢?比如说你这个view ep4不想要了,然后就可以呢,叫view啊EP4,或者咱们提前呢,你也可以在这现在叫show tables,看一下我们都有哪些这个表和视图,这里边你看有这个view e4,现在我们把它干掉。走起。可以了,然后再去受。还就没有了。哎,这呢是一种场景,那也可以,怎么着呢,比我们这块呢来一个。来个二啊,再来一个view呢,EP3啊,我们可以同时呢,把这两个呢都干掉一个两个是吧?嗯,这里边儿呢,有一个。哎,行,我先把这个先执行吧,那这两个呢,首先它是都存在的啊job will,然后我们走起。可以了,然后我们再去收这个tables,你看是不是俩就都删了,如果要再次去,再次去执行的话呢,它这不就报错了嘛,所以我们在这个删除视图的时候呢,跟咱们删除表类似,你可以呢叫照view,叫if,是不是叫exist。
17:08
如果你要存在呢,我们就删掉对吧,那这时候我们要去执行,他就不会给我们去报错了。啊,就只是个警告啊,你要是从我们这个命令行这块来看的话呢,比如我们此时这样,咱们CTRLC选中了,然后在我们这儿。哎,走过来。干啥呀,这给我整这么多啊。也不想要不想看他。行,重来。这块呢,我们把这个呢,CTRLC。过来,然后点右键啊。你看这时候的话呢,他其实不会给我们报任何的错误信息的。哎,它是不会报这个错误信息的啊,你要把这个去掉的话,那就报错了,行,这个呢,就是我们所说的叫诶删除视图的一个操作,这里边有个小细节点,大家需要注意一下,你看我这里写的。嗯,咱们前面呢,提到说这个视图的创建啊,它是可以基于是不是现有的这个视图,就这呢也是view。简写了这个呢,是你基于这两个view呢,我们造出来的一个view,行,那如果说我们把这两个view要是删掉了的话呢,我们这个view呢,还能用吗。
18:10
哎,你想想还能用吗?哎,显然就不能了,哎,有同学说学说你不是都是基于表了吗?你这俩不要了,那你就直接这这这样就基于这个呗,不行的,为什么呀,你想想view呢,大家你要这么想,说明你还没有把握这个view的本质哈,View呢,就是存储起来的一个select语句。对吧,呃,你这个view的话呢,是一个呃视图,这是个视图,然后我们这个view存储起来的那个来语句里边呢,你from你写的是谁呀,你from写的是不是这两个VIEW1,还有这个VIEW2啊这两个对吧?那这两个东西都已经不存在了,你想想我们这个view它怎么可能会对呢。啊,你说我们就从这个,那你得重新去修改你这个视图才可以的,对吧,他不会说自动的就会你这俩不在的,我直接呢就对接他就是说没有中间商赚差价,中间商没有了,直接呢卖给消费者,这个没有这这样的这个事儿啊,哎,你得需要呢,自己去修改这个,哎视图才可以。
19:06
那你这个视图C呢,要是也不想要了,那你就删掉啊,你要是说还想用,那你就去修改啊,因为原来的视图不在了嘛,你得改才行,否则呢,就影响使用了,OK,行,那么关于视图这块呢,咱们就说到这儿。啊,最后这块呢,涉及到视图的一个总结,那我们前面的话呢,讲视图提到过这个视图的两个好处,还记得吧。还记得吧,一个呢,我们说叫呃就是简化查询啊,就是这里边所谓的叫操作简单啊,因为这个呃表的话呢,我们说结构可能会挺复杂的,也有可能你写的这个select语句呢,是基于多张表写的这个语句啊,非常复杂,那现在呢,我们把它固定到视图当中呢,你是不是只需要关注视图的这个,诶这个查询使用就可以了,就用不着呢,再去每次都写那个复杂的查询语句了,对吧?哎,这就是我们说的简化查询啊,或者叫操作简单,第二呢,就要减少数据的冗余。哎,这个怎么理解。
20:01
诶,这个理解的话呢,就好比是咱们上面提到了一个最初讲的员工表,然后呢,基于这个员工表呢,如果你要造一张子表的话呢,呃,就是避免让用户去查看一些敏感字段,那你这时候呢,是不是里边又是一些复制的数据了,而我们要用视图的话呢,视图里边本身是不存数据的。啊,那他用的数据还是你这个里边还能很好的达到这个数据的一个同步啊,或者叫一致性是吧,那这时候呢,我们从这个角度来讲呢,视图里边不存数据,它就减少了数据的一个冗余。啊,冗于好,下一个,下一个呢,叫做数据安全。这个呢,就是咱们前面提到的,就是它可以控制这个权限啊,控制这个访问权限啊,嗯,包括原来的时候呢,我们要没有这个视图的时候呢,用户直接访问表,相当直接呢,就给用户就暴露表了,现在的话呢,我们暴露这个视图,视图里边呢,去控制诶相关的哪些表让你查,哪些字段让你查,诶这里就提到了这个安全的一个问题。啊,安全的一个问题,而且呢,我们还可以针对于什么不同的用户,还是这一波表不同的用户呢,我们提供不同的视图,然后体现不同的这个权限。
21:02
啊,这个都是可以做到的啊,非常好,哎,这就是数据安全的问题。然后下边呢,叫适应多呃灵活多变的需求,什么意思,看一下说当业务需求发生改变的时候呢,这个如果需要改动这个数据表的这个结构啊,工作量很大,那我们可以通过改视图的方式加上工作量。诶,这个怎么理解。怎么理解,就是比如说我们这个表里边呢,有20个字段,这个表呢有这个30个字段啊,这个呢,我们设置的比如25个字段,原来呢,我们都是基于这个多表呢做一些查询啊,然后现在呢,这些表中字段我们可能做一些调整啊,比如有的字段可能要移到这个表,有的呢甚至可能要放在一个新的表里边。啊,就是哎,就是要做一些大的一些调整,那现在的话呢,我们可以说,哎,你就别动这些表了,表还在这放着,因为数据量呢也挺大了,我们呢,是不是造视图,这个视图里边呢,比如说你想把这几个移到这,那这块呢,就减少几个,哎造一个视图,然后这里边想加几个字段了,那你这块就加几个,哎就是变成比如说35个了,然后你就造个视图,就相当于在我们现有的底层的这个表的基础之上呢,我们盖了一层视图。
22:05
然后对外暴露呢,只暴露视图,视图你看到了说哎呀,这个已经变成15个字段,这个变成35个字段了啊哎,就是感觉上呢,说啊好像我们这个表也跟着变了似的,实际上呢,你只是维护了里边的那个select语句了是吧。哎,是这样的道理,所以我们就可以不去改这个表,而去改这个视图啊,就是适合这种灵活多变的这种需求。下边能够呢,分解复杂的查询的逻辑。哎,查询逻辑,呃,有的时候呢,我们这个复杂的这种查询呢,需要这个呃进行好几次啊,先做一些查询操作,然后我们得到的情况呢,我们再去做相关的一些查询操作,以此这样类推,哎,然后我们这块的话呢,你可以把你中间的这些所谓的这个操作呢,临时的给它保存起来,那我们就以视图的方式呢,给它固定下来,然后基于你这个视图,其实这个视图你也因为我们要一查它也能查出来数据,你就可以看到是一张临时的表一样。
23:00
咱不也讲过那个,哎,就好比是在这个from里边呢,我们是不是也可以写一个select语句一样,是吧?哎,你可以把这也当成一张临时表,然后呢,基于这个表呢,我们再去查这个数据。啊,再查你想要的,再再想查你想要的,哎,相当于我们就可以把这个复杂问题呢,能够做一个分解啊,这呢都算是它的这个好处啊,都算是好处,那么这个不足是什么呢?其实也非常的明显啊,那我们试图呢,首先你是基于表的,然后呢,你这里边又没有数据,那问如果表中的结构变了,你是不是要变啊,那肯定的呀。那我们这个视图里边用了个字段,然后呢,你这个表里边字段给删了,或者表用这个字段的名给改了,那你这个视图呢,是不是也要做一个修改啊,所以呢,主要的这个视图的不足啊,其实就体现它的一个维护性的问题。啊,维护成本很高。啊,成本很高,因为我们这对表呢,有可能会做一些这个操作,对吧?哎,尤其呢,你看我们这还提到一个问题,就是你这个视图呢,我们说基于视图啊,又可以造新的这个视图上面又可以造视图层层的这样的去操作的话呢,其实这个视图到底是基于底层什么样的表结构,我们可能已经不太清晰了。
24:05
然后呢,如果这个表结构做一些调整的话呢,你这个试图再去查呢,就直接挂掉了,它的维护性呢,确实是要差很多,所以呢,大家在实际开发当中去使用的时候啊,虽然说呢,我们有这样的好处啊,你想去用视图,但是呢,底层的一个结构的话呢,如果做调整,那你这个维护成本呢,你要去综合考量一下,看看是这个便捷的带来的好处更多,还是呢,后期经常维护,这个维护的成本呢,哎,就更重啊,那你去取其中的一个。叫什么呀,一个达到一个平衡就可以了。诶,达到一个平衡就可以了啊,那么呃,在实际场景当中,咱们一开始也讲到了,就是在这种小型项目当中啊,咱们通常呢是呃,就是不推荐用视图了,你就直接呢去操作表就完就完了啊,因为你也不会写出那么复杂的这个产品句,对吧,那么大型项目的时候呢,我们再适量的根据实际情况呢,我们去应用一些视图啊就OK了。行,那关于我们试图这一章啊,咱们就说到这儿。
我来说两句