今天数据库上课学习了三个概念,再加上之前学习的视图和索引,我决定一起做个总结。当然,此次总结只为了理清思路,不涉及具体代码。说到这个先插播个局外话,我觉得老师一句话说得挺好——大学学习的是方法论,这句话算是解答了我一直以来的一个疑惑——大学上了有什么用?大学上的东西都是已经过时的,我之前一直这么理解,以我学的技术为例,不管是大一学习的access数据库,还是之后学习jsp印象比较深刻的表格布局,access数据库无疑企业开发是不会用的,但是我们学习的东西实实在在是真的有用的,不管是当时就觉得有道理的物理模型和逻辑模型打开了对于计算机世界怎么反映现实世界的疑惑,还有之后在企业中也有见到的E-R图、范式等。还记得之前用了好多天使用table表格布局模仿了火狐的首页,但不久后知道table布局早就淘汰了,但是我做的table真的就没有意义吗,或许之前我也曾这么怀疑过,但是现在不了,因为有了这些经历,我再换成div加CSS布局后速度非常快,甚至我学HTML和CSS其他东西也变快了。当然这两个例子还是不太合适的,因为按照这样来我们学习的东西是有限的,那么怎么办呢?答案在上面给出了,大学学习的是方法论。我们不应该在具体的细节上花太多时间,而应把重点放在理解上,把不同的但是又相关的知识点串联起来。总有这么个现实,毕业之后我们和985、211的学生都差不多,实际上都可以说什么都不懂,企业往往要他们,我们看到的表面可能都是这样,然后他们比我们真的没有明显的优势吗,不应该,他们还有方法论,他们可能不知道要怎么做,但他们往往知道要做什么,简单地说就是他们学习能力更强,这点我是有体会的,暑假在华师实训,同组的就感觉华科的学生学习能力比我强好多。现在我自己自学久了后也有一种感觉,我只需要想出问题要怎处理,想好逻辑,至于每一步的代码实现我完全可以百度到。前面的这么多总结就是一句话,重视方法(逻辑)可以加强你的学习能力,至于具体过程在时间不够的情况下可以暂时忽略,我们有了思想框架百度起来就快了,就怕什么都不懂。前面说到了方法论,方法论在于理解,但是理解不是那么简单的,自以为最有效的理解就是联想,但联想是需要有基础的。也就是需要一定的实践。之前看过一篇文章——985、211的人学习技术一般都是由老师带学生组成团队,团队一般由教授研究生和本科生组成,我们没有这个条件,就只能自学,自学开始会很难,经常一个问题会自己想好久,但慢慢的过了这个时期就会快很多,慢慢的你会觉得没有问题是你解决不了的,我不确定每个人的入门期会需要多久,但我自己的不短。
前面跑题跑了那么久,是我自己也没想到的,看来得改题目了。现在回到正题,先说说基本概念,说是基本概念也只是我自己理解的,没有老师PPT那么全,真正理解更是要结果SQLserver的数据库管理工具,但实际上我自己也没打算在现阶段弄清楚它的代码实现,只需要知道他们怎么回事,没有疑惑,具体要用百度就很快了。
视图:简单的说可以理解为一个不完整的镜像,每个数据表里面的东西很多,但我们用的时候并不会需要所有的东西,视图就可以只展示我们需要的东西,比如,我们可以给学生表创建一个视图查询学生成绩只展示我们需要的东西而不是所有东西,而且视图还可以像java中的方法,c中的函数一样,可以通过视图名称调用。
索引:简单的说索引就像书籍的目录。那么它的作用是什么呢?这是我当初的疑惑,这我们只要想想目录的作用了,有了目录我们是不是可以很快的找到我们要的内容,数据库也是这样,索引会告诉数据库相应的内容在表中那个地方。但是索引也有个问题,我们想想,要是我们往这个表中添加数据或修改删除数据,是不是要更新索引,更新索引毫无疑惑需要时间,这个降低了除查询意外其他操作的性能,在实际中要不要加索引,加多少索引都是系统和数据库设计中重要而不简单的问题。
储存过程:如要套用java中方法或者c中函数的概念,那么储存过程就是SQLserver中的方法和函数,他们把查询过程封装,使用的时候就像调用方法和函数一样通过索引名调用,是不是和视图很像,我学的时候也有这种感觉,但它比视图更为复杂,可以处理更为复杂的过程。
触发器:其实触发器也很视图和存储过程很像,不同的是触发器也可以处理更为复杂的过程,而且不同于储存过程属于查询,触发器是为增删改设计的,而且由于涉及到了标的修改,如果触发器执行这一过程失败(比如电脑突然没电了),会调动事件回滚,也就是返回触发器之前的状态。
游标:数据操作的结果往往都会返回一个结果,这个结果叫做结果集,结果集往往又有多条,当我们要操纵单条数据怎么办,游标就可以实现我们的需求。
大概这些就是我今天的体会了,希望大家能一起提高,有说错了也希望能指出来,毕竟我一直是想抛砖引玉的。