一、序言
自古序言吹水,最近由于项目需要,开始使用起了oracle,大学一直用的是mysql,虽然mysql与oracle都是SQL,但是两者还是有些许不一样,以下内容,往后使用遇到的坑就汇总到这里。
二、oracle成神之路(扑街之路)
1、oracle 11R的安装
安装步骤 csdn上一大堆,我这里就推荐一篇:
Oracle11g安装教程
我安装时,没出现啥问题,一切正常,一步到位。
2、oracle 11R 的卸载
这个就比较坑爹了,我前一个员工,安装时,密码不知给我弄成啥了,我也懒得去重置密码,百度一堆迷迷糊糊的,就干脆卸载,刚好体验一下安装oracle
卸载这里推荐百度经验上的贴,删得干干净净:
oracle 11R的卸载
3、oracle的分页实现
这个真是的皮,mysql写习惯,以为oracle也是limiit分页,然后,居然给我报错,我靠我还以为太久没写了,limit拼错了,一脸懵逼的百度一波,居然oracle没有limit,分页是用rownum,这就牛逼了
基本分页格式可以写成
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21
参考文章:oracle分页
4、坑爹的group by
下列语句,如果是在mysql下执行,肯定没有问题,但是oracle就不行,目前我还真不能理解这样做的意义。
这里的主要原因是,oracle的group by 的列,必须是select 的所有列,所以我这应该改成下图,这样就不会报错了,问题可能也来,要是,我就是想group by 一个列呢,另一个列我不想group,那就只能嵌套子查询了
5、oracle语法 nvl
经常性,会有需要sum的业务,也常常会有null值,如果不处理,肯定会出错,所以既需要nvl(sum(xx),0),值得一提的是,mysql的相应语法是nullif(sum(xx),0)
6、oracle的时间格式化语法
毕竟接触mysql比较多,习惯性就写了,date_format(),然后居然给我报错,说标识符无效,这就尴尬了,还以为自己英语能力变差了,拼写错误,百度得知,oracle没有这个语法,应该用to_char(),如果你的时间字段是varchar2的话,还应该用to_date()函数,将其转为日期在to_char()
附to_char() 格式化函数详解
7、sys用户使用navicat连接oracle问题
使用sys登录时,出现下方的弹窗
解决
选择上方的高级选项,选择角色SYSDBA,回去常规再次连接,即可
转载:https://blog.csdn.net/Chen_RuiMin/article/details/105990251