oracle函数

开发工具的学习以及认识

喜你入骨 提交于 2020-03-05 01:51:48
操作系统: 1.Windows操作系统 ⑴直观、高效的面向对象的图形用户界面,易学易用 ⑵用户界面统一、友好、漂亮 ⑶丰富的设备无关的图形操作 ⑷多任务操作环境 2.Unix操作系统 ⑴UNIX系统是一个多用户,多任务的分时操作系统 ⑵UNIX的系统结构可分为三部分:操作系统内核,系统调用,应用程序 ⑶UNIX系统大部分是由C语言编写的 ⑷UNIX提供了丰富的,精心挑选的系统调用 ⑸UNIX提供了功能强大的可编程的Shell语言作为用户界面 ⑹UNIX系统采用树状目录结构 ⑺UNIX系统采用进程对换的内存管理机制和请求调页的存储方式 ⑻UNIX系统提供多种通信机制 3.Linux操作系统 ⑴Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途 ⑵Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码 ⑶完全兼容POSIX1.0标准 ⑷多用户、多任务操作环境;支持多种平台 4.Mac OS操作系统 ⑴全屏模式是新版操作系统中最为重要的功能,一切应用程序均可以在全屏模式下运行 ⑵任务控制整合了Dock和控制面板,并可以窗口和全屏模式查看各种应用 ⑶快速启动面板的工作方式与iPad完全相同,它以类似于iPad的用户界面显示电脑中安装的一切应用,并通过App Store进行管理,用户可滑动鼠标,在多个应用图标界面间切换 ⑷Mac

Oracle中生成UUID

一个人想着一个人 提交于 2020-03-04 09:30:08
Oracle中生成跨系统的唯一识别符UUID非常方便,比生成序列还简单,直接用sys_guid()就行,例如 select sys_guid() from dual; 会产生一个跟MAC地址、生成时间相关的一个32位16进制的随机数。 数据类型是 raw(16) 有32个字符。 它的生成机制足以保证全球所有系统产生的海量guid重复可能性非常小。这在AIXM概念中非常重要。 如果要让返回的uuid满足标准格式,可利用如下函数实现: create or replace FUNCTION GET_UUID RETURN VARCHAR AS guid VARCHAR2 (64); BEGIN guid := lower(RAWTOHEX(sys_guid())); RETURN substr(guid,1,8)||'-'||substr(guid,9,4)||'-'||substr(guid,13,4)||'-'||substr(guid,17,4)||'-'||substr(guid,21,12); END GET_UUID; select get_uuid from dual; 得到结果:a8f662b8-6e7a-13fe-e040-970a437c6bd7 来源: CSDN 作者: RongSen33 链接: https://blog.csdn.net/g610567970

Oracle 使用translate 如何去除中文,单行函数 translate 的用法

