【Oracle 基础】基本数据类型
2015-11-16 11:32
357 查看
NUMBER类型
定义
定义格式NUMBER (precision,scale)precision表示数字中的有效位(从左边第一个不为0的数算起,小数点和负号不计入有效位数),取值范围为【1-38】默认38。
scale表示精确到多少位,取值范围为【-84-127】,默认值为0。大于零时,表示数字精确到小数点右边的位数;小于零时,将把该数字取舍到小数点左边的指定位数,所以,NUMBER整数部分允许的长度为(precision- scale),无论scale是正数还是负数,并且,如果precision小于scale,表示存储的是没有整数的小数。
关于number的精度(p)和刻度(s)遵循以下规则:
1) 当一个数的整数部分的长度> p-s 时,Oracle就会报错
2) 当一个数的小数部分的长度> s 时,Oracle就会舍入。
3) 当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。
4) 当s > p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入
案例
实际值 | 数据类型 | 存储值 |
1234567.89 | Number | 1234567.89 |
1234567.89 | Number(8) | 1234567 |
1234567.89 | Number(6) | 出错 |
1234567.89 | Number(9,1) | 1234567.9 |
1234567.89 | Number(9,3) | 出错 |
1234567.89 | Number(7,2) | 出错 |
1234567.89 | Number(5,-2) | 1234600 |
1234511.89 | Number(5,-2) | 1234500 |
1234567.89 | Number(5,-4) | 1230000 |
1234567.89 | Number(*,1) | 1234567.9 |
0.012 | Number(2,3) | 0.012 |
0.23 | Number(2,3) | 出错 |
NUMBER类型的子类
decimal,numeric,int等都为SQL、DB2等数据库的数据类型,ORACLE为了兼容才将其引入;但实际上在ORACLE内部还是以NUMBER的形式将其存入,所以在集合关系上它们也都是number的子集。int类型只能存储整数;
在oracle数据库建表的时候,decimal,numeric不带精度,oracle会自动把它处理成INTEGER;带精度,oracle会自动把它处理成number。
Oracle只用NUMBER(m,n)就可以表示任何复杂的数值数据。
DATE类型
这是ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型。DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日date类型在数据库中的存储固定为7个字节,格式为:
第1字节:世纪+100
第2字节:年
第3字节:月
第4字节:天
第5字节:小时+1
第6字节:分+1
第7字节:秒+1
TIMESTAMP(p)类型
这也是ORACLE常用的日期类型,它与date的区别是不仅可以保存日期和时间,还能保存小数秒,小数位数可以指定为0-9,默认为6位,所以最高精度可以到ns(纳秒),数据库内部用7或者11个字节存储,如果精度为0,则用7字节存储,与date类型功能相同,如果精度大于0则用11字节存储。格式为:
第1字节:世纪+100
第2字节:年
第3字节:月
第4字节:天
第5字节:小时+1
第6字节:分+1
第7字节:秒+1
第8-11字节:纳秒,采用4个字节存储,内部运算类型为整形
如何取当前时间
select sysdate from dual; -- 2015/11/16 11:49:39 select systimestamp from dual; -- 16-11月-15 11.49.39.647102 上午 +08:00
相关文章推荐
- oracle11g 创建用户并授权
- Oracle判断当前时间是否在范围呢
- Oracle 锁表,解锁
- [Oracle11g] ORA-28000: the account is locked 的解决办法
- 21. oracle游标循环例子
- oracle case when then
- [Hibernate系列—] 1. 下载与试用Hibernate(MySQL与Oracle 配置)
- Oracle数据类型与.NET中的对应关系(转)
- oracle一次插入多条数据
- Oracle-EDB 修改表结构兼容性
- oracle数据库技巧
- oracle json 解析函数
- [转]oracle awr报告生成和分析
- 关于BigDecimal在MySQL和Oracle中设计表的时候如何设计其类型的问题
- Oracle错误处理机制
- Oracle 创建用户 修改用户密码 授权命令
- oracle 删除归档日志的正确方式
- oracle性能调优思想与概论
- 【Loadrunner】参数化-直接从oracle数据库取值参数化
- Win7下完全卸载Oracle 11g的步骤