全国服务热线:4008-888-888

行业新闻

Oracle数据信息库新手入门之涵数/种类

Oracle关键数据信息种类 简述:各种各样数据信息库所适用的数据信息种类大同市小异,与规范SQL語言中的数据信息种类将会略微进出 种类:varchar2:能够在申明字段名时设定它的长短限制。并且应用它以后,也不必再考虑到空格符的存有 若插进的标识符串的长短小于长短限制,系统软件便会全自动将其减缩为标识符

Oracle数据信息库新手入门之涵数/种类

Oracle关键数据信息种类

简述:各种各样数据信息库所适用的数据信息种类大同市小异,与规范SQL語言中的数据信息种类将会略微进出

种类:varchar2:能够在申明字段名时设定它的长短限制。并且应用它以后,也不必再考虑到空格符的存有

若插进的标识符串的长短小于长短限制,系统软件便会全自动将其减缩为标识符串的真正长短

number(m,n):既能够用于表明整型,还可以表明浮点型。但m不能以超出38。假如n为0或是省去n,就意味着它是整数金额

date:用于储放时间和時间

blob:一般是在运用程序中应用到它,而并不是在数据信息库文件运用SQL命令立即应用

例如根据JDBC技术性浏览数据信息库,读写能力blob或clob种类的字段名,即读写能力长的标识符串信息内容这些

char:它是一种定长的标识符种类。在Oracle数据信息库不区别标识符和标识符串,他们被通称为标识符型或文字型

说白了定长的标识符型就是指,插进的标识符串若沒有做到承诺的字段名长短,系统软件便会在标识符串尾部全自动补空格符

一样,载入时的字段名长短始终是申明时的字段名长短。并且在较为标识符串內容的情况下,也必须考虑到到空格符的过虑

nchar:它也是定长的标识符串种类,它是SQL語言规范中要求的,一般选用Unicode编号来储存不一样我国或不一样語言的标识符

varchar:SQL规范在界定varchar时并沒有确保可以往前和向后适配,既有将会伴随着語言规范的改动而造成兼容问题的难题

因此Oracle界定了同varchar型相近的varchar2型。便是以便在Oracle之后的版本号中,都始终适用varchar2种类

Oracle那么做便是以便保证该类型往前后适配,以做到可以在Oracle系列产品数据信息库文件开展数据信息的导进和导出来的目地

long:它和varchar2的区别取决于,它不兼容对标识符串內容开展查找,即查寻时不能以对它的內容开展标准查寻

而varchar2和char、nchar型这些都可以以在查寻的情况下立即查找标识符串的內容

填补:select * from v$nls_parameters;数据信息库的配备信息内容以数据信息表的方式存有,一般称其为有关数据信息的数据信息或数据信息字典

具体上它查寻的是数据信息字典中的一个主视图。在其中NLS_CHARACTERSET相匹配的是当今的数据信息库标识符集

默认设置均为应用数据信息库标识符集。实例教程中应用的是安裝时默认设置的ZHS18GBK标识符集,即中国汉字占两个字节数,英语占一个字节数

而NLS_NCHAR_CHARACTERSET相匹配的是nchar或nvarchar2种类所选用的輔助标识符集,即AL16UTF16标识符集

具体上AL16UTF16是一种16位定长的Unicode编号的标识符集。而数据信息库标识符集及其这类我国标识符集都可以以改动

但数据信息库标识符集改动后将会见面临很比较严重的不良影响,除非是是数据信息库管理方法员,一般客户无须对这些方面开展细究

数据信息库文件的数据信息导进导出来的情况下,假如源数据信息库和总体目标数据信息库所选用的标识符集不一样,也非常容易出难题

涵数

简述:涵数能够觉得是可以进行相对性单独的作用的一段编码的结合。Oracle涵数非常于其他語言中的方式或全过程

Oracle涵数能够分成单行涵数和几行涵数几大类。Oracle涵数全是有回到值的

说白了的单行涵数是对于查寻結果中的每一行都起功效,都是回到一个結果

几行涵数也便是说白了排序涵数,是对于一组查寻的纪录,或是说几行,回到一个結果

