Oracle 数据类型

582 阅读3分钟

基础数据类型

字符类型

按照存贮空间分为固定长度类型(char)可变数据类型(varchar2/nvachar2)两种

char

定长类型,会用空格填充来达到最大长度

非Null的char(12)总是包含12字节信息

char字段最多可存储2000字节信息,如果创建表时,不指定char长度,默认为1

varchar2

变长字符串,与char类型不同,他不会使用空格填充至最大长度

最多可存储4000字节的信息

nvarchar2

这是一个包含unicode格式数据的变长字符串

最多可存储4000字节的信息

西文、数字:一个字节

汉字:三个字节

数字类型

number类型

既可以表示数字类型,也可以表示浮点类型

number(p,s) 是最常见的数字类型

p : 是precison的缩写,表示有效数字的位数,最多不超过38个有效数字

s : 是sacle的英文缩写,表示小数点数字的位数

image.png

只写number:表示就是一个整数

number(20,2):表示整数位的位数为20,小数点后的位数精确到2位

integer类型

是number的子类型,等同于number(38,0),用来存储整数

若插入、更新的数值中有小数,则会被四舍五入

日期类型

DATE

最常用的数据类型,存储日期和时间信息,虽然可以用字符串或者数字类型来表示日期和时间信息,但是日期数据具有特殊关联的属性。

一般占有7个字节的存储空间。

TimsStamp

这是一个7字节或者12字节的定宽时间数据类型,它与DATA数据类型不同,因为可以包含小数秒,带小数秒的TimeStamp在小数点右边最多可以保留9位

TimeStamp with time zone

这是timeStamp类型的变种,它包含了时区偏移量的值。

TimeStamp witth local time zone

将时间数据以数据库时区进行规划后进行存储

Lob类型

CLOB类型(charachter large object)

二进制数据,存储单个字节和多个字节字符数据,最大长度4g

BLOB类型(Binary Larage Object)

存储非结构化的二进制数据最大对象,它可以被认为是没有字符集语意的比特流,

一般是图像、声音、视频等文件,最大长度是4g

NLLOG类型

存储unicode类型是数据,最大长度是4G

Long & Raw & Long Raw 类型

Long

它存储变长字符串(超长字符串),最多达2G的字符数据

(2GB 是指2千兆字节,而不是2千兆字符)

Long Raw

能存储2GB的二进制数据,可以存放多媒体、图像、声音

Raw类型

用于存储二进制或字符类型数据,必须指定长度;

这种数据类型存储的数据不会发生字符集转换;

可以存放多媒体、图像、声音等。

附:.NET 类型转化对应表

序号Oracle数据类型.NET类型GetOracleValue类型DbTypeOracleType
1BFILEbyte[]OracleBFile ​BFile
2BLOBbyte[]OracleLob ​Blob
3CHARstringOracleStringAnsiStringFixedLengthChar
4CLOBstringOracleLob  ​Clob 
5DATEDateTimeOracleDateTimeDateTimeDateTime
6FLOATDecimalOracleNumberSingle、Double、DecimalFloat、Double、Number
7INTEGERDecimalOracleNumberSByte、Int16、Int32、Int64、DecimalSByte、Int16、Int32、Number
8INTERVAL YEAR TO  ​MONTHInt32OracleMonthSpanInt32 IntervalYearToMonth
9INTERVAL DAY TO  ​SECONDTimeSpanOracleTimeSpanObjectIntervalDayToSecond 
10LONGstringOracleStringAnsiStringLongVarChar
11LONG RAWbyte[]OracleBinaryBinaryLongRaw
12NCHARstringOracleStringStringFixedLengthNChar
13NCLOBstringOracleLob ​NClob
14NUMBERDecimalOracleNumberVarNumericNumber
15NVARCHAR2stringOracleStringStringNVarChar
16RAWbyte[]OracleBinaryBinaryRAW
17ROWIDstringOracleStringAnsiStringRowid
18TIMESTAMPDateTimeOracleDateTimeDateTimeTimestamp
19VARCHAR2stringOracleStringAnsiStringVarChar