博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle:plsql学习总结(oracle database 10g sql 开发指南)
阅读量:5858 次
发布时间:2019-06-19

本文共 2671 字,大约阅读时间需要 8 分钟。

  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()

 

转载于:https://www.cnblogs.com/Azhu/archive/2012/04/03/2431132.html

你可能感兴趣的文章
最简单的git使用流程
查看>>
java使用jacob word 转pdf
查看>>
HBase写HLog超时导致RegionServer退出
查看>>
findBugs 快速开始
查看>>
c++ string 基础
查看>>
js小数运算的时候也可能会精度丢失,以下是解决方案
查看>>
ubutnu16.04 安装nginx php7.0 mysql
查看>>
oracle用户授权
查看>>
Android 打开WIFI并快速获取WIFI的信息
查看>>
Oracle数据库常用数据字典
查看>>
Maven小试
查看>>
用Python抓取全站中的404错误
查看>>
Spring boot 入门篇
查看>>
android处理ScrollView与ListView冲突
查看>>
Java IO流 序列三:RandomAccessFile类
查看>>
轻松搞定RabbitMQ(六)——主题
查看>>
Mysql事物隔离级别
查看>>
redmine 安装过程中的无数坑
查看>>
windows 中使用 docker 运行 nginx
查看>>
ios摇一摇的实现
查看>>