ORACLE中都有哪些数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE中都有哪些数据类型相关的知识,希望对你有一定的参考价值。

Oracle中的数据类型有:字符型、数字型、日期型等。具体介绍如下:
1、字符型:char(n):用于标识固定长度的字符串。
  当实际数据不足定义长度时,使用空格补全右边不足位。varchar(n):可变字符串类型。
  为SQL标准规定的,数据库必须实现的数据据类型。可以存储空字符串。

  varchar2(n):可变字符串类型,是oracle在varchar的基础上自行定义的可变长度字符串
类型。当做为列类型使用时,最大长度可被定义为4000;当做为变量类型使用时,长度
可被定义为32767。不可以存储空字符串。
2、数值型:可用于存储整数、浮点数。
  number(m,n):m表示有效数字的总位数(最大为38位),n表示小 数位数。
3、日期时间型:
  date:包含Year(年)、Month(月) 、Day(天)、Hour(时)、Minutes(分)、Second(秒)
  说明:(yyyy表示4位年分;mm表示月份;dd表示天;hh表示时;mi表示分;ss表示秒)
4、大对象类型:lob:用于存储大对象类型。例如:文本信息长度超过4000、二进制文件等。最大容量为4GB。
  lob分类:clob:用于存储大型文本数据。(例如:备注信息)
  blob:用于存储二进制数据。(例如:图片文件)
  bfile:作为独立文件存在的二进制数据。
5、特殊数据:
  null与空字符串:null与空字符串,都要用is null或is not null进行比较。
单引号:想将单引号做为字符中使用,请通过单引号进行转义。
6、注意:oracle中,没有布尔类型,可利用字符串或数值(1/0)表示
参考技术A ORACLE的数据类型 -- ORACLE的数据类型
常用的数据库字段类型如下:
字段类型 中文说明 限制条件 其它说明
CHAR 固定长度字符串 最大长度2000 bytes
VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749
NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes
NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS) 经过严格测试,无千虫问题
LONG 超长字符串 最大长度2G(231-1) 足够存储大部头著作
RAW 固定长度的二进制数据 最大长度2000 bytes 可存放多媒体图象声音等
LONG RAW 可变长度的二进制数据 最大长度2G 同上
BLOB 二进制数据 最大长度4G
CLOB 字符数据 最大长度4G
NCLOB 根据字符集而定的字符数据 最大长度4G
BFILE 存放在数据库外的二进制数据 最大长度4G
ROWID 数据表中记录的唯一行号 10 bytes ********.****.****格式,*为0或1
NROWID 二进制数据表中记录的唯一行号 最大长度4000 bytes
NUMBER(P,S) 数字类型 P为整数位,S为小数位
DECIMAL(P,S) 数字类型 P为整数位,S为小数位
INTEGER 整数类型 小的整数
FLOAT 浮点数类型 NUMBER(38),双精度
REAL 实数类型 NUMBER(63),精度更高

数据类型 参数 描述
char(n) n=1 to 2000字节 定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)

varchar2(n) n=1 to 4000字节 可变长的字符串,具体定义时指明最大长度n,这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。
如果数据长度没有达到最大值n,Oracle 8i会根据数据大小自动调节字段长度,如果你的数据前后有空格,Oracle 8i会自动将其删去。VARCHAR2是最常用的数据类型。可做索引的最大长度3209。

number(m,n) m=1 to 38
n=-84 to 127 可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数。
如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。
如:number(3,0),输入575.316,真正保存的数据是575。

date 无 从公元前4712年1月1日到公元4712年12月31日的所有合法日期,Oracle 8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。
缺省格式为DD-MON-YY,如07-11月-00 表示2000年11月7日。

long 无 可变长字符列,最大长度限制是2GB,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。long是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

raw(n) n=1 to 2000 可变长二进制数据,在具体定义字段的时候必须指明最大长度n,Oracle 8i用这种格式来保存较小的图形文件或带格式的文本文件,如Miceosoft Word文档。
raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

long raw 无 可变长二进制数据,最大长度是2GB。Oracle 8i用这种格式来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件。
在同一张表中不能同时有long类型和long raw类型,long raw也是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

blob /clob /nclob 无 三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件,最大长度是4GB。
LOB有几种类型,取决于你使用的字节的类型,Oracle 8i实实在在地将这些数据存储在数据库内部保存。
可以执行读取、存储、写入等特殊操作。

