Home  >  Article  >  Database  >  关于Oracle中的sql数据类型

关于Oracle中的sql数据类型

WBOY
WBOYOriginal
2016-06-07 16:43:03789browse

对于Oracle中的sql来说,数据类型的支持非常全面,无论是数据计算还是复杂的业务逻辑封装需要,数据类型的支持都是内置和可扩展的

数据类型对于每一种编程语言而言都是数据存储的基础,对于编程语言的实现功能而言也是一个标尺,有些编程语言可能数据类型很丰富,比如java,c,在数据计算方面的支持很全面,有些编程比较精简,更侧重于实现特定的功能,数据类型也就简单得多。比如说shell。

对于Oracle中的sql来说,数据类型的支持非常全面,无论是数据计算还是复杂的业务逻辑封装需要,数据类型的支持都是内置和可扩展的。可以根据需要来选择。

目前Oracle的数据类型分类大体有如下的结构。

用户自定义类型,基本上都是由type来实现,可以根据需要来灵活定制。

内置数据类型是主要的应用方向。大体分为了标量,集合,关系型

关于自定义数据类型有必要多说一些。

Oracle PL/SQL复合数据类型 

Oracle数据类型学习笔记

Oracle定义数据类型Type 

Oracle DB 隐式和显式数据类型转换 

Oracle常用数据类型和完整性约束

Oracle 4个大对象(lobs)数据类型介绍 

一个简单的例子如下,我们创建测试表test_datatype来简单的说明。

create table test_datatype(id number,name varchar2(100),memo varchar2(1000));

create or replace type t_test_datatype as
 object
 (
 id number,
 name varchar2(100)
 )
 /

create or replace type tt_test_datatype as table of t_test_datatype
 /

create table new_test_datatype
 (
 object_id number,
other_columns tt_test_datatype
 )
nested table other_columns store as other_columns_nt
 /

而对于内置数据类型,简单的总结和描述总结成了表格。

数据类型 长度 说明

CHAR(n BYTE/CHAR) 默认1字节,n值最大为2000 末尾填充空格以达到指定长度,超过最大长度报错。默认指定长度为字节数,字符长度可以从1字节到四字节。

NCHAR(n) 默认1字符,最大存储内容2000字节 末尾填充空格以达到指定长度,n为Unicode字符数。默认为1字节。

NVARCHAR2(n) 最大长度必须指定,最大存储内容4000字节 变长类型。n为Unicode字符数

VARCHAR2(n BYTE/CHAR) 最大长度必须指定,至少为1字节或者1字符,n值最大为4000 变长类型。超过最大长度报错。默认存储的是长度为0的字符串。

VARCHAR 同VARCHAR2 不建议使用

NUMBER(p[,s]) 1-22字节。 存储定点数,,值的绝对值范围为1.0 x 10 -130至1.0 x 10 126。值大于等于1.0 x 10 126时报错。p为有意义的10进制位数,正值s为小数位数,负值s表示四舍五入到小数点左部多少位。

P取值范围1到38

S取值范围-84到127

BINARY_FLOAT 5字节,其中有一长度字节。 32位单精度浮点数类型。

符号位1位,指数位8位,尾数位23位。

BINARY_DOUBLE 9字节,其中有一长度字节。 64位双精度浮点数类型。

对于一些数据样例,总结如下:

输入数据 数据类型 存储结果

7,456,123.89 NUMBER 7456123.89

7,456,123.89 NUMBER(*,1) 7456123.9

7,456,123.89 NUMBER(9) 7456124

7,456,123.89 NUMBER(9,2) 7456123.89

7,456,123.89 NUMBER(9,1) 7456123.9

7,456,123.89 NUMBER(6) (not accepted, exceeds precision)

7,456,123.89 NUMBER(7,-2) 7456100

本文永久更新链接地址:

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn