About me:Oracle ACE pro,optimistic,passionate and harmonious. Focus on ORACLE,MySQL and other database programming,peformance tuning,db design, j2ee,Linux/AIX,Architecture tech,etc
全部博文(169)
分类: Oracle
2022-04-10 21:15:34
学技术基础重要吗?这个问题看起来很傻,但是我的确发现很多人不注重基础,也许他根本不知道怎么去夯实基础。比如连视图在一定条件下可以dml都不清楚,由此可以扩展到一般的inline view也可以dml更加不清楚了。写oracle sql几年,竟然连oracle有很多分析函数也不清楚,基础重要吗??答案是肯定的,但是很多人却忽视了这个问题,的确令人感觉奇怪,其他技术多也如此。 比如什么时候用join,什么时候用子查询,他们之间到底有什么区别,每种sql语法的适应场合是什么?不知道有多少人考虑过?如果你经常考虑类似这种基础问题,基本概念,那么你写sql还会没有思路吗? 你知道oracle join旧语法+和新语法left join,right join....的区别吗?为什么用+的时候经常报错呢?这些都是基础问题,但是我发现很多人根本不注重基础,缺乏思考,只知道解决问题,解决完了,以后遇到还是经常出问题。 有人问正则表达式的问题,问了大半年还是基础问题,为什么不找本正则的书看看呢,难道正则表达式也很难?当然,精通了的确难度不小,难道掌握正则的基础,解决日常的绝大多数问题还不行? 基础是干嘛的?怎么学基础?我认为基础的东西是在不断摸索中不断思考,然后经过整理,得出一些属于自己的东西,之后,你的基础就比较牢固了,在实践过程中逐渐丰富基础。比如wj经过研究,推翻tom高效设计上一些例子,关于标量子查询的问题(TOM大师不小心都犯错了),我想tom大师看到了会很高兴,学知识必须要思考,经常思考,才能培养用SQL解决问题的思维和意识。 没有用SQL解决问题的思维和意识那是不行的,为什么别人看到这问题,很快就用SQL搞定,而你却在苦苦挣扎,找不到方法呢?这就是技术使用的意识问题,这个意识需要夯实的基础,大量的思考才会具备。 你别告诉我,oracle报了一个“不是GROUP BY”表达式,你还在苦苦思考是什么原因?基础是一个整体,这是最基础的吧,SQL最基础的是“SQL要符合语法和语义要求”,一个不符合语义要求的分组,当然经常报这种错误啦。当然,任何事情不是绝对,在Oracle里有时候看似报这个错,它就不报这个错,这个不举例子了。 有的人说NULL不重要?难道NULL不是Oracle碰到很多的问题?难道都对这基础搞的很熟悉了,NULL还和很多东西有关联,比如CBO优化器,何处体现它不重要了呢? 有人说,我会ANSI SQL就可以了,这个我不反驳,毕竟它是基础,但是有多少人真正会了呢?用什么HIBERNATE之类的框架,让我们彻底忘记了SQL?这是不对的!框架的东西是为了提高作战效率,而不是让我们更加退化... 等你基础感觉可以了,我觉得才可以整点高级的东西,比如层次查询,扩展分组,MODEL,11G递归WITH,强大的分析函数,变化无穷的正则表达式等,其实这些东西很多人遇不到,因为这些都是在复杂的SQL里用的,他们的功能是变幻莫测的,OLTP很少有复杂的SQL,数据仓库环境下有很多报表,才有这些复杂的SQL........ 要学会自己思考,不要总想着得到答案,难道先google一下,培养下google能力也不行?别人给你指明了方向,你就应该把握这个学习的机会,自己找资料学一把,学完了那东西都是自己的,别人给你直接搞定,那还有什么意思呢? 如果搞开发,那么SQL本身也是开发的基础,还有很多其他语言的东西要学,所以平时多自己思考思考,有问题自己先查文档,搞不定再找人讨论,那不是更好?很多人出口就是“高级高级”,到最后,基础的东西不熟悉了,就“会”高级的东西,我想,那高级的东西也是半吊子吧。 SQL是个体系化的东西,每种语法解决一个范围内的问题,多思考些这些语法,多看文档中的一些要点,比如限制什么的,我想你会收获很多,靠自己盲目地暴力破解BUG什么的,也许你发现到的所谓BUG,文档早就说了是限制而已或是一个你自己的低级错误,被别人指出来了,本来还洋洋得意,之后情何以堪呢? 反正我认为,咱们搞技术的,就要学会独立搞定问题,实在搞不定,求助于网络求助于别人,在独立搞定的过程中才能体会快感,没有了快感还有神马意思呢。本来是准备写些方法论什么的,比如如何写好SQL啊,横向分析与纵向深入啊,但是后来感觉没有必要,正好无事,就来瞎扯一番。 |