小言_互联网的博客

oracle学习之路汇总

432人阅读  评论(0)

一、序言

自古序言吹水,最近由于项目需要,开始使用起了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,那就只能嵌套子查询了

参考文章:Oracle报错:不是GROUP BY 表达式

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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场