00:01
第11节其他数据库对象,在前面几节当中,我们讲了表和视图啊,这一节呢,我们讲剩下的这三个数据库对象,包括序列索引和同义词,那前面这两个表和视图是我们讲比较基本的表,尤其是表啊,表呢,它那个我们基本的这个数据,数据库里边这些数据都是存储在表里面的。而这个视图呢,嗯,我们也知道了,它实际上都需要有赖以存在的这个表叫做基表,它呢是从这个里边抽取出来的是吧,抽取出来的你对视图进行了修改,它还是会影响到它存在的这个基表的。啊,这是视图,那这一节呢,我们讲序列索引和同义词,序列呢说叫提供有规律的数值。提供有规律的数值索引,索引呢可以提高查询的效率,同义词用来给对象起别名,这里边的索引跟同义词大家呢,作为一个了解,知道他们是什么情况啊,能够创建一个最好。
01:08
那这一节相对比较重要的是这个序列啊,序列的概念啊,那么序列的话,我们看这啊,哎,我们说表叫tables,视图呢叫view,那序列呢,在这叫sequence sequence翻译过来的话就是序列。那就是序列,那么什么是序列?刚才已经说了,用来产生这个有规律的数值,它呢?这写的叫唯一的一个数值的数据对象,用来给多个用户产生唯一数值的。前面我们讲视图的时候说过,说既然这个东西存在,我们就要想为什么要有它,它主要用来干什么,对吧?序列也是一样,为什么要有序列,序列主要用来做什么?这里边儿已经写了它呀,主要用来提供组键值。然后呢,你这个序列如果装入内存当中的话,可以用于提高访问的一个效率,这就是序列的一个作用,它用于提供主键值还是唯一的一个数值,怎么来理解,哎,那么怎么来使用,那我们创建一个序列,就我们后边有有这有这个创建序列的方式。
02:19
创建表叫create table,创建视图create view,那创建序列就create sequence,哎,Create创建序列就create sequence,对吧?Create sequence这个序列的名字后边increment by每次增长的数值。Start with从哪个值开始?Max value最大值,Mean value最小值,然后呢,是否需要循环,是否需要缓存,就是这样几条信息。那我们创建一个序列的时候,就从这几条信息出发,来我们写一个序列。和这个我们当时创建视图一样,你要想创建序列啊,前提是你肯定得具有这个权限是吧,你要没有这个权限的话,你到这个控制台这块给他加进来啊,然后呢,Create sequence,嗯,我们起个名字emp,嗯,SEQ,就它创建它以后,然后呢,指明音。
03:25
C。每次,比如说我增长十个,这个的意思就是每次每次增长十个数,嗯,Start with start with,我也让他从十开始吧,哎,那么就是从十开始增长,下面提供一个,嗯,比如说max value6最大值,我写一个100。
04:01
然后还有最小值,最小值如果没有我们就不写了。这是最小值,然后过了以后circle循环吧,表明需要循环you no。嗯,不需要缓存登录。这样呢,我们就可以来创建一个序列了,OK。创建成功,创建成功以后,我们就可以在这里来看一下是吧,我们发现这里边儿本身也存在着几个序列啊,这是我们刚才创建的这一个。创建这个序列。创建好这个序列以后,这个序列啊,它是一个数据库的对象,这个对象还有两个方法。
05:00
这个比较特别啊,它是两个方法,它不像我们前面讲的视图或者这个数据库数,这个数据表一样,你可以这个select星from一个表或者一个视图,你这里边写它是没有任何意义的,你看是吧,没有任何意义啊,他也不知道你这是个什么,只有表和视图允许这样来写,不允许放序列。那我们怎么来看这个序列这样的,我select e s EQ点你看出来有两个,这个你可以理解成方法或者理解成属性都行,一个是next value,一个是current value。一个叫下一个值,一个叫当前值是吧?假设我们先看一下当前值from到。大家看他报一个错误说,尚未在此对话当中定义。那我们如果使用另一个呢,Next value。
06:03
哎,写错了是吧。把二去掉。这时候可以了,十你再写一个,是不是就变成20了?这个定义完以后,如果你说我要再定义一下这个current value。你看这时候就可以调用了是吧,从这呢,我们说明一点,就是这两个属性也好,方法也好,首次你使用的时候必须得先用一下next value,让它先出现你这个start with的这个值,然后呢,你再用这个value就行了,要不的话,相当于这个还没有启用,你就要current value是出不来的。啊,这是我们需要说明的一点,然后现在增长到20了,你再往下增。是不是接了三十四十,哎哎,错了啊,Next。五十六十就往上涨呗,一百一百呢,是我们声明的一个最大值,那再往下长的话,它是不是就一个循环呀,那不能一了啊,因为100以后是是第一个数是一呀,紧接着是一,那你再再接着让它往上。
07:19
涨十一十二二二二十一就这样一直往上涨,对吧,这就是我们说的这个序列啊。这个序列现在就是这样来使用,但是它肯定不是就是仅仅让你这样来玩的是吧,这这有啥意思啊,它这里写了主要用来提供补件值。组件值。主见值怎么来理解?大家你看实际当中大家上大学的时候,每个人是不是上学都分配了一个学号吧?每个人都有个学号,然后而且往往呢,嗯,你的这个同学学号跟你都是挨着的,嗯,你是零一,他就是020304,一直这样排下去,那么对于学校来讲,还有一个数据库来存放这些学生的这个。
08:05
哎,信息。第一列呢,加一个学号,或者我这里这里就简单用这个ID来标识,这是ID后边呢,像这个学生名啊,哎,这个学生的这个地址啊,性别啊等等这些信息。那么我们这个数据表怎么来的,肯定是一条一条的往里插入数据的,对吧?因为这个叫张三,然后今年这个这个呃,18岁了,嗯,来自于河北省,嗯,是个男的,那么是这个这个小红是吧,是个女的,嗯嗯,今年19岁等等等等这些信息加进来,前边这个ID也是需要添加的,这是一号,这是二号。然后我们想哈,你这个ID这个号。反正每个人的都不一样,然后呢,这些信息你得根据具体情况是谁是谁的是吧,我现在我就知道你这个ID就一依次往下排就行。往下一次走就行,我就不想着再每次去写了,隐色的时候我想略过它,或者说我用单纯的一个东西来整个给它提供这一列的值。
09:10
你就1234是不是依次往下,而且这个我把它当做一个主键,这个主键是不是唯一的写飞空啊。唯一且非空,而我们刚才也说了,这个序列它就可以用来提供唯一的一个值,那我何不就让一个序列是不是来充当一下你这个主键值啊是吧?用序列来充当这个主键值怎么使用,就是用我们这里边这个叫next view,每一次是不是都给你写写这个东西,他不就给你一点点的往下增长嘛,只不过这时增的话是每次增长一是吧。哎,就是我们刚才说的这个内容,这个序列主要就是用来提供主见值。啊,主要用来提供组件制。你看是不是也正是因为这个原因,你你看到我们在这个表里边儿,是不是已经存在着三个序列。
10:06
它这三个序列干啥用的呀,它是不是就是给我们已经存在的这个employees表,Departments表和location locations这三个表提供那个主键的那个值的呀,因为他们是不是都有那个ID呀。他们那个ID就是通过这三个序列来提供你的,嗯,那我现在有这个序列了,我自己造一个表往这个用它来给我这个表提供组件值,是不是也可以啊。好,我们创建一个表啊。Great table e01。As select employee ID last name salary from employees where,一等于二。
11:04
我造了一个空表,创建好以后select星from ep01没有数据。啊,那我现在下一步不往这个表里边去添加一些数据,那就是insert呗,回忆一下色怎么加inside into e01 values,我们之前加的话,你是不是就这个写个嗯,E,然后名字AA,工资2300。就这样呗,把相应的给大家都附上值好附上,然后我们现在讲哈,我们以后你再往下加的是我我这个一,我把这个ID当成是我这个表的一个主键,我就不这样一个个去写,下次写二它很麻烦,对吧,我怎么写啊,我就用我们刚才产生的这个序列,它来给我提供这个值。
12:05
提供这个ID这个值,但是你看现在呢,我们这个叫BB。2500。提供了一个是吧,我再给你插入一个,这是不是就不用改了呀,你每次调用一下,它是不是自动的,就给你往下加一下啊。是吧,我加了几条,然后我看select星from e01。你看是吧,它自动的就会给你往上递增,这多方便啊,这都不需要我们再去给你这个每次亲自去写了,省去这个人工的一个这个这个劳动力了,再者呢,它会自动的按照你指定的这个每次加几个数,自动的往上涨,一定给你提供的是唯一值的。只不过我们这时候有循环,那我一会儿可以改是吧,一会儿可以改。
13:03
嗯,就是这样子的,这也非常的方便哈,那下一个我们就说说这个改的这个事儿吧,包括你看我们现在这是不是ID的话,正常我们让他每次涨一个数就行,你这每次涨十个感觉不太理想,那么每次让它涨一个,涉及到对哎这个序列的一个修改。修改的话同理,你要是之前像那个table和view熟悉的话,那这是不是也是alter呀?嗯,Al sequence他呗,怎么改啊?嗯,我想给你改一下in improvement是吧?In improvement by每次增长一,然后呢,我也不让你循环了,叫no circle就不让你循环呗,每次就往上涨就行是吧。改了改了以后,你看这时候我再往里边去给你。
14:02
点。一亿六千五再看。大家看那这时候是不是就增长个一呀,而且它是没有上限的,就一直往上涨。非常的方便是吧,这也就是我们讲这个序列的一个主要的一个使用。主要的使用修改,我们后边这有。哎,修改一个序列使用的叫al sequence修改序列,可以修改它的增量,最大值,最小值,循环的选项,以及是否装入内存,哎,能改这样几个信息,那这个初始值,这需要大家额外注意啊,这个初始值的更改啊,比较麻烦。你看你现在这个序列是不是都已经涨到刚才改之前涨到61了,你不能在这个时候说,哎,给我改成开头一,那你开改成开头一,你再添加是不是重重复一了是吧,我这个更改比较麻烦,他说你要想改变这个初始值的话,那你必须得删除这个序列,或者是重建这个序列才行啊,这个是需要注意,当然你整个这个修改的过程啊,前提必须是你具有这种权限才行,你有这个修改的权限你才能够改啊,一般我们具有创建这个视图的,呃,序列的权限的话,都能够来改。
15:28
啊,这是我们讲的这个意思。啊,然后呢,我们这里边儿还有一种情况。当然你看这个我们正常这样使用序列就行了,就是刚才说的这种,这就是主要的一个使用啊,然后这呢说会出现一个裂缝啊,会出现一个裂缝,裂缝这个概念我们以前没说过。没有接触过什么叫裂缝,就来源于生活当中,比如说这个路面是吧,用时间久了以后,中间裂一道缝。
16:00
啊,或者说这个夫妻之间,或者男女朋友之间吵了一次架,或者因为这个中间有一个什么第三者,两者之间的关系产生一个裂缝。这个意思是不是就中间没有像原来那么平滑的去连起来了是吧?嗯,比如说在我们这里边,嗯,前面我就先不管了,61 62 63 64是不是就算着是每次增长一这样连着点,你突然中间62没有,只有63,再接着64没有62,它是不是就是算是一个裂缝,哎,就这样的情况啊,什么情况会导致这个裂缝啊,一回滚第二系统异常。啊,第三多个表同时使用同一个序列。这三种情况会导致裂缝,那那我们就稍微说一说啊,先说这个吧,比如说啊,多个表使用同一个序列。这个呢,我就呃不额外再举例子了哈,我就这样说一说就行,我们这是不是有一个叫EMP01啊,你看我假设现在呢,我再创建一个表叫EP02。
17:07
然后这个表跟这个表这个框架一样哈,我假设也有这样三列,你也拿过来放在这。一个叫ID,一个叫name,一个叫salary,那如果我这个ID也使用我们刚才这个EPEQ这个序列来提供这个主键值的话,那下一个你往这1INSERT看,这是不是就成了63了。因为你这是不是到62了是吧,这63加进来,你要再加个就来个64,哎,再往这加。然后你这加了两条以后,我这个表啊也使用这个序列,那你再往这加它可不是63了,是不是65了呀。65了是吧,那你从这个角度来看,这是不是中间就是一个裂缝。这个数没有连起来,所以说我们在使用这个序列的时候,大家你尽量不要。
18:01
哎,多个表共用同一个序列,你看我们这个表,人家这三个是不是都自己一个表一个序列,哎,避免出现这个裂缝啊,这是这样一种情况,这里边儿还提到一个说叫回滚。叫回滚回滚,这是一个什么情况呀。我我举个例子吧,把这个情况我们说一下,你看这是叫E01,我这个时候commit这个大家理解吧,我已经提交了啊提交以后呢。我INSERT1条数据。FF7500也测了对吧,你这以后我再select一下。这这没问题是吧,它仨是连着的,但是这个时候操作完以后啊,我roll back了,回滚回滚完了我再射一个。
19:07
那就是GD。嗯,8500。大家你看这个时候如果我拉了一下,你看看是什么效果。是不是中间产生一个断裂。这明显就断裂了是吧。这是什么情况,就是你看一开始我们六十一六十二,我在这个时候,在这个时候我给commit了。哎,我简写commit了,然后之后呢,我insert了一下。哎,隐射的时候,那你这就是63。然后呢,这个时候我roll back。你1ROLL back是不是这个就给挂了呀,就没有它了,就roll back到这儿了是吧,这个就给挂了,挂了以后你再insert了,因为你这个序列人家可不给你roll back,它会自动的给你提交了是吧?那所以你再隐射的时候是不就变成64了,相当于63就没有了。
20:05
这叫一种锻炼,大家你把这种情况你你你知道就行了哈,理解一下就行,你你不需要过多关注,然后你使用的时候。唯一注意一点就是你一个表维护一个序列,不要多表共用一个啊。行,下边说,如果不将序列的值装入内存,可使用这个当中查看当前的有效值。当前有效值的话,你或者在这看,在这看可以,或者呢,我们这下上面有一个。这个叫查看序列是吧,我们可以通过这样一个命令查看一下当前的这个,哎,我们用户的这个表里边儿的序列都有哪些,你说V。这不就这四个嘛,对吧,这四个这四个这个是我们自己创建的这个,如果当你没有考虑这个circle的问题的时候,它显示的是下一个值64,然后下一个值就是65是吧,这个你知道就完了。
21:03
这是我们说的这个序列这个情况后边呢,就是嗯,修改修改说了,那就删除了吧。删除,删除序列跟前面的数据库对象一样,Job。这不就删了吗?然后你再来看,这就没有了。是吧,哎,这我们就删除序列,好,这是我们讲的这个序列的知识就说到这儿了,是我们这一节内容的一个重点。大家你自己操作操作啊,然后下面那个叫索引。我们看看这个索引,索引这个词大家肯定听过是吧,我们上小学的时候,大家肯定就接触字典吧,那就就用字典,那字典你看在前边是不是都有这个索引。都有这个索引啊,这个索引跟刚才说的字典的索引实际上是一回事。那我们字典里边索引作用不就是大家你在查这个词的时候,我通过这个索引是不是能够提高这个查询的一个效率呀,你如果没有前面这个索引,你要找一个字挺麻烦的,得到后边去11.1点点去翻是吧,那有了索引以后,我在前面翻的啊这个字。
22:17
嗯,这个有几画,然后呢,是在在这找到以后,他在第多少页,然后我直接翻到那一页就行,是不是查询速度非常快。对吧。这就是索引的一个好处。那到这儿以后也是一样,它既然叫索引,那跟那个索引实际上就是,嗯,是类似的啊。哎,我们看一下它的这个说明,所以呢,是一种独立与表的模式对象,然后可以存储在与表不同的磁盘或表空间当中。所以被删这个了解一下就行,所以呃,被删除或损坏不会对表产生影响,其影响呢,只是查询的一个速度。大家你看那个,嗯字典,你说我如果把前面这个索引给它都撕掉了,那你查字是不是一点不受影响,这个字典比如说有两两两万个字,你把前面索引撕掉以后,是不是还是2万个字啊。
23:12
你要把后边那个这个真正字那块删了,这个撕了几页,那那字就少了是吧,但是你前面你把索引词的后边那些字还是那么多,它不影响你这个表哈,只是说我在查字典的时候,是不是就费了劲了。我就得一页一页一页的翻一翻,然后看看那个字在哪是吧,所以说所以在这也一样,如果它被损坏的话,不影响你这个表,只是说我查询的这个速度就慢了。嗯,下边说索引一旦创建建立,我们可以造一个索引是吧,你索引一旦建立了,Oracle管理系统会自动的对它进行维护,而且由Oracle管理系统来决定什么时候来引用这个索引。用户不用在查询语句中指定使用哪个索引,就是嗯,你要是自己创建一个索引,那你创建好以后,你不需要显示的去调用了,这个程序,在你使用这个你相应的这个索引指定的那个表的时候,它会自动的来来获取你这个索引去指向。
24:13
就会能够加速是吧,不需要你显示的再写这个索引了。删除一个表的时候,所以基于所有基于这个表的索引都被删除,这很容易理解是吧?通过这个指针来加速服务器的查询速度,然后减少磁盘的IO,就是这个索引作用,说白了就是加速嘛。对吧,行。那下一个我们要说的就是如何来创建一个缩引。如何来创建索引?刚才我们说的就是索引到底是干什么用的,既然知道干这个用的,那我们下边就是来创建,创建,你看这写了两个,一个叫自动创建,一个叫手动创建。这个有点特别了,前面我们没有说过这还有自动这一说是吧?其他的数据库对象是没有的,自动创建,你看在定义primary key或者unique约束以后,系统会自动的在相应的列上创建唯一性索引。
25:11
啊,这个索引也是唯一的是吧,那既然它可以自动创建呢,大家你看一下我们这里边儿是不是有一些表,就比如说这个employees表。它这个表有主见吗?是吧,他有这个唯一性约束是它吧,它说这两个会自动的创建索引,你看这。索引翻译成英语就叫index。双击大家你看到是不是这个就是组件,这个是那个UN的约束是吧,所以说它会自动的来创建这样两个索引。那就这样,你自己创建一个表,加上主键,加上这个唯一性约束的话,它也会自动的给你创建这个index的,啊好了,这个我们就不多说,这叫自动来创建。除了自动的方式以外,我还可以手动的创建,用户可以在其他的列上创建非唯一的索引加速查询,那创建方式就是这样。
26:11
Create索引索引名啊,哪个表的哪个列,它是相当于是通过你这个列是不是加速这个查询量对吧?就像我们刚才呃看这个employ表一样,它是呃作用在ID和email这两个列上的,当你通过ID或email来对这个表中的数据进行查询的时候,它能够自动的给你后台加速。你说删了这两个索引有没有问题啊,一点问题没有,只是说你查询的时候速度变慢了。对吧。好,那我们来手动来创建这个缩音。我给谁创建呀,我们这里边那会儿刚才创建了一个表叫EP01这个吧,你看它这里边儿的。
27:00
所以这没有吧,好,我给他创建一个索引。Create index索引EP01。嗯,我是作用这个ID上的in X这样写啊,嗯,Create它on ep01这个表的。Employee ID这个列OK。作用好了,作用好以后,我们再来看一下刷新。Next,你看这是不是就有这个了啊,然后呢,比如说我们这个表的数据量还不小,当你下次通过这个诶ID这个属性进行查询这个表的数据的时候,比如说where ID小于1000,它会自动的后台调用这个索引来提高你这个查询速度。
28:06
啊,就是这样情况,那你这是创建一个缩引,然后删除的话,是不是同样的叫照呀。Job这个索引DXEP01IDX这就给删除了是吧?哎,这是这个删除这个索引,那么呃,知道如何来创建以后,我们下一个需要问的哈,就是我们当然也知道如何来删除了,下一个大家你看这个知识。叫什么时候创建。你看啊,我们刚才一开始讲了,哎,所以是干什么的是吧,所以是干什么的知道哦,有好处能够加速。然后我们说怎么来创业。哎,怎么来创建,创建也讲了,那下一个就是说你什么时候来用它。什么时候来创建索引,大家你看这个,当你这个列中的数据值分布范围很广的时候。
29:03
那我就可以考虑把这个列生命成一个,呃,把这个列用一个索引来处理一下,当你再查询,通过这个列来查询的时候,速度变快了。啊,这个通过这也实际上就说明什么呀,不是说你这个索引能提高速度,你就乱创建索引,那有时候创建的多了还麻烦了,反而变慢了,怎么能真的是变快啊,就是列中的数据值首先分布范围比较广。啊,比如说呃,你这有一个表,这个表呢,就是呃,公司的员工数,公司的员工你有一个叫年龄这样一列啊,中国人的这个年龄或者正常人的年龄,你就是从零撑死,你是不是这个这个一百三吧,你看这些数是这是是不是就总共也没几个数啊。而且还都是整数,这数数数据量分布范围我们认为比较小。那你再给这个年龄上加上一个索引,我们就觉得没有必要。
30:01
那你比如说现在又有一个表,他记录的是人的这个工资,这个员工的这个工资是吧,那你工资的话,比如说像正常一个人,他工资有可能是零,不挣钱,也有可能有的人是不是一个月挣这个,甚至这个上亿呀,那你这个范围分布是极广的,那我就可以给这样一个列加上这个索引,那你再通过这个列来查询一些数据信息的时候,它会加速,这个呢就不一定。这是一个情况,第二个呢,这个列啊,经常作为外子句或连接条件出现,经常把它作为一个条件查询,使用比较频繁,那我就给你加索引,再一个表经常被访问,而且数据量很大。表经常被访问,而且数据量很大,访问的数据大概占总量的2%~3%。嗯,就是被访问的这个数据量很大,但是呢,这个本身这个。要被访问到这个数据啊,大概是占这么多,你如果太大了也不好。
31:05
嗯,就比如说你这个字典,你要查的这个字啊,大概都占到你这个字典的这个一半以上,那你每次查这个字还通过前面索引反而变慢了,因为你调索引还得需要一个时间的是吧,你后边频繁的被调用,那就干脆不用索引。嗯。相对应的什么时候不要创建缩引,比如说你这个数据量查询的,刚才说的哈,查询有太多了,或者不经常在外中出现,或者表很小,嗯,都不用加索引,那或者说那个表经常被更新,那也不行是吧?因为我们说你创建这个索引,然后在查询的时候速度变快了,那相应的你再进行增删改的时候,是不是就变慢了。这一定是有这样一个一个一个这个逻辑的是吧,有些东西就是你有好处,那也有不好的,你像现在这个出这个安卓手机,我苹果手机这个非常方便,就跟一个电脑一样,但是我能明显感觉到啊,这个人跟人的交流这个少了,你看我这次从这个石家庄回北京。
32:11
嗯,然后这个回家的时候把手机给弄丢了,然后在火车上我坐的那个位置,大家就一句话也不说,就都在那玩手机,我呢,因为手机丢了,所以这个没事干了是吧?你像原来的时候几个朋友在一块吃饭,都不玩手机,这个相互之间聊天说话感情都挺好,现在呢,大家一吃饭,谁跟谁也不说话,都拿着自己手机玩。啊,任何事物的出现,它就有利也有弊啊。那我们这个索引也是一样,你这个索引既然能加速,那你查询的时候加速了,再进行更改的时候就慢了,因为他在改的同时还得需要维护一个索引是吧。啊,这就我们说的这个内容啊,然后啊,这个我们就都都说过了,删除索引后边最后一个内容叫同义词,同义词这个用英语翻译就是它,嗯。
33:03
它呢,使用同义词访问相同的对象,方便访问其他用户的对象,缩短对象的名字,对这个作用就是它啊,你看我们前面写那个是不employee,感觉老长了呀,每次得写这么长,然后我们自己这个表里边的时候加上一个E,那你也仅限于是不是你自己这个select里边用,你出了这个select就没用了,那我可以造一个同义词。就这样是吧,我造一个这个同义词。权限不足啊,那我还必须得有这个权限才能造来增加一个这个权限。嗯,我这还以DBA的形式进入。
34:02
我自己是服务器嘛,是吧,所以比较省事啊到的用户。增加一个系统权限,叫create any这个同义词。在这吧啊啊s name s name啥的啊,然后添加进来,然后确定关了,关了以后我再来创建了,创建好以后这个时候啊,你如果再select的话,你就爽多了,Select的心from e。你看。这还是这个employees这个表啊,在这儿呢,相当于是多了一个同义词,同义词在这是不是这个意啊。它是一个物理文件了,你关了机,你下次再再来使用这个employees表的时候,就还可以用这个E来表示。啊,这就是我们讲这个同义词了解一下就可以了,我们这呃这个创建了一个同义词,你再删的话还是drop是吧,这个还是drop啊。
35:05
这一节呢,我们一共讲了三个,一个叫序列索引和同义词,大家你重点熟悉一下这个序列啊,索引知道是提高效率的,同义词呢,是给数据库对象来重新起个名字,这样你在查询的时候,这个比较短了是吧,嗯,就好理解。诶,这个时候你虽然给他起了一个呃同义词,但是你要是说我还想查询原来的这个,你用这个employee,那一点也不影响是吧,原来这个表还是可以用的啊。有这样一个情况,好了,我们这一节就到这。
我来说两句