bfile 无 在数据库外部保存的大型二进制对象文件,最大长度是4GB。
这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。
Oracle 8i可以读取、查询BFILE,但是不能写入。
大小由操作系统决定。
参考技术B 数据类型大约分为:character, number, date, LOB, 和RAW等类型。虽然ORACLE8i也允许你自定义数据类型,但是它们是最基Character 数据类型
Character 数据类型用来存储字母数字型数据。当你在oracle 中定义一个character 数据时,通常需要制定字段的长度,它是该字段的最大长度。ORACLE提供以下几种character 数据类型:

CHAR() CHAR数据类型是一种有固定长度和最大长度的字符串。存储在数据类型为CHAR字段中的数据将以空格的形式补到最大长度。长度定义在1——2000字节之间。

当你创建一个CHAR型字段,数据库将保证在这个字段中的所有数据是定义长度,如果某个数据比定义长度短,那么将用空格在数据的右边补到定义长度。如果长度大于定义长度将会触发错误信息。

VARCHAR() varchar型数据是varchar2型数据的快照。

VARCHAR2() varchar2数据类型是一种可变长度的、有最大长度的字母数字型数据。Varchar2类型的字段长度可以达到4000字节,Varchar2类型的变量长度可以达到32676字节。

一个空的varchar2(2000)字段和一个空的varchar2(2)字段所占用的空间是一样的。

NCHAR() 和 NVARCHAR2() NCHAR() 和 NVARCHAR2()数据类型分别与CHAR() 和 VARCHAR2()类型是相同的,只不过它们用来存储NLS(National Language Support)数据。

LONG LONG 数据类型是一个遗留下来的而且在将来不会被支持的数据类型。它将被LOB(Large Object)数据类型所代替。

比较规则 Varchar2和char数据类型根据尾部的空格有不同的比较规则。对Char型数据,尾部的空格将被忽略掉,对于Varchar2型数据尾部带空格的数据排序比没有空格的要大些。比如:

Char 型数据: ‘YO’=‘YO ’

Varchar2型数据: ‘YO’<’YO ’

Numberic 数据类型

Numberic 数据类型用来存储负的和正的整数、分数和浮点型数据,范围在-1*10-103 和9.999…99*10125之间,有38位的精确度。标识一个数据超出这个范围时就会出错。
本的数据类型。
参考技术C VARCHAR2(size) 可变长度的字符串,其最大长度为size个字节;size的最大值是4000,而最小值是1;你必须指定一个VARCHAR2的size;
NVARCHAR2(size) 可变长度的字符串,依据所选的国家字符集,其最大长度为size个字符或字节;size的最大值取决于储存每个字符所需的字节数,其上限为4000;你必须指定一个NVARCHAR2的size;
NUMBER(p,s) 精度为p并且数值范围为s的数值;精度p的范围从1到38;数值范围s的范围是从-84到127;
例如:NUMBER(5,2) 表示整数部分最大3位,小数部分为2位;
NUMBER(5,-2) 表示数的整数部分最大为7其中对整数的倒数2位为0,前面的取整。
NUMBER 表示使用默认值,即等同于NUMBER(5);
LONG 可变长度的字符数据,其长度可达2G个字节;
DATE 有效日期范围从公元前4712年1月1日到公元后4712年12月31日
RAW(size) 长度为size字节的原始二进制数据,size的最大值为2000字节;你必须为RAW指定一个size;
LONG RAW 可变长度的原始二进制数据,其最长可达2G字节;
CHAR(size) 固定长度的字符数据,其长度为size个字节;size的最大值是2000字节,而最小值和默认值是1;
NCHAR(size) 也是固定长度。根据Unicode标准定义
CLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节
NCLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节;储存国家字符集
BLOB 一个二进制大型对象;最大4G字节
BFILE 包含一个大型二进制文件的定位器,其储存在数据库的外面;使得可以以字符流I/O访问存在数据库服务器上的外部LOB;最大大小为4G字节.本回答被提问者采纳
参考技术D 1、VARCHAR2(size) 可变长度的字符串,其最大长度为4000个字节;
2、NUMBER(p,s) 精度为p并且数值范围为s的数值;精度p的范围从1到38;数值范围s的范围是从-84到127;
例如:NUMBER(5,2) 表示整数部分最大3位,小数部分为2位;
NUMBER(5,-2) 表示数的整数部分最大为7其中对整数的倒数2位为0,前面的取整。
NUMBER 表示使用默认值,即等同于NUMBER(5);
3、LONG 是可变长度的字符数据,其长度可达2G个字节;
4、DATE 日期类型,有效日期范围从公元前4712年1月1日到公元后4712年12月31日
5、RAW(size) 原始二进制数据,size的最大值为2000字节;
6、LONG RAW 可变长度的原始二进制数据,其最长可达2G字节;
7、CHAR(size) 固定长度的字符数据,其最大值是2000字节,而最小值和默认值是1;
8、NCHAR(size) 也是固定长度。根据Unicode标准定义;
9、CLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节;
10、NCLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节;
11、BLOB 一个二进制大型对象;最大4G字节;
12、BFILE 包含一个大型二进制文件的定位器,其储存在数据库的外面;使得可以以字符流I/O访问存在数据库服务器上的外部LOB;最大大小为4G字节;