单行:实际操作数据信息项,接纳主要参数并回到解决結果,对每一回到行均起功效,可改动数据信息种类,可嵌套循环应用

单行涵数分成标识符涵数,标值涵数,时间涵数,变换涵数,通用性涵数

几行:也称排序涵数,即对一组数据信息开展计算,对于一组数据信息(几行纪录)只有回到一个結果

几行涵数包含avg()、count()、max()、min()、sum()等

例如select avg(sal), max(sal), min(sal), sum(sal), max(hiredate), min(hiredate) from emp;

续一:应用Oracle的系统软件涵数中的单行涵数可完成众多作用,如多数据开展测算,操纵数据信息的輸出文件格式

设定和更改时间的显示信息文件格式,开展数据信息种类变换,应用NVL等涵数解决空值,完成IF-THEN-ELSE多通道支系逻辑性这些

续二:变换涵数不容易更改表格中数据信息的字段名种类和值。它就非常于将数据信息拷贝了一份,所变换的是拷贝以后的数据信息

数据信息种类变换包含暗含变换和显式变换二种方法,提议应用显式的数据信息种类变换,保证SQL句子的靠谱性

续三:通用性涵数可用于包含空值以内的一切种类数据信息。一般用于完成空值的解决,空值的过虑或设定默认设置值等

通用性涵数包含nvl()、nvl2()、nullif()、coalesce()、case表述式、decode()等

嵌套循环:单行涵数能够嵌套循环应用,嵌套循环层级无尽制。排序涵数数最多可嵌套循环双层。嵌套循环涵数的实行次序是由内到外

单行例如select empno,lpad(initcap(trim(ename)),10,' ') 名字, job, sal from emp;

几行例如select max(avg(sal)) from emp group by deptno;--实际上这儿再应用排序涵数就沒有实际意义了

表明:一般数据信息库方面出示的涵数,仅仅开展数据信息的简易的解决,或是说成只有完成极其基本的作用

因此也不应当,或是说成不必寄希望于在数据信息库查寻的方面来完成非常繁杂的业务流程逻辑性

假如运用程序的逻辑性跟数据信息库混在一起得话,会不好于编码的维护保养和升级

并且都不有利于数据信息库的管理方法,包含数据信息移殖,数据信息库导进导出来这些

时间种类

简述:在测算机实际操作系统软件或是各种各样高級程序编写語言中,时间一般会被储存成一个长整数金额,一般纪录的是毫秒

Oracle內部以数据文件格式储存时间和時间信息内容:新世纪,年,月,日,钟头,分鐘,秒

默认设置的时间文件格式是DD MON YY。可让用sysdata涵数获得当今系统软件时间和時间

计算:时间型数据信息能够立即加或减一数量值,結果觉得时间。承诺的该标值意味着的是相加减的天数

2个时间型数据信息能够相减,結果为两者相距是多少天。两者不可以,由于时间相加是沒有实际意义的

NVL()涵数

简述:它用以将空值null更换为特定的默认设置值,可用于标识符、数据、时间等种类数据信息

文件格式:NVL(exp1,exp2)--假如表述式exp1数值null,则回到exp2值,不然回到exp1值

举例说明:select empno, ename, sal, comm, m,0) from emp;

select empno, ename, job, nvl(job, 'No job yet') from emp;

NVL2()涵数

简述:它用以完成标准表述式作用

文件格式:NVL2(exp1,exp2,exp3)--假如表述式exp1值不以null,则回到exp2值,不然回到exp3值

举例说明:select empno, ename, sal, comm, m, m, sal) 全年收入 from emp;

NULLIF()涵数

简述:它用以数据信息等额的性能比较并依据较为結果回到null或在其中一个被较为的标值。具体开发设计中运用其实不是许多

文件格式:nullif(exp1,exp2)--假如表述式exp1与exp2的值相同,则回到null,不然回到exp1的值

举例说明:select name 本名, nullif(pen_name, name) 笔名 from author;

COALESCE()涵数

简述:它用以完成数据信息 接合 作用

