Oracle数据基础(一)

一. Oracle字符串操作

字符串类型

    1. CHAR和VARCHAR2类型

表示字符串数据类型,用来在表中存放字符串信息;

CHAR存放定长字符,即存不满补空格(浪费空间,节省时间);VARCHAR2存放变长字符,存多少占用多少(浪费时间,节省空间);

按照字符的自然顺序排序。


    2. CHAR和VARCHAR2的存储编码

默认单位是字节,可指定为字符

— CHAR(10),等价于CHAR(10 BYTE)

— 指定单位为字符:CHAR(10 CHAR),20个字节

— VARCHAR2(10),等价于VARCHAR2(10 BYTE)

— 指定单位为字符:VARCHAR2(10 CHAR),20个字节

每个英文字符占用一个字节,每个中文字符按编码不同,占用2-4个字节

— ZHS16GBK:2个字节

— UTF-8:2-4个字节

   3. CHAR和VARCHAR2的最大长度

CHAR最大取值为2000字节,最多保存2000个英文字符

VARCHAR2最大取值为4000字节

CHAR可以不指定长度,默认为1,VARCHAR2必须指定长度


4. LONG和CLOB类型

LONG:VARCHAR2加长版,存储变长字符串,最多达2GB的字符串数据

LONG有诸多限制:每个表只能有一个LONG类型列;不能作为主键;不能建立索引;不能出现在查询条件中

CLOB:存储定长或变长字符串,最多达4GB的字符串数据

ORACLE建议开发中使用CLOB替代LONG类型


字符串函数

   1. CONCAT和“||”

CONCAT(char1, char2);

— 返回两个字符串连接后的结果,两个参数char1,char2是要连接的两个字符串

等价操作:连接操作符“||”

如过char1和char2任何一个为NULL,相当于连接了一个空格

“||”在数据库中是连接字符串,相当于java中的“+”,注意和java“||”区分

eg:

java中:”hello” + “world” ==> “helloworld"

DB中:’hello’||’world’ ==> ‘hello world'

oracle中:CONCAT(‘hello’,’world’) ==> ‘hello world'


    2. FROM DUAL(虚表)

DUAL:虚表,没有这么一个表,只为了满足SELECT的语法要求。

— 我们常用虚表来测试表达式的结果。

— 在数据库中,我们想测试某个表达式的结果只能使用SELECT语句来实现

— 什么时候使用虚表:当SELECT语句中没有任何表中的字段参与时

— eg: 假设表emp中name和sal两个字段存储的内容分别是名字和薪资

SELECT name||’:’||sal FROM emp

则所得结果为:boss:5000


   3. LENGTH

LENGTH(char):用于返回字符串的长度

如果字符类型是VARCHAR2,返回字符的实际长度,如果字符类型是CHAR,长度还要包括后补的空格

eg: SELECT name,LENGTH(name) FROM emp;

所得结果:boss 4(name为CHAR)


    4. UPPER,LOWER和INITCAP

大小写转换函数,用来转换字符的大小写

UPPER(char)用于将字符转换为大写形式

LOWER(char)用于将字符转换为小写形式

INITCAP(char)用于将字符串中每个单词的首字符大写,其它字符小写,单词之间用空格和非字母字符分隔

如果熟人的参数是NULL值,仁返回NULL值


    5. TRIM,LTRIM,RTRIM

作用:截去子串

语法形式:

— TRIM(c2 FROM c1)从c1的前后截去c2

— LTRIM(c1[, c2])从c1的左边(Left)截去c2

— RTRIM(c1[, c2])从c1的右边(Right)截去c2

如果没有c2就去除空格

eg:SELECT TRIM(‘e’ from ‘eeeeliteeee’) FROM DUAL;

参数中from前面只能是单一字符

若没有from以及前面的字符,则是去除空白

eg:SELECT LTRIM(‘eeeeliteeee’,’e’) FROM DUAL;

SELECT RTRIM(‘eeeliteee’,’e’) FROM DUAL;

不指定第二个参数,默认是去除空白


    6. LPAD, RPAD

补位函数,用于在字符串char1的左端或右端用char2补足到n位,char2可重复多次

— LPAD(char1, n, char2)左补位函数

— RPAD(char1, n, char2)右补位函数

在emp表中使用左补位,将sal用$补齐20位

eg:SELECT name, LPAD(sal, 20, ‘$’) as “salary” FROM emp;

作用:要求显示20个字符,若sal的值不足长度,则补充若干个’$’,以达到20个字符

