oracle
数据甄小白
这个人很懒,就留下这句话
展开
-
什么是数据仓库
“对于每一种技术,先要理解相关的概念和它之所以出现的原因,这对于我们继续深入学习其技术细节大有裨益。”什么是数据仓库?数据仓库的概念可以追溯到20世纪80年代,当时IBM的研究人员开发出了“商业数据仓库”。本质上,数据仓库试图提供一种从操作型系统到决策支持环境的数据流架构模型。数据仓库概念的提出,是为了解决和这个数据流相关的各种问题,主要是解决多重数据复制带来的高成本问题。在没有数据仓库的时代,需要大量的冗余数据来支撑多个决策支持环境。在大组织里,多个决策支...原创 2021-03-10 21:52:08 · 455 阅读 · 0 评论 -
数仓分层架构如何设计?
数仓分层架构如何设计?刚接触数据仓库之前,小白我就有一个疑问,数据仓库为什么分层?难道我一一层不能把所有逻辑都写完吗?大佬口中的ODS,DW到底是什么含义?经过长时间的工作,也有了自己的理解,跟着小白探索数据分层的真谛。为什么要分层?首先,数据仓库为什么分层?对于较复杂的的逻辑处理,分层可以清晰的看出数据结构,每一个分层都有它的作用域,在开发人员使用表时能够方便的定位和理解; 分层利于开发人员快速定位问题,并清除问题的影响范围,可以快速追踪数据血缘; 规范化的分层,开发一些通用的中间层数原创 2021-01-15 10:11:33 · 816 阅读 · 0 评论 -
Oracle中的in 和 not in
Oracle中的in和not in在日常的数据统计中,尽量不要用not in 来查询数据,可以考虑使用exist或者left join 来代替。但是如果用到in 和 not in 时,必须要考虑null值的影响,不能简单理解为not in 是in的差集。举例 原数据关联表使用in使用not in由上面查询结果可见,用in函数查询时有两条数据,但是利用not in时候没有得到剩...原创 2019-04-16 14:56:17 · 28400 阅读 · 0 评论 -
Oracle 中create table as 复制表结构
Oracle 中create table as 复制表结构在日常测试或者数据迁移的过程中,经常使用create table as …复制表结构或者复制表结构和数据,用法如下:复制表结构:create table tab_target as select * from table where 1=0复制表结构保留数据:create table tab_target as select * fr...原创 2018-12-18 10:00:33 · 16200 阅读 · 2 评论 -
Oracle中取某几个数的最大值最小值
Oracle中取某几个数的最大值最小值一直有误区认为Oracle或者说关系型数据库中没有取某些数据中最大值最小值的函数,其实是存在的 分别为: greatest( expr1, expr2, ... expr_n )least( expr1, expr2, ... expr_n )如图:上述两个函数都使用 N 个参数,并分别返回最大值和最小值。 另需注意参数可能具有混合数据类型。具体规则...原创 2018-12-18 09:45:09 · 26552 阅读 · 1 评论 -
sql “=”优化
sql “=” 优化禁止对“=”左侧字段使用函数、运算,避免在join、group by 中使用函数,这样可以让优化器更好的发挥作用说明:如果在等号左侧进行表达式、函数操作,会导致数据库引擎放弃索引进行全表扫描eg:SELECT * FROM t2 WHERE score/10 = 9SELECT * FROM t2 WHERE SUBSTR(username,1,2) = ‘li’优...原创 2018-12-20 10:19:20 · 317 阅读 · 0 评论 -
Oracle 中的over函数
Oracle 中的开窗函数over 函数SQL中有经常跟over()开窗函数搭配的是row_number(),一般用于去重或者根据某些字段分组(partition by)然后再进行排序(order by )得到最终的数据。rank () over() 和 dence_rank() over()根据业务需求,一般就会用到排名函数rank,或者dence_rank这两个函数跟row_numb...原创 2018-10-25 09:42:31 · 693 阅读 · 0 评论 -
Oracle中case when的用法
Oracle中case when的用法case when 表达式是一个通用条件的表达式,可以在表达式有效的任何位置使用。 用法如下: CASE WHEN condition THEN result [ WHEN condition THEN result ] ... [ ELSE result ] END condition:返回一个布尔结果的表达式。如果结果为...原创 2018-09-11 22:23:28 · 192506 阅读 · 4 评论 -
数据库中length的用法
数据库中length的用法一直使用length这个函数,但是每个数据库对其定义不同,所以得到的结果也不同。Oracle length : 表示字符串长度 lengthb :表示字符串的字节长度例: MySQL length:返回字符串所占的字节数 char_length:返回字符串的字符数 例: vertica length:返回CHAR和VARCHAR列的字...原创 2018-07-30 17:11:51 · 66827 阅读 · 0 评论 -
Oracle 中delete truncate 及drop的区别
Oracle 中删除数据有三种方法:delete truncate drop 其中:delete 删除数据表中记录的语句,但是此语句并不能删除表空间,它只能把被删除的数据标记为unused。 用法: delete from 表名 where 条件,此过程可以回滚。 如果要删除全部记录,可以用truncate,它可以释放占用的数据块表空间。 用法:truncate table 表名;此操作不原创 2017-12-07 17:02:34 · 370 阅读 · 0 评论 -
SQL中的cast()函数
一、语法:CAST (expression AS data_type)参数说明:expression:任何有效的SQServer表达式。AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。使用CAST函数进行数据类型转换时,在下列情况下能够被接受:(1)两转载 2017-12-08 14:49:50 · 3059 阅读 · 0 评论 -
Oracle中instr与like
在Oracle中like是经常用到的,但是对于数据比较多的查询使用like这种模糊查询效率会比较低,所以可以尝试用instr代替like进行查询。用法: instr(‘源字符串/列名’,’目标字符串’) >0 相当于 like instr(‘源字符串/列名’,’目标字符串’) = 0 相当于 not like 另外,对于大小写不固定的like也可以用regexp_like原创 2017-10-13 10:40:42 · 1038 阅读 · 0 评论 -
MySQL下删除重复记录只保留一条数据
对于Oracle来讲,可以用rowid去删除,保留最大或最小,如下:DELETE from tablename WHERE (id) IN ( SELECT id FROM tablename GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM tablename GROUP BY id HAVIN原创 2017-10-12 19:41:01 · 310 阅读 · 0 评论 -
ORA-28001: 口令已经失效
1、在CMD命令窗口中输入:sqlplus 用户名/密码@数据库本地服务名 as sysdba;(如:sqlplus scott/1234@oracle1 as sysdba;) 2、SELECT username,PROFILE FROM dba_users;(查看用户的proifle是哪个,一般是default :) 3、SELECT * FROM dba_profiles s WHERE原创 2017-10-19 16:54:21 · 1833 阅读 · 0 评论 -
Oracle中的join函数
在日常统计数据中最常用的有三个连接,分别是left join, right join, inner join,首先首先几个连接的意思 左(外)连接、右(外)连接、内(\等值)连接 其中: left join(左(外)连接):返回左表中的所有记录和右表中关联字段相等的记录 right join(右(外)连接): 返回右表中的所有记录和左表中关联字段相等的记录 inner join (内(\等值原创 2017-10-12 19:30:02 · 5789 阅读 · 0 评论 -
regexp_like的使用
Oracle中偶遇正则表达式的使用,简直逆天,在数据统计方面,最长用的就是regexp_like与regexp_replace两个了,此外还有regexp_instr,regexp_substr 这些函数跟对应的like,replace函数功能相似,但是可以加入正则表达式 用法: select * from tb_temp t where name like ‘%z%’; s原创 2017-09-29 11:18:53 · 61755 阅读 · 1 评论 -
next_day的使用
用next_day可以返回指定日期之后一周中特定的日期 用法为:next_day(date,char) 其中char可以是1-7或者Monday/Mon-Sunday/使用时发现,用Monday这种用法会出现 周中的日无效这种错误,解决方法如下: alter session set NLS_DATE_LANGUAGE = American; 之后再运行就会出现特定日期。但是在vertica原创 2017-09-28 09:42:24 · 5282 阅读 · 0 评论