00:40
我们继续开始上课,数据库对象索引,索引的话就是我们梳理那个目录,所以干嘛的呢?也是方案中的一个数据库对象,也是需要单独创建的。那有了这个索引之后,Or瑞会通过这种索引有一种优化方案,自动加快它的查询速度,减少这个磁盘带O,所以跟那个约束一样,也是依附于表的,但是它又不和表存放在一起。
01:19
它也是独立的数据库对象。那创建索引,索引有两种方式。一自动创建or会自动为主见和为一见况建?
02:08
索引,只要你给这个字段添加了主键约束或者是唯一键约束,奥瑞自动的为它创建一个索引,并且是说你这个主键变了,它的索引会自动的跟着变化。我们看一个表。所以这是这个约束主键约,这是主键外键约束唯一键约束check约束index。所以现在我们的。注意阴阳平安主键约束啊,奥瑞自动的为它创建了一个唯一所创建了一个索引,那现在我们再来看一下,我们给。
03:08
Table con,然后是1 name202就能在哪个字段上,就能在一内容字段上。这个代码啥意思?给ERP表的E字段添加了一个唯一约束。嗯。正好en内优米这个约束的名字也叫en内优米,这样就说奥瑞克自动为主键约束,为见约束创建这个索引。
04:18
2TABLE p rop。你那个约束的名字叫一点。啥意思?删除约束,删除约束之后数据库,因为我这个约束是在表上的,删除约束之后,这个表中的数据也会受到影响。这表里头原先有一个主见约束,我把主键约束删掉之后,这个表的数据就会受到影响。主键也就没了。那个EP也就没了。
05:01
对吧。删除约束影响,不影响表层的数据。我把这文一件给他干掉了。你删除的是这个看门的保安select from阳性。内还在这儿呢,你删除的是他上面站岗这个保安,你把保安删除掉了,这个字段数据还是在的。看,那个索引也自然而然被删掉了。这是奥瑞自动创建约束。第二。和一首。动的创新约束,那一个表中什么样的字段应该添加,所以。
06:22
在查询的时候,经常被用来作为查询条件的字段。应该添加,所以比如说我们在查询员工表的时候,我们除了用他的EP number之外,我们还是不是经常用到它的1NAME,那我们就应该给这样的字段添加缩音。
07:04
Index叫叫name。In index on哪个表?Onp表的哪个字段?表的一哪个字段?这是我们自己给它手动创建的索引,那你只要创建了索引之后,你在查询的时候,比如说smart from emmp where em name等于SCH,我们实际上是看不出来的,但是奥瑞比你没有加索引之前,它的查询速度肯定是很快的多,因为没有这个目录的话,我要找凹这个数据库对象,你得一篇一篇翻啊。
08:17
但是说我有了目录之后,凹这个数据库对象97页,我一下就可以定位到97页了,因为现在我们的数据量比较小,我们看不出来效果,等你的数据量大的时候,你就可以体会到它的效果了。所以。那我们可以。删除索引,删除索引也是一个,就跟drop table一样,错inex那个inex的名字。好,那上面这个索引呢,上面这个自动创建的索引怎么删。
09:13
他让不让我删?自动创建的,所以是无法手动删除的,但是在删除主键约束,唯一键约束的时候对应的,所以。会被自动的退。
10:01
看一下,现在我给它添加了一个唯一索引,唯一约束。现在这个表里头。只有一个主见约束。我又给它添加了一个唯一简约数。这是刚才我们创建的那个用力,这是自动创建的作业。我在删除这个文件约束的同时。那个唯一键所在的字段的索引也就被自动删除了,这是or自动维护的?
11:01
只有我们手动创建索引账号,我们可以去自己手动删除它。一个表中经常被用来做查询字段的,用来做查询条件的字段,我们应该给它添加索引。删除索引。然后试图。试图对一下。From from后面出现什么一个表吧,出现一个表。
12:03
或者说我们给他可以出现过一个死查询吧。一个紫查询。实际上这个此查询就是一个所谓的视图。视图。就是一个虚拟的表,就是一个虚表。我们可以从这个表中查询。
13:01
试图应该知道海市蜃楼怎么回事吧?海市蜃楼知道怎么回事吗?比如说地球上这儿有一个场景,这一堆人什么的,一堆建筑经过大气层的折射,结果你在这边。能从空中。看到他的情况。这些人都是漂浮在空中的,实际上那个海市蜃楼就是现实生活中的一个。实际的场景只不过是说经过空气折射,从一个地方反映到另一个地方,就跟照镜有点像照镜子似的。那实际上这个西边就跟海市蜃楼非常类似。我这儿有一个表,这个表通过我们的技术处理,我可以把它做成一个虚表。
14:02
然后我可以从这个表里头去查询数据啊。那我们先来看视图。用视图有什么好处?可以限制对数据的访问方式,让用户通过试图看到表的一部分数据。比如说在我们的单位里头工作的时候,有两个角色,有两个人。都要操作这个。员工表。但是现在就出了一点问题。其中一个人是。一个人是人事经理。一个是你的相机,这两个人都要去查询。这个员工奖。
15:07
那我们在控制权限的时候,我们只能说控制到他对某个表。可以采取有有没有增删改查的权限,但是我们没有办法控制到表里的字段什么意思,比如说人事经理。人事经理,我这儿可以让你查看这个员工所有的工所有的信息,其中就包括那个员工的薪水信息。但是作为这个项目经理。你可以查看这个表的信息,但是作为你的作为项目经理。这两个字段我是不让你看到的。为啥呢?因为在公司里头有可能是说你的工资比你的项目经理还高。
16:03
有可能有这种情况,那你让你经理知道了,你小子一个月挣1万,我才挣8000,那我怎么领导你啊,那不就影响公司内部的团结了吗?所以在公司里头,他的工资基本都是背靠背的,谁也不知道谁。这样才能维护一个和谐的社会。那现在作为我们有这种需求了,人事经理可以查看这个表全部字段,项目经理只能查看你除了工资的之外的所有字段。那对于一个表来说,我们控制不了。我们在管理权限的时候。北京to。
17:05
分配权限的时候,考的这个用户给他分配什么权限。注意,它只能说对某一个对象。数据库对象一个表,具有查询、插入、更新、删除、引用、修改引在创建索引执行read的权限,我们没有办法控制到某个字段啊。到怎么办呢?这时候我们就可以通过视图来解决。怎么样通过视图来解决呢?比如说项目经理这个整个试测表,你们每个人,你前面这一排,每个人都是表里一个字段,后面是它的数据。
18:02
那项目经理怎么办呢?项目经理,我只允许你拿这个300个。人事经理,我只允许你他这边几字。那我在这宝贝们这根管子里头能够看到你这块。这根管子能看,能看到你们这四个的字,我跟项目经理说,那根管子你可以使,跟人事经理说,这根管子你可以使。这样不就把它限制开了吗?那这根管子是什么呢?就是我们所谓的视图。视图是一个虚点就是一个。查询语句只不过是这个查询语句了呢,给它起了个名字,命名的差距语句,那现在我们来看一下怎么创建视图,我这哈。
19:15
这也不是说我要给人事经理用的,他可以查询这个表的所有数据,一个查询我就给它加一段。Great will角HR。啊。这样我就创建了一个视图。只不过是什么呢?这个查询语句我给它起了个名字,起了名字之后,它就会在数据库中永久的保存。
20:02
走。权限不卡的,默认没有这功能。那我们得给他分配权限呀。分配权限是由系统管理员来做的。北京W。角色分配。它默认只有这两个角色。那我们现在把。DDA的角色来着。这个对于我们在实际应用中,我们别说让我们的用户啥也做不了,那我们为了让我们的用户操作方便,我们通常情况下是把BDA的角色付给这个用户了,这样我们数据库中常用的操作他都都可以执行。
21:10
Great d DA to思考,这就是我们所谓的DC啊,数据库控制。阿,介绍一下,现在我们把DBA的角色分配给SC之后,我们再重新来登录。R cot t t j b。我们用SC特并不是用它来管理数据库的,明白吧,我们是用SC特来做这几个表的,所以我们这SC虽然具有DBA的权限,你别通过斯CA特的管理公库。还是当成普通身份来记得来,只不过说让他具有那个功能。好,这样我们就创建成了一个视图。
22:03
视图不就是一个表,那我们再创建一个视图,R为HR-M给人事经给,这是给人事经理用的视图。给人事。经理使用。创建给项相使用的时候。项目经理,刚才我们说了slot from ya。这哈,这是number email job mg。
23:00
Her。Email job dad。第一批蓝姆。你可以查询这些字段,给他加个create well,然后是试图的名字艾,这个查询就OK了。创建了两个视图,我们说视图就是一个表,只不过是加一个定词虚表。那对于一个表来说,我们可以去查看DC,查看一个表的结构。视图不就是一个点吗?视图就是一个表啊。我也可以查看视图的结构啊。不好意思把手机关掉,早晨太忙了,眼睁睁的看着堵车。
24:17
调成振动。那现在我们。从表中查询数据,我们from后面也可以出现一个视图,从视图中查询数据就跟从表里查一样。现在我是以人事经理的角色进来的。星from we gone,这个叫HR港。Well。
25:02
这不就跟我们从表里查数不一样吗?那我可以加入条件where p number等于7369,这不就跟我们从表里头查出去一样的,视图就是一个表,一个虚表而已。我们可以在命令好窗口模式下查看表的结构,也可以查看视图的结构DCDP。DEC,这个叫HR-VW这两个命令只能在命令行模式下执行。
26:01
现在我们就通过试图把我们刚才要做那功能,人事经我可以让你看哪个字段,项目经理我可以看几个字段,这样我们就实现了它的功能。那后来我想改进一下,我想说把给人事经理这个视图呢,给项目经理这个视图呢,我能让你看到他的common。已经存在了,那我们只能说按照我们以前的方式,先把这个视图删掉,删掉之后再重新去创作新的事物。有更省事的办法。Replace,重置啊。
27:01
如果说他没有这个视图。他就去创建,如果说已经有了这个视图呢,就执行重置的功能。走,我这儿一直在F8,你每次它有了之后,它就执行重置啊。就不用我们说再去把它删掉之后重新建了,所以我们说在创建的视图的时候加一个create or please,这样就能一劳永逸。可以完成这个功能,可以使复杂的查询变得简单。怎么个意思,是同类?任何有效的查询。
28:00
只要你能查出来数据。无论多么复杂。都可以对创建成一个石头。包括我们以前说什么的,你用不用组函数,你什么natural join,什么inner join al,随便你愿意咋写咋写,只要任何一个有效的思考语句,你只要给他加上这个脑袋。就都可以变成一个视图,视图实际上就是一个命名的查询语句嘛。任何查询语句都可以放进成一个视图。提供了数据的独立性,用户不用知道数据来源于哪啥意思,比如说我们做一个多表查询。
29:07
多表查询。可以用我们老标准,也可以用新标准,那我只要把这个多表查询,给他命个名字。就可以把它做成一个视图。做成视图之后,让用户从这个视图里发出去。比如说我把员工的信息及其部门信息,及其位置信息。都做到一个视图里头。那用户你就从这表里查不就行了吗?你不用说关心我这个真实的数据来源于哪儿吧。提供了数据的独立显示,不用知道来自于哪,提供了数据的相同数据的普通方显示方式,这个用户我让你看到什么,那个用户我可以让你看到什么。Read or will1个子查询,这当然我们可以给字段起个别名,后面可以加一个with only,后面会说到。
30:12
使用DS创建视图的时候加上一个will。那我们来看一下使用。删除视图?删除视图会影响原来的数据吗?为了删掉他。外行from。
31:04
没了数据有没有呢。删除视图不会影响原来的数据,你只是把那个海市蜃楼删掉了,但是那个物理存在那个现象,它是还是保存的,删除视图不会影响数据。Start,后来我们叫PBBB,然后这个是这是。
32:13
所以撇方啊,Y一点两平方等于B点。De PT那等于d. DM andd.LC等于L角LCD我差E角。形B点型L点型。他用句没问题,给它加上一个great o也小。
33:11
V-HR角BMP。In啊,员工信息加一个位表示will。可瑞头是出意思没有?你在做查询的时候,这个没问题,它有dp number dp number这个字段来自于员工表,这个字段来自于部门表。
34:01
你在做查询的时候没问题,但是你在把它命名成视图的时候,这个视图里头是不是要包含这两列呀,那这两列列名重复了,所以报出来刚才这个错。重复的列。那在这种情况下,我们。你可以给他起个不同的别名。或者说你。用一个字段是不是就行了。那俩字段是不是一样的呀。那我们在这查一点。羊皮number分别给它列出来。一点一点job一点。那两个一点做了1.m减啊E点来看啊,R代E点三了e.com。
35:06
一甲三了乘12。联系一点。塞都统一大小写,1.3乘以12加NVL一点后面还记着NV吗?啥意思来了,如果第一个字段为,那用零来替换那1.3了,乘以12加上,看common是他的年收入。
36:06
然后E点。第一批的拉。e. De.LCD。L点。点。Location and o。一点够。查询员工的信息,他的年薪,他的佣金,他的年收入,他的部门编号,部门名称、位置编号,部门名称,位置名称。
37:03
走。那我想查询哪些人的?年收入大于15000。怎么查?From。From从这个视图里去查条件呢?你那个表里头有啥字段啊?你的表里头是不是有个年收入的字段啊?From。注意,我们在查询的时候,给这个查询字段起了一个别名。
38:02
这个别名就是我们表里的一个字段啊。Where,年收入大于2万的。它就是我们的一个字段啊。当然可以用来被我们作为查询条件了。这些人的年收入大于2万,哪些人小于2万呢?这么几个人。是年收入。我们在查询过程中,给这个查询字段起的别名,就成为我们这个虚表里的一个字段,那现在你在查员工的信息的时候,你从这个视图里来查就可以了,你如果说我只给你这个视图的盘权限。
39:07
那你知道我这个里的数据来自于哪儿吗?你根本就不知道,你也没必要知道,你查询这个信息,它所有的信息不都有了吗?但实际上这个信息是来自于三个表。视图。从视图中去查询数据,加上一个create or replace well,那我们在命名视图的时候,刚才我们是说通过给查询语句,在查询语句的时候给字段起别起了别名。Create of please角。羊皮。
40:09
啊。STEMS。阳。四个字段,那我在创建视图的时候,我可以在这儿给他起。别名叫。人工。编号、员工姓名。这是吸水佣金。
41:03
那现在我这个视图里头。有什么字段?员工编号、姓名薪水中心where。员工编号等于7369。From where d。TM等于SMRG。行不行?
42:00
名字不对,Sit没写错啊,内也没写错啊,好,你这个视图里头那个字段叫员工姓名,它不叫内了,以你这个视图的字段的名称为准。这应该叫员工姓名等。Create will的字段,后面的字段必须要和你查询列表中的字段匹配才行。复杂的视图,你可以给它加上任意的,刚才我们说了任意复杂的视图。任意复杂的查询都可以创建视图,那在这哈,这个叫。
43:02
把使用组函数的查询框线式图smart from emmp。然后。先看看员工表里头。注意,这有个人,他的部门编号是,那我要按照部门编号来分组求他的最大工资,那我先得过滤掉它,Where EP number is not now。然后在这第PT number,然后这个是marks塞。
44:01
卖了,然后some塞了,然后AV a vg3了。Group d。Create p,没有,这个叫V-EP-SS。
45:02
欧版。一个查询。查询的时候我创建成是。啥意思?告诉你这必须使用别名,那如果说你不使用别名,这个创建出来的视图这个字段叫啥。这个字段是不是叫max塞max小括号塞那不就跟那个函数冲突了吗?那这怎么办呢?给它起个别名叫Mars s,这样跟他不就不冲突了吗?Man s。Some。
46:02
Avg。走。这样我们查询的时候手机有什么好看的吗?Wrong。Will。那我加入条件where,这叫马,那个字段是不是叫max塞大于2万?比我们以前用那个heavens就要省事了吧,现在它就是一个表,你想过滤哪个就过滤哪个。以前我们的在分组之后用heavy来过滤啊,现在我就把它创建成一个视图了,你就从那个视图里查,那就是。
47:02
Where are they?那现在我们来看一下视图,就是一个表,只不过是一个虚拟的表。虚表,我们可以对表插入数据,也可以对视图。哦,Please叫V杠阳气as星from阳气万塞了大于2000。
48:16
大于2000的员工的记录,我给大家做成一个视图。走。是。Ins色领土这个叫微阳体音法,你那个视图里有啥字段呢?有阳number那个是。
49:03
8000名字张于转件古乘以十,然后它的经理7902,他的her。12-八四-1987,然后他的佣金是1900,他的奖金是500。部门编号第1T,那什么部门编号是20?特点一点 ep.job的扩大。
50:02
注意那个job字段是九个长度吧,现在我们先去从视图里查一下。这个表里都是六条,记录好。提交我已提交方式结束的事物,那这数据永久的保存在数据库里了。刚刚我确确实实以提交方式结束的事物,那数据怎么没有啊,我从这视图,我不下面视图里查的数据吗?结果从视图里查没有,但是我确确实实是以提交方式来结束的时候,数据哪去了?
51:03
肯定保存在数据库里了,保存哪去了?我这个视图显示的条件是他的薪水大于2000的,我给他差的是1900,那数据在哪呢?对,试图插入数据。数据会被插入到原表中。我这个视图。我的视图的字段来自于另一个表,那我对视图插入数据,这个数据不就自动进到原表里来了?
52:10
看到这儿有没有什么问题吗?有什么问题?怎么着?那是不可能的。你向视图中插入数据,数据视图只是一个海市蜃楼。是一个虚拟的印象,你插入数据,数据最终一定要插入到原表里。你说不想向表里插出去,那你就别向视图里插出去。什么问题我们需要考虑呢?刚才我们那个视图来自于一个表。
53:05
你向这个视图中插出去,不就插到表里去了吗?明白这张图的意思吗?啥意思?我的视图来自于两个表或多个表,那这时候你要对视图插数据。咋办呢?这时候我们现在是处理不了的。就要等我们后面去处理,实际上这也好办,怎么好办呢?你对这个,你这视图里的数据不是来自于多个表呢,那你对视图插入数据的时候,我就把一部分数据插到这边里头。把一部分数据插到这个表里头。不就OK了吗?也是可以解决的,后面我们会解决的,但是现在我们来看它的名字叫。
54:11
试图。啥意思啊?只能看,不能动。你要对视图插入数据,你干嘛不对原表插入数据,还得经过这么一个折腾的过程呢,视图是主要用来查询的。虽然说视图可可以对视图这一电脑操作,但是视图更多的功能是用来做查询的,那我只让你看。不让你看。那在这哈创建只读的时空。
55:00
不能执行编号。还记着吗?增删改。合并。没有查,那在这哈,Slide from,这是创建一个视图。Only。走。你再对视图插入。我就不让你看了,创建了一个只读的视图,不能再执行DL操作,你再执行就会报错了。视图是用来看的。
56:00
用来查询的,你别对它进行操作。
我来说两句