00:01
哎,这一节呢叫其他数据库对象,我们看这个练习题之前,我们再把这个整个我们讲的内容回顾一下,因为这一节呢,也是我们讲circle的最后一节,叫其他数据库对象,这一节当中我们讲了序列索引和同义词,加上我们之前的视图和表,整个常见的数据库对象就这样一些,在面试的时候,假设问到这个问题,那大家你应该会答。嗯,那我们来稍微搂一下。来写到这儿吧,这是我们这个练习题目,我写到最后啊。哎,我们先讲了一个数据库对象叫做表,其次呢,还有视图。序列索引同义词相应的用英语怎么说你也要会表呢,就是table吧。
01:00
视图will序列sequence索引,Index同义词。是他是吧。然后呢,呃,讲这几个东西的时候,大家你要仿照一个什么的一个想法啊这样,What,什么是索引,什么是表,什么是视图,然后呢,Y为什么要讲它,然后怎么去使用它。是吧,我们学习任何一个事物,是不是都应该有这样一个顺序啊,当你见到一个新事物的时候,哎,什么是它呀,看完以后,然后说为什么要有它?有它,它是要干什么的是吧,这个在明白以后好了,那我是不是就应该把这个好的东西为己所用,那我就应该知道怎么来使用它。是吧?嗯,比如说你追个女生也是一样,哎,这个女生是什么样子的?你说她这个长得非常漂亮,哎,身材还好,哎,工作也不错,那你这是他的一个基本情况,然后你说,哎,我要追他,你为什么要追她呀,你可以得给一些理由是吧,理由很充分呢,哎,我们怎么样去追到它是吧?哎,都是类似的哈,任何你对这个事物的一个认知的过程,都是有这样一个顺序的。
02:24
就比如说我们讲表,哎,什么是表啊,我们说它是数据库的一种对象,呃,这个表里边有行有列,行呢,行从横向来看,它就是一条一条的数据,那你从纵向来看呢,就是关于你每一个数据的一些属性也好,一些特征也好,比如说这个员工的里边有员工的ID,员工的呃,工资,员工的名字等等,这不都属于他的一些信息吗?那知道这个是表了,那为什么要有表啊?我们说你是不是要想存储东西的话,那一定得有一个载体啊。那么这个最基本的载体,我们用的就是表。
03:01
这是为什么要,那怎么去使用表,是不是就涉及到我们对表的一些操作吧,那我们第七节第八节都给大家讲了,呃,第七节说创建和管理表,这是对表的DDL的操作。除此之外还有DML,叫增删改查,这就是怎么使用表是吧?那视图呢?视图它虽然是一个物理存在的文件,但是它是基于已经存在的一个表来生成的。那你对视图的更改,它会影响到原表的修改。那么要有视图,一方面呢,嗯,这就说道为什么要有视图是吧,我们也说了很多了,一方面呢,是方便你简化查询,我可以将多个表之间都给它连接起来,创建一个视频。哎,另一方面呢,在这个表里边儿,原来表里边有一些数据,不希望所有人都看到,那我就可以通过给你创建一个新的视图,只选择你能看的这个列,哎,让把这个视图的权限给你,让你来进行一个访问是吧,那没必要的,我就不让你访问那个原表了。
04:06
呃,怎么去使用,那就也是试图要涉及到刚才跟表一样的这些操作,呃,同样的关于他们仨也是一样,这三个里边后两个作为一个了解,主要呢,我们要知道这个序列什么是序列啊,用来提供一个唯一的一个值的这样一个一个数据库对象是吧?那为什么要有这个序列啊?嗯,就是相当于我们有序列以后可以干什么。我们说序列常常用来生成这个主键是吧,因为它能提供唯一的一个值,那我这个唯一的值就让你来提供主键非常好,你看我们上面这个练习。哎,这个我们都讲过了哈,我们后边就说怎么来创建序列,就是这样create sequence序列的名字。然后下面呢,相应的有几项,比如说每次增长的数量从哪个值开始增长,最大值、最小值是否循环,是否缓存登录,这样几条信息一一给它列出。
05:05
如果没有的话,你就可以不写了啊,没有必要说每一条这个都需要给它数字化啊,根据你的需要,一般这两个肯定是必要的,然后这个数据库对象呀,有两个对应的方法,一个叫next value,一个叫current value。这里说了说next value应该在current value之前被指定,二者应同时有效。就是说你要是生成一个序列以后,必须得先调一下next value才能够调用它,如果一开始就初始化调用它的话是不行的。而且你第一次调用的值虽然是next,但是它的值是十对吧,这跟我们哪比较像。画一个图啊。在这画吧,大家还记不记得我们讲Java基础?扎基础的时候讲到一个叫迭代器,我们这儿呢是一个集合啊,是一个list或者是一个set,这都行,这是一个集合,集合里边有元素,我通过迭代器进行便利的时候,我们是不是调用那个ER是吧,然后EER2个方法,一个叫has next。
06:19
另一个呢,叫next。是吧,Next,然后呢,当你第一次进行调用的时候,我看你has next是否有第一个值,然后有的话我再调next方法输出这个值,那相当于是不是一开始这个指针是指在这个集合的上边的,它并没有一开始默认指定的第一条是吧?指定的上边跟这个是一样的,你这个序列也是一开始指定的是上边是一个空的啊,然后呢,再叫next value指向第一个值,比如说我们这里就是十。所以说你直接上来就current value,这肯定是不成立的是吧,所以必须得先next一下。
07:00
好,哎,这就我们说清楚了,如何来创建一个序列。好,下边关于这个索引,哎,What y,好,我们可以同样的来理解什么是索引,哎,它呢,主要是用来提高这个效率的,是吧,提高效率那什么是索引啊,我就可以创建一个索引,让它指定在某个表里边的某一个列上。这样呢,你在查询的时候效率会提高是吧?这是我们说了,为什么要有索引呢,用来提高效率。那哪些情况上适合加,我们也讲了,怎么来创建这个索引,我们讲了两种方式,一种叫自动的添加,一种叫手动的,自动的呢就是当我们有了一个表以后,比如说我们这里的employees表。那么这个表里边儿相应的就会有主键,有唯一的约束,那么系统会自动的将你主键和唯一约束对应的两个列,一个是叫ID,一个叫email,自动的给它加上两个索引。
08:02
你看这是有是吧,这是自动的创建索引,还可以手动创建索引,在你比如说我们这里表里边有很多列,除了这两列之外,还有一个,比如说salary,我经常用salary作为查询条件,加到那个where里边,所以我把salary也设置成一个索引,那你就可以create,然后让它作用在呃,Employees表里的呃,Salary这个列上。再通过这个三轮来查,效率会有变化。啊,这是索引,然后同义词,同义词就是你可以给像这个employees啊,Departments啊,名字感觉比较长,重命一个名,然后当你下次再进行查询的时候,它就能够出来。对吧,再次查询的时候,你就可以通过这个从意词来进行调用。这时候大家需要注意哈,我们这儿造了一个同义词,它并不是对已有的这个表的一个复制啊,不是对已有表复制,而仅仅是起了一个别名而已,具体它这里边的东西还是employ里的。
09:04
啊,这是这个内容。行,那么这个总结呢,我们就就到这儿,然后关于这个练习这儿也就不用多说了,这是整个我们回顾了一下数据库对象。那下边呢,我们看一下。我们这里边儿这个word版的练习。诶,看第一个创建序列,它开始值为200,每次增长时最大为1万。来,我们创建这个序列,叫create sequence depd seq,它,嗯,In,开始值start with 200。
10:07
嗯,In toment five 10much value 1万,那就这样写这个大家你注意啊,这几条信息之间没有逗号是吧,我就直接干列出来的。嗯,然后呢,这几个的顺序上下你是可以颠倒的,上下可以颠倒,这也不影响我们创建的这个序列,OK,好创建了,创建以后我们就可以在我们这个数据库对象这一块找这个sequence。刷新一下。这个就是是吧,好,我们创建好这个序列了,创建好序列你就可以通过next就可以来调用了啊next value,下面你说说使用序列项表当中插入数据,这也是我们讲序列的主要作用是吧?嗯,这里这个表给你写现成了,那我们就直接拿过来。
11:07
De PT这个。我们看这这有可能这里边儿已经存在了这样一个表了,是吧。嗯,确实已经有了啊,那我们给它改成嗯,零一这个创建这个表不用我们多说了吧,哎,S select他一下,这是基于基于已经存在的这个表来创建,而且让这个表是一个空表。好,创建了,创建好以后,我现在使用刚才我们创建这个序列,向这个表当中去增加添加数据,以DET01看一下这个表的结构,然后我们来insert insert into de pt01values来第一个叫ID,我这里ID,嗯,可以把它默认为是一个主键,然后它是唯一的,正因为它是唯一的而非空的,所以我们用X value非常合适。
12:08
就用这个序列啊,DEP它点next value逗号,然后name部门。嗯,有会计和count。添加了,然后再加上一个,再加的时候他就不用管了,就直接还让是他就行,Sal销售。是吧,嗯,就再整一个,嗯,HR human resource人力资源的啊好了,然后呢,Select星from dept01,大家看这是不是就我们添加的这个,每次增长时从200开始。这是我们讲序列的主要使用啊,后边关于索引和同义词大家作为了解就行了,嗯,把这个内容我们给它复制过来。
13:43
行,那我们随着刚才这个练习题的做完,整个关于circle的操作我们就讲到这儿,然后后面呢,我们还会给大家讲PL circle circle呢,说白了还是一些基本的语句,对吧,你这个语句啊,它没法被复用,那后边我们讲PL circle PL circle是真正的一门编程语言了,很多Oracle的一些插件都是使用PL circle口来写的。
14:07
那大家这个学完这个circle以后,我们欢迎大家后边学习PL circle。
我来说两句