文件格式:coalesec(exp1,exp2,...)--先后调查各主要参数表述式,碰到非null值即终止并回到该值

若表述式均为null值,则回到null。一般最终一个表述式全是能保证并不是空值的字段名

举例说明:select empno, ename, sal, comm, m,sal,0) 全年收入 from emp;

CASE表述式

简述:它用以完成多通道支系构造

文件格式:case parison_exp1 then return_exp1

[parison_exp2 then return_exp2

parison_expn then return_expn

else else_exp]

end

举例说明:select empno, ename, sal,

case deptno when 10 then '会计部'

when 20 then '产品研发部'

when 30 then '市场销售部'

else '不明单位'

end 单位

from emp;

表明:CASE中的每个表述式(如deptno,10,会计部等)都可以因此复合型而成的

这类两端对齐方法的撰写是以便提升易读性,自然还可以把编码写在同一行上

在其中case到end中间的总体就非常于一般查寻中的一个字段名,end后边的 单位 是别称

DEDODE()涵数

简述:和case表述式相近,它也用以完成多通道支系构造

文件格式:decode(col|expression, search1, result1

[, search2, result2,...,]

[, default])

举例说明:select empno, ename, sal,

decode(deptno, 10, '会计部',

20, '产品研发部',

30, '市场销售部',

'不明单位')

单位

from emp;

COUNT()涵数

文件格式:count(*)回到组中总纪录数量

count(exp)回到表述式exp值非空的纪录

count(distinct(exp))回到表述式exp值不看重复的、非空的纪录数量

举例说明:select count(*) from emp;--默认设置的状况下,全部表便是一组

m) from emp;--m字段名不以空的纪录(行)数量

select count(distinct(deptno)) from emp;--搜索deptno数值非空且不看重复的纪录数量

排序涵数与空值

简述:排序涵数省去列中的空值。可让用NVL()涵数强制性排序涵数解决空值

举例说明:m) from emp;--m)/m)

m) from emp;--m值的总数

select m,0)) from emp;--m,0))/count(*)

GROUP BY子句

简述:它用以将表格中数据信息分为多个工作组

文件格式:select column, group_function(column)

from table

[where condition]

[group by group_by_expression]

[order by column];

举例说明:select deptno, avg(sal) from emp group by deptno;

表明:出現在SELECT目录中的字段名,假如并不是包括在组涵数中,那麼该字段名务必同时在GROUP BY子句抽出现

包括在GROPY BY子句中的字段名则无须须出現在SELECT目录中。子句实行次序是where group by order by默认设置按升序排序

填补:select deptno, job, avg(sal) from emp group by deptno, job order by deptno desc;--根据好几个字段名的排序

select deptno, avg(sal) from emp;--不法

留意:假如沒有GROUP BY子句,SELECT目录中不容许出現字段名(单行涵数)与排序涵数互用的状况

WHERE中不容许应用排序涵数,如select deptno, avg(sal) from emp where avg(sal) 2000 group by deptno;--不法

这跟子句实行的次序相关。where子句最开始实行,在实行where子句的情况下还没有有实行过group by子句

因此程序不知道道它是在排序,都不曾测算过avg(sal)的组内均值薪水,因此在where子句中不容许应用排序涵数

因为还没有有实行过group by子句,因此这时也不明确怎样如何排序及其分是多少个组

因此where子句中只有开展初中级过虑。这时可使用HAVING子句完成对均值薪水的过虑

HAVING子句

简述:它用以过虑排序

文件格式:select column, group_function(column)

from table

[where condition]

[group by group_by_expression]

[having group_condition]

[order by column];

举例说明:select deptno, job, avg(sal)

from emp

where hiredate = to_date('1981-05-01','yyyy-mm-dd')

group by by deptno, job

having avg(sal) 1200

order by deptno, job; 共享到:
文中"Oracle数据信息库新手入门之涵数/种类"由远航网站站长搜集梳理而成,仅作大伙儿学习培训与参照应用。大量网站建设实例教程尽在远航网站站长站。


在线客服

关闭

客户服务热线
4008-888-888


点击这里给我发消息 在线客服

点击这里给我发消息 在线客服