首页>计算机>Oracle认证>学习教程>正文
Oracle常用函数列表速查

www.zige365.com 2008-8-18 15:44:39 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
 LEAST()
   exp_list是一列表达式,返回其中最小的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个,将返回的结果是varchar2数据类型,同时使用的比较是非填充空格类型的比较。

  UID
   该函数没有参数,返回唯一标示当前数据库用户的整数。

  USER
   返回当前用户的用户名

  USERENV()
   基于opt返回包含当前会话信息。opt的可选值为:

  ISDBA    会话中SYSDBA脚色响应,返回TRUE
   SESSIONID  返回审计会话标示符
   ENTRYID   返回可用的审计项标示符
   INSTANCE  在会话连接后,返回实例标示符。该值只用于运行Parallel 服务器并且有 多个实例的情况下使用。
   LANGUAGE  返回语言、地域、数据库设置的字符集。
   LANG    返回语言名称的ISO缩写。
   TERMINAL  为当前会话使用的终端或计算机返回操作系统的标示符。

  VSIZE()
   x是一个表达式。返回x内部表示的字节数。
SQL中的组函数

  组函数也叫集合函数,返回基于多个行的单一结果,行的准确数量无法确定,除非查询被执行并且所有的结果都被包含在内。与单行函数不同的是,在解析时所有的行都是已知的。由于这种差别使组函数与单行函数有在要求和行为上有微小的差异.

  组(多行)函数

  与单行函数相比,oracle提供了丰富的基于组的,多行的函数。这些函数可以在select或select的having子句中使用,当用于select子串时常常都和GROUP BY一起使用。

  AVG([{DISYINCT|ALL}])
   返回数值的平均值。缺省设置为ALL.
SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal) FROM scott.empAVG(SAL) AVG(ALL SAL) AVG(DISTINCT SAL)1877.94118 1877.94118 1916.071413

  COUNT({*|DISTINCT|ALL} )
   返回查询中行的数目,缺省设置是ALL,*表示返回所有的行。

  MAX([{DISTINCT|ALL}])
   返回选择列表项目的最大值,如果x是字符串数据类型,他返回一个VARCHAR2数据类型,如果X是一个DATA数据类型,返回一个日期,如果X是numeric数据类型,返回一个数字。注意distinct和all不起作用,应为最大值与这两种设置是相同的。

  MIN([{DISTINCT|ALL}])
   返回选择列表项目的最小值。

  STDDEV([{DISTINCT|ALL}])
   返回选者的列表项目的标准差,所谓标准差是方差的平方根。

  SUM([{DISTINCT|ALL}])
   返回选择列表项目的数值的总和。

  VARIANCE([{DISTINCT|ALL}])
   返回选择列表项目的统计方差。

  用GROUP BY给数据分组

  正如题目暗示的那样组函数就是操作那些已经分好组的数据,我们告诉数据库用GROUP BY怎样给数据分组或者分类,当我们在SELECT语句的SELECT子句中使用组函数时,我们必须把为分组或非常数列放置在GROUP BY子句中,如果没有用group by进行专门处理,那么缺省的分类是将整个结果设为一类。
select stat,counter(*) zip_count from zip_codes GROUP BY state;ST ZIP_COUNT-- ---------AK 360AL 1212AR 1309AZ 768CA 3982

  在这个例子中,我们用state字段分类;如果我们要将结果按照zip_codes排序,可以用ORDER BY语句,ORDER BY子句可以使用列或组函数。
select stat,counter(*) zip_count from zip_codes GROUP BY state ORDER BY COUNT(*) DESC;ST COUNT(*)-- --------NY 4312PA 4297TX 4123CA 3982

  用HAVING子句限制分组数据

  现在你已经知道了在查询的SELECT语句和ORDER BY子句中使用主函数,组函数只能用于两个子串中,组函数不能用于WHERE子串中,例如下面的查询是错误的:
错误SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' AND SUM(sale_amount)>10000 GROUP BY sales_clerk

  这个语句中数据库不知道SUM()是什么,当我们需要指示数据库对行分组,然后限制分组后的行的输出时,正确的方法是使用HAVING语句:
SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' GROUP BY sales_clerkHAVING SUM(sale_amount)>10000;

  嵌套函数

  函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置,函数遵循由内到外,由左到右的原则。嵌套技术一般用于象DECODE这样的能被用于逻辑判断语句IF....THEN...ELSE的函数。

  嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中。比如下面的例子:
SELECT deptno, GREATEST(COUNT(DISTINCT job),COUNT(DISTINCT mgr) cnt,COUNT(DISTINCT job) jobs,COUNT(DISTINCT mgr) mgrsFROM empGROUP BY deptno;DEPTNO CNT JOBS MGRS------ --- ---- ----10 4 4 220 4 3 430 3 3 2

本新闻共4页,当前在第4页  1  2  3  4  

我要投稿 新闻来源: 编辑: 作者:
相关新闻
我当时初学ORACLE认证时写的一些笔记
国外公司的Oracle DBA试题
ORACLE认证基础:ORACLE系统概述
启动Oracle常见疑难问题分析
Oracle数据库中的“锁”学习小结