Oracle笔记
文章平均质量分 59
一起种梧桐吧
己欲立而立人
己欲达而达人
己所不欲勿施于人
展开
-
sql数据库保证查询结果的一致性
基础数据变更后,如何保证业务数据查询结果的一致性原创 2023-11-29 17:32:08 · 1195 阅读 · 0 评论 -
Oracle笔记 之 空值null的处理
简单介绍Oracle数据库里空值null的处理方法,三个基础函数nvl,decode,coalesce。原创 2022-07-20 08:49:21 · 4165 阅读 · 0 评论 -
Oracle笔记 之 分组统计排名函数dense_rank/rank()-over()函数
dense_rank/rank()-over()用于对数据进行统计排名。rank-over()函数对相同的统计值的排名相同,不同的统计值之间的排名不连续(相同统计值的排名均为其前面不同统计值的数量+1)。dense_rank-over()函数对相同的统计值的排名相同,不同的统计值之间的排名连续。注意:如果over()中使用order by 进行排序后没有重复的值则dense_rank/rank()-over()统计排名结果一致且排名均连续。...原创 2022-07-07 15:32:18 · 5933 阅读 · 0 评论 -
Oracle笔记 之 偏移量分析函数lag/lead-over函数
lag() over() 与lead() over() 函数是跟偏移量相关的两个分析函数,通过这两个函数可以在一次查询中取出同一字段的前N行的数据(lag)和后N行的数据(lead)作为独立的列,从而更方便地进行进行数据过滤。这种操作可以代替自联接查询,并且LAG和LEAD的执行效率更高。...原创 2022-07-07 11:42:58 · 4710 阅读 · 0 评论 -
Oracle笔记 之 生成连续数值
在数据分析取同比/环比时,为避免取到错误的比对对象(年月份之间不连续)需要生成连续的年月及默认值。原创 2022-07-07 10:41:40 · 973 阅读 · 0 评论 -
Oracle笔记 之 物化视图
Oracle物化视图是包括查询结果的数据库对象,是远程数据的本地副本,物化视图存储基于远程表的数据。原创 2022-07-07 10:12:02 · 571 阅读 · 0 评论 -
Oracle笔记 之 查看表空间使用情况
Oracle表空间使用情况查询原创 2022-06-14 15:57:13 · 857 阅读 · 0 评论 -
Oracle笔记 之 行列互换
Oracle数据库行列互换原创 2022-06-14 15:26:49 · 508 阅读 · 0 评论 -
Oracle笔记 之 递归查询
递归查询在信息系统中需要数据字典表等树状结构的数据,使用递归查询能够快速地获取树状结构数据的关联关系。树状结构的数据存放在数据表中,数据之间的层次关系(父节点与子节点)通过表的列与列之间的关系来描述。以类别数据树为例,category表中的categoryid和categoryname表示该类别的编号和名称,headcatid表示上一级类别的编号,即子节点的headcatid值等于父节点的categoryid值。表的每一行中都有一个表示父节点的headcatid(根节点的headcatid=0),原创 2022-01-04 15:53:08 · 1817 阅读 · 0 评论 -
Oracle笔记 之 关联查询语句
1.目的讲解表连接查询。2.讲解连接方式内连接使用inner join关键字表示。inner join关键字可以用 ‘,’替代。例如:![[内连接示例|innerjoin]]外连接使用outer join关键字表示。包含left outer join 和 right outer join,其中outer关键字可以省略。left outer join 可以写为 left join,表示左连接,即以关键字右侧的表为辅助表,如果匹配不到辅助表的关键字则显示null值。right out原创 2021-12-31 10:58:46 · 595 阅读 · 0 评论 -
Oracle笔记 之 单表查询语句
1.目的以富基系统相关数据库表为例讲解单表查询(单数据集)。2.讲解2.1数据集2.1.1 由行列组成的二维数据集合,通常指数据表或者数据表的查询结果。如:1 SDAA2016120400068 33959500 102854 1.000 0.50 0.00 17.0000 0.41 0.06 02 SDAA2016120400068 33959500 102855 2.000 1.00 0.00 17.0000 0.82 0.12 03 SDAA2016120400068 33959500原创 2021-12-31 10:57:27 · 392 阅读 · 0 评论 -
Oracle笔记 之 常用基础数据类型
1.目的简单讲解Oracle基本数据类型。2.讲解建立表,包括定义表的结构,新建变量时,必须为其指定一种数据类型。数据类型限定了数据表每一列的取值范围。1.数字数据类型NUMBER:存储整型或浮点型数值,可以使用integer指定整数类型。定义语法 number(p,s),p代表总位数,s代表小数点后有效位数。FLOAT:存储浮点数。2.字符数据类型:CHAR:定长的字符型数据,范围[0,2000],定义时需要指定字符串长度,系统按指定长度分配存储空间。定义语法 char(n),原创 2021-12-31 10:53:40 · 367 阅读 · 0 评论 -
OracleLinux6.5图形化安装Oracle11g
关闭防火墙关闭防火墙参考VMware新建OracleLinux6.5虚拟机关闭防火墙。禁用selinux[root@Oracle11g ~]# vi /etc/selinux/config将 SELINUX=enforcing 改为 SELINUX=disabled 。安装依赖包挂载OracleLinux6.5镜像新建目录加载镜像文件[root@Oracle11g ~]# mkdir /media/disk[root@Oracle11g ~]# mount /dev/c原创 2021-12-22 11:49:49 · 1466 阅读 · 0 评论 -
Oracle笔记 之 update语法
方式一:单表更新用确定值更新指定条件的数据。例如:给30部门所有员工加薪100$Update emp Set comm = comm + 100 Where deptno = 30;方式二:两表关联更新两表关联用指定表里的数据更新指定列。例如:用emp_1表里的comm列+100更新emp表里的comm列- 语法1sql Update emp m Set m.comm = (Select s.comm + 100 From emp_1 s Where m.empno =原创 2021-12-22 09:50:50 · 2030 阅读 · 0 评论 -
Oracle笔记 之 merge语法
merge语法用满足条件的查询结果集更新满足条件的表的内容,如果匹配上则更新,没有匹配上则插入。具体语法如下:Merge Into table1 aUsing (Select col1, col2, col3 From table2 Where b.col4 = value4) bOn (a.col1 = b.col1)When Matched Then Update Set a.col2 = b.col2, a.col3 = b.col3When Not Matched Then I原创 2021-12-21 15:42:43 · 882 阅读 · 0 评论 -
Oracle笔记 之 表空间使用情况查询
需要dba权限只有dba权限的用户才能查询相关表。相关表dba_tablespaces查看数据库表空间信息。dba_data_files查看数据库表文件信息。dba_free_space查看数据库表文件的使用信息。查看表空间使用情况```sqlselect a.tablespace_name "表空间名称", b.total / (1024 * 1024) "表空间大小(M)", (b.total - a.free) / (1024 * 1024) "表空间使用大小原创 2021-12-16 08:46:56 · 758 阅读 · 0 评论 -
Oracle数据库启停
切换Oracle用户Oracle一般安装在linux系统特定的用户下(Oracle)。[root@test ~]# su - oracleLast login: Tue Dec 14 10:27:50 CST 2021 on pts/1登录sqlplus查看数据库状态[oracle@test ~]$ sqlplus /nologSQL*Plus: Release 12.2.0.1.0 Production on Wed Dec 15 16:13:32 2021Copyright (c)原创 2021-12-15 16:31:54 · 1977 阅读 · 0 评论 -
oraclelinux7.8安装Oracle12c详细教程
说明本文系统使用 OracleLinux-R7-U8-Server-x86_64-dvd.iso 最小化安装,新建/data目录用于安装Oracle数据库。系统下载地址:OracleLinux7.8本文Oracle版本为 linuxx64_12201_database.zip。数据库下载地址:Oracle12c依赖包pdksh下载地址:pdksh包, 提取码:gzry。本文操作系统hostname为test,安装Oracle数据库sid为test,管理员用户密码统一为 managertest。原创 2021-11-23 09:56:08 · 1540 阅读 · 0 评论 -
Oracle笔记 之 使用Oracle建立简单的数据分析数据库服务器
本文将介绍使用Oracle搭建简单的数据分析平台数据库。设计思路1,保障源数据库安全数据分析平台数据库必须是独立的。数据分析平台数据库与业务数据库之间通过 Databaselink 连接。Databaselink 使用的用户必须是新建的专门用户且仅有connect权限。通过Databaselink读取的数据必须经过DBA的授权(权限仅限于select)。2,数据更新方式要保证数据分析平台数据库和业务数据库的数据一致性。数据尽量避免频繁的全量更新。选择适当的数据同步方式。对数据更新做适当原创 2021-03-12 10:38:48 · 254 阅读 · 0 评论 -
Oracle笔记 之 使用over函数进行数据环比同比分析
本文演示如何使用Oracle数据库的over分析函数满足业务提出的数据分析需求(查询按机构,分类查询指定月份的环比,同比数据)。over函数的具体使用方法请参考博文概念分析进行数据分析的第一步一定是弄明白业务人员的意图,搞清楚业务提出的相关概念。环比:本月相比上个月的业务增长量与上个月业务量的百分比值。同比:本月相比上一年度同一月份的业务增长量与上一年度同一月份业务量的百分比值。设计算法业务分析需求的主要指标是选定月相关机构和类别的销售量和上一个月或者上一年度同一月份同一机构和类别销售量(即机原创 2021-03-02 09:41:42 · 645 阅读 · 0 评论 -
Oracle笔记 之 并行(parallel)操作(DQL,DML,DDL)
数据库的默认并行度本例的测试环境:os:Windows 10 专业版plsql:Version 14.0.1.1965Oracle:Version 11.2.0.4.0单实例数据库的并行度 = parallel_threads_per_cpu x cpu_countRAC的并行度 = parallel_threads_per_cpu x cpu_count x instance_count查看数据库的默认并行度(plsql命令窗口):#查看并行度参数SQL> show paramet原创 2021-02-03 09:43:46 · 3657 阅读 · 0 评论 -
Oracle笔记 之 数据泵
注意事项使用 EXPDP 和 IMPDP 时应该注意的事项 :EXP 和 IMP 是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。EXPDP 和 IMPDP 是服务端的工具程序,只能在 ORACLE 服务端使用,不能在客户端使用。IMP 只适用于 EXP 导出的文件,不适用于 EXPDP 导出文件; IMPDP 只适用于 EXPDP 导出的文件,而不适用于 EXP 导出文件。expdp 或 impdp 命令时,可暂不指出用户名 / 密码 @ 实例名 as 身份,然后根据提示再输入,如原创 2021-01-20 15:52:42 · 127 阅读 · 0 评论 -
Oracle笔记 之 行列互换
pivot函数:行转列函数格式pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值))pivot函数位于from集合后示例示例1:select * from emppivot(sum(nvl(sal, 0)) for deptno in(10 as accounting, 20 as research, 30 as sales));# 结果1 7654 MARTIN SALESMAN 7698 1981-09-28 1400.00 12502 769原创 2021-01-12 09:32:13 · 160 阅读 · 0 评论 -
Oracle笔记 之 Oracle高级分组函数
高级分组函数主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用法,这些函数可以理解为GroupBy分组函数封装后的精简用法,相当于多个union all 的组合显示效果,但要比多个union all的效率要高。ROLLUP(累计累加)①,ROLLUP是对group by的扩展,它只能出现在group by子句中,依赖分组的列,对每个分组会生成汇总数据。②,rollup和group by联合使用,达到了按group by列顺序分组,并且实现小计和合计的功能。③,rollup分组原创 2021-01-12 08:55:04 · 810 阅读 · 1 评论 -
Oracle笔记 之 sql语句优化
SQL语句的执行当Oracle数据库执行SQL语句时,会根据查询优化器分析语句,并根据分析结果生成查询执行计划。也就是说,数据库是执行的查询计划,而不是Sql语句。查询优化器有rule-based-optimizer(基于规则的查询优化器) 和Cost-Based-optimizer(基于成本的查询优化器)。其中基于规则的查询优化器在10g版本中消失。对于规则查询,其最后查询的是全表扫描。而CBO则会根据统计信息进行最后的选择。SQL语句的执行顺序注意:在10g版本后使用CBO规则后2,3已无差原创 2021-01-12 08:01:40 · 105 阅读 · 0 评论 -
Oracle笔记 之 查询语句结构简介
Oracle语句结构完整的Oracle语句可以由select、from、where、group by、having、order by、asc/desc、nulls first/last等子句组成。其中select子句和from子句是必需的。简单的例子:查询30部门工种工资总和超过2000的各工种员工数量及工资、绩效的合计值并按工种工资倒序排列select job, count(0) jobemp, sum(nvl(sal, 0)) jobsal, sum(原创 2021-01-11 11:23:41 · 257 阅读 · 0 评论 -
Oracle笔记 之 使用level获取一个多值的列
使用level获取一个多个数值的列,从而能够让结果以多行的形式展示出来。语法select level from dual connect by level <= n;n表示要生成的列的函数。示例select level from dual connect by level <= 10;# 结果1 12 23 34 45 56 67 78 89 910 10...原创 2021-01-08 09:27:06 · 380 阅读 · 0 评论 -
Oracle笔记 之 分析函数over
over()分析函数聚合函数(count,sum、max,min,avg等)可以计算基于分组的某种聚合值,但聚合函数对于某个分组只能返回一行记录。若想对于某组返回多行记录,则需要使用分析函数。over()分析函数主要有以下用处:1,排序rank()/dense_rank over(partition by columns1 order by column2)2,取最值min()/max() over(partition by columns1 order by column2)3,取前后记录原创 2021-01-07 17:28:46 · 371 阅读 · 0 评论 -
Oracle笔记 之 使用flashback恢复误删数据
Oracle闪回分类Oracle数据库11g版本以后的flashbackup 分以下几种:flashback database 闪回数据库,简单理解就是把数据库闪回到之前的某个确定的时间点。flashback drop 闪回数据库表,用于表误drop后恢复。flashback query 闪回表记录,用于数据表记录的恢复。falshabck Table 闪回数据库表。flashback database 闪回数据库前提需要确保数据库运行在归档模式下,这是使用闪回数据库的前提。确认数据库是否原创 2021-01-07 08:20:43 · 578 阅读 · 0 评论 -
Oracle笔记 之 Sql语句概况
SQL全称结构化查询语句,是一种在关系型数据库中定义和操作数据的标准语言。注意:Oracle和Mysql虽然都使用标准sql语法,但具体细节有较大差异。本文以Oracle语句为例SQL语句的特点集合性:所有SQL语句都接受集合作为输入,并且返回集合作为输出。SQL语句的集合特性容许一条SQL语句的结构作为另一条SQL语句的输入。统一性:SQL语言具有统一的语法格式。易于移植:在所有支持sql语法的数据库,可以很方便的移植。数据库操作数据库的操作任务通常包括以下几个方面A,数据查询B,原创 2021-01-05 09:40:13 · 250 阅读 · 1 评论 -
Oracle笔记 之 字符串函数
字符串截取格式格式1:substr(string,start_pos,length)格式2:substr(string,start_pos)说明从指定位置start_pos截取字符串string的length位,如果不指定length(格式2)则从指定位置start_pos截取字符串string。start_pos等于0或者1均从左边第一位开始截取。如果start_pos为负整数,则从右截取字符串。例子–abc abc cdef defselect substr(‘abcdef’,原创 2020-12-30 17:28:47 · 182 阅读 · 0 评论 -
Oracle笔记 之 日期时间函数
从时间(日期)获取信息–获取年份 2011select extract(year from date ‘2011-05-17’) year from dual;–获取月份 5select extract(month from date ‘2011-05-17’) month from dual;–获取日 17select extract(day from date ‘2011-05-17’) day from dual;–获取小时 12select extract(hour from tim原创 2020-12-30 11:09:51 · 488 阅读 · 0 评论 -
Oracle笔记 之 修改密码有效期
注意请使用管理员账号密码登录。使用sqlplus命令sqlplub /nologconn /as sysdba使用plsql工具connect as 选择 sysdba查看用户密码规则select * from dba_users s where s.account_status = ‘OPEN’;查看密码有效期设定select *from dba_profiles swhere s.profile = ‘DEFAULT’and resource_name = ‘PASSWORD_原创 2020-12-29 09:15:46 · 293 阅读 · 0 评论 -
Oracle笔记 之 脚本执行时间控制
Oracle函数 --控制job执行时间(8:00--17:30) --在时间区间内,每半小时执行一次,否则第二天8:00执行 function nextruntime return date is d_next date; begin select decode(sign((8 - to_number(to_char(sysdate, 'hh24'))) *原创 2020-09-17 15:31:49 · 300 阅读 · 0 评论