寵の児 提交于 2020-03-03 12:04:37
单行函数 --> Translate 举例,代码如下: select translate('成龙ABC9TC', 'AC', '12') test from dual; 结果如下: 剔除所有的数字 代码如下 select translate('成龙B12A2BC9T4C', 'a1234567890', 'a') from dual; 这里的 “a” 必须要有,否则数字会被替换为 “a” 剔除所有字母 代码如下: select translate('成龙12A2BC9T4C', '1qwertyuioplkjhgfdsazxcvbnm' || upper('1qwertyuioplkjhgfdsazxcvbnm'), '1') test from dual; 结果如下: 同样的,这里所有的字母前的 “1” , 也是必须要有的 剔除所有的汉字 代码如下: select translate( 'adb123你好TUS90中国人', ' '||translate('adb123你好TUS90中国人', '0123456789abcdefghijklmnopqrstuvwxyz'||upper('abcdefghijklmnopqrstuvwxyz'), ' '), ' ' ) test from dual; 结果如下: 最后,值保留所有汉字 代码如下: select translate(

Oracle数据库管理——表数据库高水位及shrink操作

老子叫甜甜 提交于 2020-03-03 11:53:55
在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。 下面我们来谈一下Oracle中Select语句的特性。Select语句会对表中的数据进行一次扫描,但是究竟扫描多少数据存储块呢,这个并不是说数据库中有多少数据,Oracle就扫描这么大的数据块,而是Oracle会扫描高水位线以下的数据块。现在来想象一下,如果刚才是一张刚刚建立的空表,你进行了一次Select操作,那么由于高水位线HWM在最低的0位置上,所以没有数据块需要被扫描,扫描时间会极短。而如果这个时候你首先插入了一千万条数据,然后再用delete语句删除这一千万条数据。由于插入了一千万条数据,所以这个时候的高水位线就在一千万条数据这里。后来删除这一千万条数据的时候,由于delete语句不影响高水位线,所以高水位线依然在一千万条数据这里

Oracle取TOP N条记录

北战南征 提交于 2020-03-02 21:47:18
在SQL Server里面有top关键字可以很方便的去前N条记录,但是Oracle里面却没有,常用的简单的使用方法如下,: 方法1:利用ROW_NUMBER函数 SELECT NO FROM ( SELECT ROW_NUMBER() OVER (ORDER BY NO) RNO, NO FROM ROWNUM_TEST ) WHERE RNO <= 5 ORDER BY NO ; 取出中间 n 条记录 SELECT NO FROM ( SELECT ROW_NUMBER() OVER (ORDER BY NO) RNO, NO FROM ROWNUM_TEST ) WHERE RNO BETWEEN 5 AND 10 ORDER BY NO; 方法2:利用子查询 SELECT NO FROM ( SELECT NO FROM ROWNUM_TEST ORDER BY NO ) WHERE ROWNUM <= 5 ORDER BY NO ; 取出中间 n 条记录 SELECT NO FROM ( SELECT NO, ROWNUM RNO FROM ( SELECT NO FROM ROWNUM_TEST ORDER BY NO ) ) WHERE RNO BETWEEN 5 AND 10 ORDER BY NO; 来源: https://www.cnblogs.com

ORACLE 取前几条记录

牧云@^-^@ 提交于 2020-03-02 20:38:49
1. 最佳选择:利用分析函数 row_number() over ( partition by col1 order by col2 ) 比如想取出100-150条记录,按照tname排序 select tname,tabtype from ( select tname,tabtype,row_number() over ( order by tname ) rn from tab ) where rn between 100 and 150; 2. 使用rownum 虚列 select tname,tabtype from ( select tname,tabtype,rownum rn from tab where rownum <= 150 ) where rn >= 100; 注释:使用序列时不能基于整个记录集合来进行排序,假如指定了order by子句,排序的的是选出来的记录集的排序。 在ORACLE如果想取一张表按时间排序后的前5条最新记录: 方法一\二对,方法三错 SELECT GUID,title,content FROM ( SELECT GUID,title,content, row_number() over (order by releasetime desc)tm FROM web_LO_Article WHERE funID=20 and content

ORACLE编译失效对象小结

我只是一个虾纸丫 提交于 2020-03-02 15:29:25
在日常数据库维护过程中,我们会发现数据库中一些对象(包Package、存储过程Procedure、函数Function、视图View、同义词.....)会失效,呈现无效状态(INVALID)。有时候需要定期检查数据库中存在哪些失效对象,对于存在异常的对象需要重新编译,有些自动失效的对象,一般会在下次调用的时候,会被重新编译,所以这些不需要人工干预。那么为什么对象突然会失效呢?又如何快速、高效的编译失效对象呢?哪些失效的对象不需要我们去重新编译呢? 数据库对象失效原因 数据库对象失效的原因很多,下面大致归纳了一些常见的原因(有些漏掉的,希望大家补充): 1: 当被引用对象的结构变更时,都会使得相关的依赖对象转变为INVALID状态。 数据库中的对象(存储过程,函数,包,视图,触发器),它们往往需要直接或者间接的引用其它对象,对象的依赖包括直接和间接二种,其中直接依赖是指存储对象直接依赖于被引用对象,而间接依赖是指对象间接依赖于被引用对象 要查看被引用的对象,可以通过下面SQL查看 select * from dba_dependencies where name='&objectname'; select * from all_dependencies where name='&objectname'; select * from user_dependencies where

数据库-Oracle学习笔记(4)

≯℡__Kan透↙ 提交于 2020-03-02 15:07:58
Oracle字符串操作 字符串类型:char类型和varchar2类型 char类型 char类型存放的是定长字符,存不满补空格; char最大取值是2000字节,也就是最多保存2000个英文字符,1000个汉字; char可以不指定长度,默认为1,例如loc char等价于loc char(1)。 varchar2类型 varchar2类型存放的是变长字符,存多少占用多少; varchar2最大取值是4000字节,也就是最多保存4000个英文字符,2000个汉字; varchar2必须指定长度,如果loc varchar2这样写是错误的。 字符串函数 concat和 || 函数 语法1:concat(str1,str2),将两个字符串进行连接 concat(‘a’,’b’) -->’ab’ select * from emp; 查询表中所有列 select ename, sal from emp; 查询表中ename列,和sal列 select concat(ename, '的工资是:') from emp; -->SMITH的工资是: SMITH的工资是: sal ---> SMITH的工资是800 select concat(concat(ename,'的工资是:'), sal) from emp; 语法2: || 等价于concat函数,str1 || str2

Oracle 指数 一个简短的引论

假装没事ソ 提交于 2020-03-02 08:02:48
1 索引创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema>.<table_name> (<column_name> | <expression> ASC | DESC, <column_name> | <expression> ASC | DESC,...) TABLESPACE <tablespace_name> STORAGE <storage_settings> LOGGING | NOLOGGING COMPUTE STATISTICS NOCOMPRESS | COMPRESS<nn> NOSORT | REVERSE PARTITION | GLOBAL PARTITION<partition_setting> 相关说明 1)UNIQUE | BITMAP:指定UNIQUE为唯一值索引。BITMAP为位图索引,省略为B-Tree索引。 2)<column_name> | <expression> ASC | DESC:能够对多列进行联合索引,当为expression时即“基于函数的索引” 3)TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高) 4)STORAGE:可进一步设置表空间的存储參数 5)LOGGING | NOLOGGING