C#bond 中都有哪些可用的数据类型?

【中文标题】C#bond 中都有哪些可用的数据类型?【英文标题】:What are the available datatypes in C# bond?C#bond 中有哪些可用的数据类型? 【发布时间】:2018-01-11 15:05:40 【问题描述】:

我想知道用 C# 键格式表示应该包含这些字段的表的最佳方法是什么?

字符串名字 字符串姓氏 字符串电子邮件 bool 已注册 日期时间日期加入 字符性别 列表收藏夹 字符串城市 字符串状态 unit16 邮编 字符串国家 列表FrequentPagesURLs

而且我想要一些类似于那种格式的东西

namespace MyProject

    struct Key
    
        0: required string Email;
    

    struct Value
    
        0: required string FirstName; 
        1: optional char Gender;
        .
        .
        .
    

我不确定用 C# 键格式表示 charDateTimeList&lt;string&gt; 以在对象存储中创建表时使用它们的最佳方式是什么。

【问题讨论】:

【参考方案1】:

根据Bond的官方文档,有以下几种:

基本类型:bool、uint8、uint16、uint32、uint64、int8、int16、int32、int64、float、double、string、wstring。

容器:blob、列表、向量、集合、映射、可为空。

用户定义类型:枚举、结构或绑定,其中 T 是结构。

但是,如果您使用bond 生成C# 代码,该文档还解释了如何生成DateTime、char 等。即在您的 CLI 命令中使用以下内容:

gbc c# --using="DateTime=System.DateTime" date_time.bond

using 参数是您放置类型别名的位置,例如“char=System.Char;DateTime=System.DateTime”。

我不知道这是否对您有足够的帮助,如果您需要其他任何东西,请告诉我。

来源:

https://microsoft.github.io/bond/manual/compiler.html

https://microsoft.github.io/bond/manual/bond_cs.html

【讨论】:

我对生成DateTime、char等的部分很困惑。我不确定如何以我上面提到的格式将其写入架构文件中。如果您能提供我需要创建的表的示例,那就太好了。 存在一个关于how to represent TimeSpan 的问题,指向example about DateTime【参考方案2】:

我会将性别字段建模为枚举,因为这比字符更明确; DateTime 字段为uint64,但使用a type converter 将其转换为a DateTime struct in C#;和 List&lt;string&gt; 字段作为 vector&lt;string&gt;:

namespace MyProject;

using DateTime=uint64;

enum Gender

    Unspecified;
    ...


struct Favorite  ... 
struct FrequentPagesURL  ... 

struct SomeType

    ...
    7: DateTime DateJoined;
    8: Gender Gender = Unspecified;
    9: vector<Favorite> Favorites;
    ...
    17: vector<FrequentPagesURL> FrequentPagesURLs;
    ...

您可能需要考虑将 DateJoined 字段建模为 string/blob 并使用类型转换器将其转换为 C# 中的 DateTimeOffset struct depending on your needs。

【讨论】:

以上是关于ORACLE中都有哪些数据类型的主要内容,如果未能解决你的问题,请参考以下文章

C#bond 中都有哪些可用的数据类型?

python语言中都有哪些数据类型

c++中都有哪些类类型

C语言中的“货币类型”用啥表示?在程序中都有哪些书写形式?越全越好...

java中都有哪些数据结构

oracle 所有的数据类型都有哪些?