当前位置:首页 > 问答 > 正文

刚开始学Oracle那些零碎又实用的小体会分享

我记得刚开始摸Oracle的时候,感觉它像个戒备森严的大城堡,而我连钥匙孔在哪儿都找不到,老师一上来就讲实例啊、表空间啊、SGA、PGA这些词,听得我云里雾里,后来我明白了,一开始根本不需要纠结这些,就像学开车不用先懂发动机原理,我最实在的小体会就是,先别管那些高深的,从能看见、能摸得着的地方入手。

第一件让我有成就感的小事,是学会了用DESC命令。DESC emp;(emp是Oracle自带的练习表,如果环境有的话),啪一下,表的结构就出来了:哪个列叫啥名、是存数字的还是文字的、能不能为空,这比直接去查那些复杂的文档直观太多了,一下子就觉得,这个黑乎乎的SQL*Plus窗口或者SQL Developer界面,好像没那么可怕了,来源就是当初带我的师傅,他说:“你想知道一张表长啥样,就‘描述’它一下。”

然后就是关于分号的血泪教训,我写了好长一段SQL语句,满怀信心地按了回车,结果光标就那么跳到了下一行,啥也不发生,我懵了,以为是语句写错了,反复检查,折腾了半天才发现,原来是忘了在最后加那个分号,Oracle不像其他一些数据库工具,它需要分号来告诉它:“我这句话说完了,你可以执行了。”这个小小的符号,给我上了严谨的第一课,来源是自己的笨拙经历,估计很多人都遇到过。

刚开始学Oracle那些零碎又实用的小体会分享

还有双引号和单引号的区别,也让我迷糊过,师傅打了个比方,我至今记得:单引号是用来抱紧字符串值的,比如名字‘张三’;而双引号是用来保护那些“调皮”的列名的,比如你非要把列名起成"My Name",中间有空格还大小写混合,那查询的时候就必须用双引号把它包起来,不然Oracle就认不出来了,但最好别自找麻烦,列名老老实实用字母数字和下划线最省心,这个体会来源也是师傅的生动讲解。

数据字典视图是个宝库,这是我自己慢慢发现的,有时候我不知道数据库里有哪些表,或者某个表有没有我想要的列,就会去查这些“数据库的自我介绍”,比如SELECT * FROM USER_TABLES;就能看到我自己的所有表;SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'EMP';就能看到EMP表的所有列信息,这种感觉就像拿到了城堡的藏宝图,虽然一开始图看不太懂,但至少知道宝藏的大致方向了,来源是当时为了解决“我到底有哪些表”这个问题去翻书找到的。

刚开始学Oracle那些零碎又实用的小体会分享

关于写查询,我最大的体会是“先分后合”,比如你要写一个挺复杂的多表连接查询,还带着条件,别试图一口气写成,我先用SELECT * FROM table1看看第一张表里到底有啥数据;再用SELECT * FROM table2看看第二张表,然后试着把两个表用关键列连起来,SELECT * FROM table1 t1, table2 t2 WHERE t1.id = t2.id,看看连得对不对,最后再慢慢加上我要的具体列名和过滤条件,这样一步步来,错了也知道错在哪一步,不会对着一个报错的大长语句发呆,这个方法是自己一次次调试中摸索出来的笨办法,但很管用。

最后一个小体会是关于保存和格式化的,SQL语句写长了,乱糟糟的很难看也容易错,我学了一招,就是用文本编辑器(像Notepad++或VSCode)写好,整理好缩进,然后再贴到Oracle的工具里去执行,特别是写存储过程或函数的时候,这样做效率高很多,还有,写的每一个有用的查询脚本,都顺手把它保存成一个.sql文件,文件名取得明白点,比如查询某部门员工信息.sql,过段时间你再回头看,这就是你最好的学习笔记和知识库,这个习惯是看了某个论坛里一位老DBA的建议养成的。

刚开始学Oracle,别急着成为专家,把这些零碎的小工具、小命令、小习惯先捡起来,它们就像一个个小砝码,积累多了,你心里就有底了,再去接触那些“大块头”的知识,就不会觉得那么虚了。