当前位置: 代码迷 >> SQL >> SQL PL/SQL语法手册三
  详细解决方案

SQL PL/SQL语法手册三

热度:68   发布时间:2016-05-05 12:16:51.0
SQL PL/SQL语法手册3

4. 数值函数

4.1.         函數:ABS

 

语法:

ABS(number)

 

用途:

该函数返回数值number的绝对值.绝对值就是一个数去掉符号的那部分.

 

 

4.2.         函數:SQRT

 

语法:

SQRT(number)

 

用途:

该函数返回数值number的平方根,输入值必须大于等于0,否则返回错误.

 

 

4.3.         函數:CEIL

 

语法:

CEIL(number)

 

用途:

该函数返回大于等于输入值的下一个整数.

 

 

4.4.         函數:FLOOR

 

语法:

FLOOR(number)

 

用途:

该函数返回小于等于number的最大整数.


4.5.         函數:MOD

 

语法:

MOD(n,m)

 

用途:

该函数返回n除m的模,结果是n除m的剩余部分.m,n可以是小数,负数.

 

 

4.6.         函數:POWER

 

语法:

POWER(x,y)

 

用途:

该函数执行LOG函数的反操作,返回x的y次方.

 

 

4.7.         函數:ROUND

 

语法:

ROUND(number,decimal_digits)

 

用途:

该函数将数值number四舍五入到指定的小数位.如果decimal_digits为0,则返回整数.decimal_digits可以为负数.

 

4.8.         函數:TRUNC

 

语法:

TRUNC(number[,decimal_pluces])

 

用途:

该函数在指定的小数字上把一个数值截掉.如果不指定精度,函数预设精度为0. decimal_pluces可以为负数.


4.9.         函數:SIGN

语法:

SIGN(number)

 

用途:

该函数返回number的符号,如果number为正数则返回1,为负数则返回-1,为0则返回0.

 

 

4.10.      函數:SIN

 

语法:

SIN(number)

 

用途:

该函数返回弧度number的正弦值.

 

 

4.11.      函數:SINH

 

语法:

SINH(number)

 

用途:

该函数返回number的返正弦值.

 

4.12.      函數:COS

 

语法:

COS(number)

 

用途:

该函数返回弧度number的三角余弦值.要用角度计算余弦,可以将输入值乘以0.01745转换成弧度后再计算.


4.13.      函數:COSH

 

语法:

COSH(number)

 

用途:

该函数返回输入值的反余弦值.

 

 

4.14.      函數:TAN

 

语法:

TAN(number)

 

用途:

该函数返回弧度number的正切值.

 

 

4.15.      函數:TANH

 

语法:

TANH(number)

 

用途:

该函数返回数值number的反正切值.

 

 

4.16.      函數:LN

 

语法:

LN(number)

 

用途:

该函数返回number自然对数.


4.17.      函數:EXP

 

语法:

EXP(number)

 

用途:

该函数返回e(2.71828183)的number次方.该函数执行自然对数的反过程.

 

 

4.18.      函數:LOG

 

语法:

LOG(base,number)

 

用途:

该函数返回base为底,输入值number的对数.

 

 


5. 单行函数:

单行函数中可以对任何数据类型的数据进行操作.

 

5.1.         函數:DUMP

语法:

DUMP(expression[,format[,start[,length]]])

 

用途:

该函数按指定的格式显示输入数据的内部表示.下表列出了有效的格式.

格式代码

描述

8

八进制

10

十进制

16

十六进制

17

单字符

 

例如:

    SELECT DUMP('FARRELL',16)

    FROM dual

 

DUMP('FARRELL',16)

----------------------------------

Typ=96 Len=7: 46,41,52,52,45,4c,4c

 

5.2.         函數:GREATEST

语法:

GREATEST(list of values)

 

用途:

该函数返回列表中项的最大值.对数值或日期来说,返回值是最大值或最晚日期,如果列表中包含字符串,返回值是按字母顺序列表中的最后一项.

 

例如:

    SELECT GREATEST(123,234,432,112)

      FROM dual

 

GREATEST(123,234,432,112)

-------------------------

                      432

5.3.         函數:LEAST

语法:

LEAST(list of values)

 

用途:

该函数返回列表中项的最小值.对数值或日期来说,返回值是最小值或最早日期,如果列表中包含字符串,返回值是按字母顺序列表中的第一项.

 

