Oracle学习 第1、2天之基础语法

没想到五月份整整一个月没写随笔了,我老是这样,三分钟热度,很难坚持下来。五月份几乎没有周末,都在加班,晚上也常常加班,不过还好,并不觉得累,反而端午在家闲下来后,不想回去上班了。。。

小宝宝的听力又去测了一下,两边都通过了,健健康康成长,真好。就是一个月了体重没增加,不过人还挺精神的。我堂妹的小孩大一个月,好胖,头大身子圆,感觉也太胖了些。

电信在小区搞活动,20M升50M,另送一个IPTV高清机顶盒,每月加10元,看上去非常划算就办了,效果不错。

最近中午晚上睡前都要玩会手机,眼睛很难受很痛,又停不下来。。。有时是刷微博有时是玩游戏

公司的一个项目和别人合作,对方也是用.net开发(主要是SliverLight处理图形),数据库是Oracle,觉得挺神奇的,一直以为是.net配SqlServer,Java配Oracle,PHP配MySql。和部门主管聊了聊,公司以后可能会转Oracle,因为一些项目招标有要求Oracle,另外随着数据量的增大,Oracle性能也会更佳(其实SqlServer优化好的话足够了),而且从长远来说,.net招人不好招想转Java(博客园上经久不衰的口水战。。。)。

不管怎样,自已多学门技术总是好的。之前找工作时怕遇到用MySql的公司,有突击摸索了一下MySql,后来没实际用到也就没继续了。那现在学学Oracle吧,刚好公司有搭Oracle环境。我想有空时把测试数据库导一份到Oracle上,有时连Oracle测试,既在实战中磨练,又不影响工作。

昨天有看了半天视频教程,觉得还是要记一些要点,以后好温故知新吧。

一、图形化工具:之前有用过PL/SQL Developer,感觉不用微软的SMSS好用,界面好矬,后来调了下配置和插件,感觉还算可以。昨天看视频里的SQL Developer,感觉看不去不错的样子,布局什么的比较顺眼。另外有在客户远程机上也有看到TOAD(续一秒。。。),不知怎么样。以前也用过NaviCat,优点是跨平台,同时连三种数据库妥妥的,但用起来不大顺手,感觉功能点太少,有时用来临时查查数据什么的还可以。最后哪个工具好用,还得在实战中摸索(尽量还是学会用PL/SQL Developer吧,毕竟大家都在用,有时远程到其它机上,只有这个工具,不用不行)。

二、语法

学习的重点,看视频总结的(主要是慕课网上的http://www.imooc.com/learn/360),不知有没有总结错,有错的话以后发现了再改吧

1、和MySql一样,每行要分号结尾,SqlServer虽然不强制,但我平时基本都有养成习惯(就像在JS中我也会加分号)

2、每次都要set serveroutput on,不像MsSql一样直接看到输出结果,不知能否全局设置一下的。打印是dbms_output.put_line(xx),也够长的,MsSql直接print就可以。

3、MsSql赋值SET XX = XXX, Oracle赋值是 := ,不用SET

4、申明变量,MsSql是DECLARE 后面变量用逗号隔开,Oracle好像是用分号隔开的?看视频上DECLARE后换行,然后每个变量一行,分号结尾。定义完后BEGIN END开始写语句,好像这是固定格式?变量都要定义在前面?那中间要定义怎么办?后面学到了再看下。

5、引用类型、记录类型:这个真是碉堡了,不知MsSql有没有这类功能,感觉MsSql的都是值类型,Oracle可以有引用类型,把变量定义成表结构或字段值的引用,这就更像编程语言了。

6、拼字符串:MsSql是 SELECT XX.XXX + 'ABC' FROM XX,但Oracle拼字符串不是用+,是用||,像 SELECT XX.XXX || 'ABC' FROM XX

7、IF:

MsSql是:

IF XX BEGIN XXX END

ELSE IF XX BEGIN XXX END

ELSE XXX END

Oracle是:

IF XX THEN XX;
ELSIF XX THEN XX;
ELSE XX;
END IF;

那个ELSIF不是ELSEIF,也不能分开写,是为了坑程序员吗。。。

8、accept prompt:Oracle居然还能干起JS的活。。。弹出个对话框接受输入。。。前后端大一统的日子指日可待啊,像物理力学大一统理论一样,未来把所有编程语言统一成一种写法就好了,天下就太平了。

9、WHILE: MsSql是WHILE (XX) BEGIN 中间循环体 END,Oracle是 WHILE XX LOOP 中间循环体 END LOOP;

或LOOP EXIT WHEN XX; 中间循环体 END LOOP;

还有个FOR I IN 1..3 LOOP 中间循环体 END LOOP;

MsSql好像是没有For的,平时都用WHILE

为什么大家就不能统一个写法,或者用大括号就可以了,非要整这些没用的。。。

10、光标(游标):MsSql写法比较复杂,老是记不住,每次要写时都要去复制旧的来改。Oracle写法比较直观,判断游标是用%found、%notfound。另外定义游标时可以直接用“表变量”那种引用类型也比较方便

并有%isopen判断是否打开、%rowcount受影响行数

还可以带参数,功能很强大

11、执行默认使用事务:Oracle默认执行修改数据是事务的,如果不提交就不生效,所以要手动在语句最后加上commit;或者在软件界面上去点提交。

12、抛异常:之前在MsSql里好像有尝试过弄事务并捕获异常,但用的比较少,Oracle里异常处理还是不错的。

13、空转换:MsSql是ISNULL(xx,0),ORACLE是NVL(xx,0),另外还有个NVL2(a,b,c),如果a不为空则b,否则c,像是MsSQL的CASE WHEN

把第一个基础语法的视频教程看完了,收获很大。

原文地址:https://www.cnblogs.com/liuyouying/p/5573235.html