Oracle索引原理

无人久伴 提交于 2020-03-02 08:01:03
Oracle提供了大量索引选项。知道在给定条件下使用哪个选项对于一个应用程序的性能来说非常重要。一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程终止。而如果做出正确的选择,则可以合理使用资源,使那些已经运行了几个小时甚至几天的进程在几分钟得以完成,这样会使您立刻成为一位英雄。这篇文章就将简单的讨论每个索引选项。主要有以下内容: [1] 基本的索引概念 查询DBA_INDEXES视图可得到表中所有索引的列表,注意只能通过USER_INDEXES的方法来检索模式(schema)的索引。访问USER_IND_COLUMNS视图可得到一个给定表中被索引的特定列。 [2] 组合索引 当某个索引包含有多个已索引的列时,称这个索引为组合(concatented)索引。在 Oracle9i引入跳跃式扫描的索引访问方法之前,查询只能在有限条件下使用该索引。比如:表emp有一个组合索引键,该索引包含了empno、 ename和deptno。在Oracle9i之前除非在where之句中对第一列(empno)指定一个值,否则就不能使用这个索引键进行一次范围扫描。 特别注意:在Oracle9i之前,只有在使用到索引的前导索引时才可以使用组合索引! [3] ORACLE ROWID 通过每个行的ROWID,索引Oracle提供了访问单行数据的能力。ROWID其实就是直接指向单独行的线路图