例如:

    SELECT LEAST(sysdate,sysdate-10)

      FROM dual

 

LEAST(SYS

---------

10-JAN-00

 

5.4.         函數:NVL

 

语法:

NVL(expression,replacement_value)

 

用途:

如果表达式不为空值,函数返回该表达式的值,如果是空值,就返回用来替换的值.

 

例如:

    SELECT last_name,

           NVL(TO_CHAR(COMMISSION),'NOT APPLICABLE')

      FROM employee

     WHERE department_id=30

LAST_NAME       NVL(TO_CHAR(COMMISSION),'NOTAPPLICABLE')

--------------- ----------------------------------------

ALLEN           300

WARD            500

MARTIN          1400

BLAKE           NOT APPLICABLE


6. 多行函数

组函数可以对表达式的所有值操作,也可以只对其中不同值进行操作,组函数的语法如下所示:

function[DISTINCT|ALL expression]

如果既不指定DISTINCT,也不指定ALL,函数将对查询返回的所有数据行进行操作.不能在同一个SELECT语句的选择列中同时使用组函数和单行函数.

 

6.1.         函數:AVG

语法:

AVG([DISTINCT|ALL] expression)

用途:

对查询返回的数据行求平均值.

 

例如:

    SELECT AVG(sal) "Average"

      FROM emp

       Average

    ----------

    2073.21429

 

6.2.         函數:COUNT

语法:

COUNT([DISTINCT|ALL] expression)

 

用途:

计算表达式的个数.要计算EMP表中雇员的个数.

例如:

    SELECT COUNT(deptno)

      FROM emp

COUNT(DEPTNO)

-------------

           14

    SELECT COUNT(distinct deptno)

      FROM emp

 

COUNT(DISTINCTDEPTNO)

---------------------

                    3

6.3.         函數:MAX

 

语法:

MAX([DISTINCT|ALL] expression)

 

用途:

对查询返回的行集求最大值.如果有多个最大值,将所有均返回.要检索公司中最高工资的雇员.

 

语法:

    SELECT ename,sal

      FROM emp

     WHERE sal=(select max(sal)

           FROM emp)

 

ENAME            SAL

---------- ---------

KING            5000

 

6.4.         函數:MIN

 

语法:

MIN([DISTINCT|ALL] expression)

 

用途:

对查询返回的行集求最小值.如果有多个最小值,将所有均返回.

 

例如:

    SELECT MIN(last_name)

      FROM employee

 

MIN(LAST_NAME)

---------------

ADAMS

 

 

 

 

6.5.         函數:SUM

 

语法:

SUM([DISTINCT|ALL] expression)

 

用途:

计算查询返回的所有非空数值的总和.如果返回的数据都是空值,则该函数也返回空值.

 

例如:

    SELECT SUM(salary)"Total"

      FROM employee

     WHERE department_id=10

 

    Total

---------

     8750

 

6.6.         函數:VARIANCE

 

语法:

VARIANCE([DISTINCT|ALL] expression)

 

用途:

该函数计算返回所有行的统计方差.

 

例如:

    SELECT VARIANCE(salary)

      FROM employee

 

VARIANCE(SALARY)

----------------

       973659.27

 

 

 

 

 

 


伪列

返回值

Sequence.CURRVAL

上一次由序列产生器产生的序列名值.只有在当前实例会话中从该序列选择过一次值,这个伪列才会有效.

LEVEL

查诣的深度,LEVEL适用于特殊的树查询.

Sequence.NEXTVAL

选择这个伪列将导致序列发生器返回该序列的下一个值.一旦选择了该值,它就不能被重用,因为以后的每次检索都将返回下一个值.

ROWID

这个伪列表示数据行确切的存储位置.ROWID的格式是一个三个16进制数的结构AAAAAAAA.BBBB.CCCC,这里AAAAAAAA表示数据库文件中包含该行的块号,BBBB是数据块内部的行号,而CCCC则是数据中的文件ID.

ROWNUM

被检索数据行的序列号.

SYSDATE

当前日期和时间.

UID

当前用户的标识ID.

USER

用户登录进数据库的名字.

 

 

 


 TABLE: LOCATION                                部门地址表

 -------------------- -------- ----

 LOCATION_ID          NOT NULL NUMBER(3)        地址ID

 REGIONAL_GROUP                VARCHAR2(20)     地址名

 

 TABLE: DEPARTMENT                              部门名称表

 -------------------- -------- ----

 DEPARTMENT_ID        NOT NULL NUMBER(2)        部门ID

 NAME                          VARCHAR2(14)     部门名称

 LOCATION_ID                   NUMBER(3)        地址ID(LOCATION.LOCATION_ID)

 

 TABLE: JOB                                     工种表

 -------------------- -------- ----

 JOB_ID               NOT NULL NUMBER(3)        工种ID

 FUNCTION                      VARCHAR2(30)     工种名称

 

 TABLE: EMPLOYEE                                雇员信息表

 -------------------- -------- ----

 EMPLOYEE_ID          NOT NULL NUMBER(4)        雇员ID

 LAST_NAME                     VARCHAR2(15)

 FIRST_NAME                    VARCHAR2(15)

 MIDDLE_INITIAL                VARCHAR2(1)     

 JOB_ID                        NUMBER(3)        工种ID(JOB.JOB_ID)

 MANAGER_ID                    NUMBER(4)        领导ID(EMPLOYEE.EMPLOYEE_ID)

 HIRE_DATE                     DATE             雇佣日期

 SALARY                        NUMBER(7,2)      薪水

 COMMISSION                    NUMBER(7,2)      佣金

 DEPARTMENT_ID                 NUMBER(2)        部门ID(DEPARTMENT.DEPARTMENT_ID)

 

 TABLE: SALARY_GRADE                            薪资等级表

 -------------------- -------- ----

 GRADE_ID             NOT NULL NUMBER(3)        等级ID

 LOWER_BOUND                   NUMBER(7,2)      最低工资

 UPPER_BOUND                   NUMBER(7,2)      最高工资

 

 TABLE: PRODUCT                                 产品信息表

 -------------------- -------- ----

 PRODUCT_ID           NOT NULL NUMBER(6)        品号

 DESCRIPTION                   VARCHAR2(30)     品名

 

 TABLE: PRICE                                   产品价格表

 -------------------- -------- ----

 PRODUCT_ID           NOT NULL NUMBER(6)        品号(PRODUCT.PRODUCT_ID)

 LIST_PRICE                    NUMBER(8,2)      价格

 MIN_PRICE                     NUMBER(8,2)      最低价格

 START_DATE           NOT NULL DATE             生效日期

 END_DATE                      DATE             失效日期

 

 TABLE: CUSTOMER                                客户信息表

 -------------------- -------- ----

 CUSTOMER_ID          NOT NULL NUMBER(6)        客户ID(CUSTOMER.CUSTOMER_ID)

 NAME                          VARCHAR2(45)     客户名

 ADDRESS                       VARCHAR2(40)     客户地址

 CITY                          VARCHAR2(30)     城市

 STATE                         VARCHAR2(2)      州

 ZIP_CODE                      VARCHAR2(9)      邮编

 AREA_CODE                     NUMBER(3)        区号

 PHONE_NUMBER                  NUMBER(7)        电话号码

 SALESPERSON_ID                NUMBER(4)        销售员ID(EMPLOYEE.EMPLOYEE_ID)

 CREDIT_LIMIT                  NUMBER(9,2)      信用限制

 COMMENTS                      LONG             备注

 

 TABLE: SALES_ORDER                             订单单头表

 -------------------- -------- ----

 ORDER_ID             NOT NULL NUMBER(4)        订单ID

 ORDER_DATE                    DATE             订单日期

 CUSTOMER_ID                   NUMBER(6)        客户ID(CUSTOMER.CUSTOMER_ID)

 SHIP_DATE                     DATE             出货日期

 TOTAL                         NUMBER(8,2)      总金额

 

 TABLE: ITEM                                    订单单身表

 -------------------- -------- ----

 ORDER_ID             NOT NULL NUMBER(4)        订单ID(SALES_ORDER.ORDER_ID)

 ITEM_ID              NOT NULL NUMBER(4)        订单行号

 PRODUCT_ID                    NUMBER(6)        品号(PRODUCT.PRODUCT_ID)

 ACTUAL_PRICE                  NUMBER(8,2)      实际价格

 QUANTITY                      NUMBER(8)        订单数量

 TOTAL                         NUMBER(8,2)      总金额

 

 

 

 

  相关解决方案