oracle学习之路汇总

一、序言

自古序言吹水,最近由于项目需要,开始使用起了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,这就牛逼了
oracle学习之路汇总_第1张图片
基本分页格式可以写成

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学习之路汇总_第2张图片
这里的主要原因是,oracle的group by 的列,必须是select 的所有列,所以我这应该改成下图,这样就不会报错了,问题可能也来,要是,我就是想group by 一个列呢,另一个列我不想group,那就只能嵌套子查询了
oracle学习之路汇总_第3张图片

参考文章: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登录时,出现下方的弹窗

oracle学习之路汇总_第4张图片
解决
选择上方的高级选项,选择角色SYSDBA,回去常规再次连接,即可
oracle学习之路汇总_第5张图片

8、oracle的快速数据迁移

8.1 oracle数据备份

  • 导出此用户下的所有表
    exp 用户名/密码 file=xx/xx.dmp
  • 导出此用户下的部分表
    exp 用户名/密码 file=xx/xx.dmp tables=(xx,xx,xx)
  • 导出远程服务用户下的部分表
    exp 用户名/密码/(服务名,默认orcl) file=xx/xx.dmp tables=(xx,xx,xx)

oracle的dmp数据导入

  • 导入此用户下的所有表
    imp 用户名/密码 file=xx/xx.dmp full=y
  • 导入此用户下的部分表
    imp 用户名/密码 file=xx/xx.dmp tables=(xx,xx,xx)
  • 导入远程服务用户下
    imp 用户名/密码/(服务名,默认orcl) file=xx/xx.dmp tables=(xx,xx,xx)

最后附上一些参数的参考地址:https://blog.csdn.net/fghsfeyhdf/article/details/79807690

9、oracle 查询的字段全为大写

某条select之后的结果,居然是这样,字段全大写了,跟java的实体类对应不上,这里只需要 添加 as别名,同时注意别名需要双引号,这点很重要

select acceptor as "acceptor" from you_table

在这里插入图片描述

你可能感兴趣的:(oracle,笔记)