eg:SELECT RPAD(‘aaaaAAAAA’) FROM DUAL;

得到结果为aaaaA


   7. SUBSTR

SUBSTR(char, [m[, n]])

— 用于获取字符串的子串,返回char中从m位开始取n个字符

如果m=0,则从首字符开始,如果m取负数,则从尾部开始

如果没有设置n,或者n的长度超过了char的长度,则取到字符串末尾为止

字符串的首位计数从1开始


  8. INSTR

INSTR(char1, char2[, n [, m]]);

返回子串char2在原字符串char1中的位置

参数:

— 从n的位置开始搜索,没有指定n,从第一个字符开始搜索

— m用于指定子串的第m次出现次数,如果不指定取值1

— 如果在char1中没有找到子串char2,返回0


二. Oracle数值操作

数值类型

    1. NUMBER(P)表示整数

完整语法:NUMBER(precision, scale)

— 如果没有设置scale,则默认取值0,即NUMBER(p)表示整数

— P表示数字的总位数,取值为1-38

用来在表中存放如编码,年龄,次数等用整数记录的数据


    2. NUMBER(P, S)表示浮点数

NUMBER(precision, scale)

— precision:NUMBER可以存储的最大数字长度(不包括左右两边的0)

— scale:在小数点右边的最大数字长度(包括左侧0)

指定了s但是没有指定p,则p默认为38

经常用于表中存放金额,成绩等有小数的数据。

NUMBER的变种数据类型:内部实现是NUMBER,可以将其理解为NUMBER的别名,目的是多种数据库及编程语言兼容

— NUMERIC(p, s):完全映射至NUMBER(p, s)

— DECIMAL(p, s)或DEC(p, s):完全映射至NUMBER(p, s)类型

— INTEGER或INT:完全映射至NUMBER(38)类型

— SMALLINT:完全映射至NUMBER(38)类型

— FLOAT(b):映射至NUMBER类型

— DOUBLE PRECISION:映射至NUMBER类型

— REAL:映射至NUMBER类型


数值函数

    1. ROUND

ROUND(n[, m]):用于四舍五入

— 参数中的n可以是任何数字,指要被处理的数字

— m必须是整数

— m取正数则四舍五入到小数点后第m位

— m取0值则四舍五入到整数位

— m取负数,则四舍五入到小数点前m位

— m缺省,默认是0

eg:SELECT ROUND(45.678, -1) FROM DUAL; —50


    2. TRUNC

TRUNC(n[, m]):用于截取

— n和m的定义和ROUND(n[, m])相同,不同的是功能上按照截取的方式处理数字n

eg:SELECT TRUNC(45.678, -1) FROM DUAL; —40


   3. MOD

MOD(m, n):返回m除以n后的余数

—n为0则直接返回m


    4. CEIL和FLOOR

CEIL(n),FLOOR(n)这两个函数,一个是取大于或等于n的最小整数值,另一个是取小于或等于n的最大整数值

eg:SELECT CEIL(45.678) FROM DUAL; —46

SELECT FLOOR(45.678) FROM DUAL; —45


三. Oracle日期操作

日期类型

    1. DATE

ORACLE中最常用的日期类型,用来保存日期和时间

DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日

DATE类型在数据库中的存储固定为7个字节,格式为:

— 第一个字节:世纪+100

— 第二个字节:年

— 第三个字节:月

— 第四个字节:天

— 第五个字节:小时+1

— 第六个字节:分+1

— 第七个字节:秒+1


    2. TIMESTAMP

ORACLE常用的日期类型

与DATE的区别是不仅可以保存日期和时间,还能保存小数秒,最高精度可以到ns(纳秒)

数据库内部用7或者11字节存储,精度为0,用7字节存储,与DATE功能相同,精度大于0则用11字节存储

格式为:

— 第1字节-第7字节:和DATE相同

— 第8-11字节:纳秒,采用4个字节存储,内部运算类型为整型


日期关键字

    1. SYSDATE

其本质是一个ORACLE的内部函数,返回当前的系统时间,精确到秒

默认显示格式是DD-MON-RR


    2. SYSTIMESTAMP

内部函数,返回当前系统日期和时间,精确到毫秒


日期转换函数

    1. TO_DATE

TO_DATE(char[, fmt[, nlsparams]]):将字符串按照定制格式转换为日期类型

— char:要转换的字符串

— fmt:格式

— nlsparams:指定日期语言

— 常用的日期格式见表

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。