zoukankan      html  css  js  c++  java
  • oracle:plsql学习总结(oracle database 10g sql 开发指南)

    1. 1.       BINARY_FLOAT BINARY_DOUBLE 的优点:

    1.    前者32位后者64位,存储时候前者5byte 后者9byte,number 可能需要多大22byte。

    2.    表示的范围更广(相对number)

    3.    执行速度更快,因为两者运算通常在硬件中执行,而number 需要先经过软件转换。

    4.    运算封闭,对于两者的运算结果要么是数字,要么是一个特殊值。如BINARY_FLOAT 除以一个BINARY_FLOAT结果是BINARY_FLOAT.

    5.    取整透明,两者是以二进制来表示数字的,而number 是以十进制表示。例如,一个十进制的浮点数要以最近的十进制位置进行取整,而一个二进制的浮点数则以最近的二进制位置进行取整。

    特殊值

    描述

    BINARY_FLOAT_NAN

    非BINARY_FLOAT类型的数字(NotaNnum)

    BINARY_FLOAT_INFINITY

    BINARY_FLOAT类型的无穷大(INF)

    BINARY_DOUBLE_NAN

    非BINARY_DOUBLE类型的数字(NotaNnum)

    BINARY_DOUBLE_INFINITY

    BINARY_DOUBLE类型的无穷大(INF)

    Eg:

    INSERT INTO table_name( type_float, type_double) VALUES

    { BINRARY_FLOAT_INFINITY, BINARY_DOUBLE_INFINITY};

    1. 2.       外连接的符号:(+

    Eg:

    SELECT p.name , pt.name FROM products p, product_type pt WHERE

    p.product_type_id = pt.product_type_id (+)

    pt 表中的NULL 会保留,属于左连接。如果(+)放左边属于右连接

    注意

    1.    只能在连接的一端使用外连接操作符,而且不能再两端同时使用外连接操作符。

    2.    不能同时使用外连接条件和IN 操作符:WHERE p.COLUNM (+) IN (1,2,3)

    3.    不能同时使用一个外连接条件和另外一个使用or 操作符的连接条件:WHERE p.COLUNM(+) = pt.COLUNM OR p.COLUNM 1;

    可以参考oracle 的 SQLReference手册。

    SQL 语法执行:

    1.    FROM table1 t1 INNER JOIN table2 t2 ON t1.COLUNM = t2.COLUNM

    2.    FROM table1 t1 INNER JOIN table2 t2 USING( COLUNM)

    3.    笛卡尔连接: FROM t1 CROSS JOIN t2

    1. 3.       一些函数:

    NANVL(x,value)如果x匹配NaN,就返回value ,否者返回x

    ASCII(x)

    CHR(x)

    INITCAP(x)

    INSTR(x, find_string, [strart]),[occurence])

    LENGTH(x)

    LOWER(x)

    LPAD(x, width [,pad_string])

    LTRIM(x [,trim_string] )

    ……

    LTRIM(x [,trim_string]), TRIM() 和 TRIM(trim_string  from  x )

    左边截取,右边截取,左右同时截取,x为源字符串,trim_string 为需求截取的 ‘1235’ ,为空即为空格。

    如  x=123534535242433aaaaaaaaa    , trim_string =’12345’

    结果为 : aaaaaaa

    BITAND(x,y)      对x 和 y 进行 位与  操作。

    CEIL(x)                      返回大于或等于x 的最小整数

    FLOOR(x)            返回小于或等于x 的最大整数

    ROUND(x [,y])     对x四舍五入,y为对即为小数进行取整,y<0即对小数点左边进行取整

    TRUNC(x [,y] )     对x进行截取

    CAST(x AS type_name)        将x 转换为tpye_name类型

    BIN_TO_NUM(x)

    CHARTOROWID(x)

    CONVERT(x, source_char_set, dest_char_set)     一个字符集到另一个字符集

    DECODE(x, search, result ,default)

    TRANSLATE(x, from_string, to_string)             对应转换

    TO_CHAR(x  [,format] )  可以控制格式

    聚集函数: avg(x)等,    MEDLAN(x)返回x 的中间值

    1. 4.       EXISTS NOT EXISTS IN NOT IN  的比较

    EXISTS 只检查行的存在性,而IN 则检查实际值的存在性.

    对于一个列如果包含NULL,NOT EXISTS 返回TRUE,NOT IN 返回 FALSE

    1. 5.       START WITH CONNECT BY

    SELECT [LEVEL,] column, expression

    FROM table

    [WHERE where_clause]

    [START WITH start_condition] [CONNECT BY PRIOR prior_condition];

    LEVEL 是一个“伪列”,隐藏的,表示位于数的第几层,根节点为1

    从上到下历遍,employee_id = manager_id

    从下到上历遍, manager_id = employee_id

    START WITH 可以不从根节点开始

    同记层数可以写  COUNT(DISTINCT LEVEL)

    1. 6.       ROLLUPCUBE

    ROLLUP 为每个分组返回一条小计记录,并为全部分组返回总计

    GROUP BY ROLLUP(division_id );

    CUBE 返回所有列组合的小计信息,同时在最后显示总计信息

    GROUP BY CUBE(division_id);

    GROUPING(division_id) 对输入列返回0或1,如果为空返回1, 非空返回0
    GROUPING SETS(division_id) 只返回统计信息

    GROUPING_ID()

  • 相关阅读:
    Typora Writings
    Xcode7.3 beta 新功能
    最美应用API接口分析
    'Project Name' was compiled with optimization
    web前端开发与iOS终端开发的异同[转]
    2015-12-19_16_30_15
    Xcode搭建Python编译环境
    jsPach.qq.com
    Q&AApple’s Craig Federighi talks open source Swift, Objective-C and the next 20 years of development
    .NET Core项目与传统vs项目的细微不同
  • 原文地址:https://www.cnblogs.com/Azhu/p/2431132.html
Copyright © 2011-2022 走看看