Oracle数据类型(转)

简介:

Character 数据类型

Character 数据类型用来存储字母数字型数据。当你在oracle 中定义一个character 数据时,通常需要制定字段的长度,它是该字段的最大长度。ORACLE提供以下几种character 数据类型:

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

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

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

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

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

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

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

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

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

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

Numberic 数据类型

Numberic 数据类型用来存储负的和正的整数、分数和浮点型数据,范围在-1*10-103 9.99999*10125之间,有38位的精确度。标识一个数据超出这个范围时就会出错。

Number(<p>,<s>) Number数据类型存储一个有p位精确度的s位等级的数据。

DATE 数据类型

DATE 数据类型用来存储日期和时间格式的数据。这种格式可以转换为其他格式的数据去浏览,而且它有专门的函数和属性用来控制和计算。以下的几种信息都包含在DATE数据类型中:

Ø         Century

Ø         Year

Ø         Month

Ø         Day

Ø         Hour

Ø         Minute

Ø         Second

LOB 数据类型

   LOB(Large Object) 数据类型存储非结构化数据,比如二进制文件,图形文件,或其他外部文件。LOB 可以存储到4G字节大小。数据可以存储到数据库中也可以存储到外部数据文件中。LOB数据的控制通过DBMS_LOB 包实现。BLOB, NCLOB, CLOB 数据可以存储到不同的表空间中,BFILE存储在服务器上的外部文件中。LOB数据类型有以下几种:

Ø         BLOB: 二进制数据

Ø         CLOB: 字符型数据

Ø         BFILE: 二进制文件

其他数据类型
ROWID ROWID 
数据类型是ORACLE数据表中的一个伪列,它是数据表中每行数据内在的唯一的标识。

oracle中的boolean数据类型仅限于PL/SQLoracle本身没有默认的提供布尔型的存储方式

在设计数据库表结构时,选择一种高效的策略来存储一个可以在很多编程环境中使用的逻辑布尔值是非常重要的。(虽然 Oracle 没有 Boolean 数据类型来表示数据库字段,但是在 PL/SQL 中却具有 Boolean 数据类型。)

任何布尔定义的字段还应该被正确进行约束检查,以确保在插入/更新时输入了有效的值。

create   table  tbool (bool  char   check  (bool  in  ( ' N ' , ' Y ' ));
insert   into  tbool  values  ( ' N ' );
insert   into  tbool  values  ( ' Y ' ); 

最常见的设计是模拟很多 Oracle 的数据字典视图中使用的类似布尔的标志,选择‘Y’表示真,‘N’表示假。然而,要正确地与宿主环境交互,比如与 JDBCOCCI 和其它编程环境交互,最好选择0表示假,选择1表示真,从而使getBoolean setBoolean 能够正确地处理它们。

我们可以将一个布乐类型定义为 NUMBER(1);然而,在 Oracle 的内部数字格式中,0在长度字节之后占用一个字节,而1在长度字节之后占用两个字节(所以更加高效地方式是将其存储为 CHAR)。即使字符被定义为 CHARSQL 也可以转换和验证实际的数字。

create   table  tbool (bool  char   check  (bool  in  ( 0 , 1 ));
insert   into  tbool  values ( 0 );
insert   into  tbool  values ( 1 );
目录
相关文章
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
《一文读懂AI大模型:开启智能新时代的密码》
AI大模型是人工智能领域的重大飞跃,凭借Transformer架构和预训练-微调机制等核心技术,已在智能客服、内容创作、医疗诊断等领域广泛应用。它能处理多模态数据,大幅提升生产效率和生活质量。然而,大模型也面临可解释性、数据隐私和算力瓶颈等挑战。未来,随着技术进步,AI大模型将更加通用化和智能化,推动社会变革,创造更多奇迹。
378 11
|
人工智能 算法 安全
打通智能体自我进化全流程!复旦推出通用智能体平台AgentGym
【6月更文挑战第21天】复旦大学推出AgentGym平台,聚焦通用智能体的自我进化。该平台提供多样环境及任务,使用AgentEvol算法让智能体在学习中进化,提升泛化能力。实验显示智能体性能媲美先进模型,但计算效率和模型扩展性仍是挑战。平台强调伦理安全,推动智能体发展同时确保与人类价值观一致。[论文链接](https://arxiv.org/abs/2406.04151)
338 5
|
11月前
|
存储 分布式计算 分布式数据库
云计算和虚拟化技术
云计算是指把计算资源、存储资源、网络资源、应用软件等集合起来,采用虚拟化技术,将这些资源池化,组成资源共享池,共享池即是“云”。
355 64
|
9月前
|
存储 缓存 Java
写代码原来如此简单:两种常用代码范式
一次项目包含非常多的流程,有需求拆解,业务建模,项目管理,风险识别,代码模块设计等等,如果我们在每次项目中,都将精力大量放在这些过程的思考上面,那我们剩余的,放在业务上思考的精力和时间就会大大减少;这也是为什么我们要 总结经验/方法论/范式 的原因;这篇文章旨在建立代码模块设计上的思路,给出了两种非常常用的设计范式,减少未来在这一块的精力开销。
173 11
|
11月前
|
JavaScript 前端开发
checkbox中checked属性总结
checkbox中checked属性总结
320 0
|
存储 Oracle 关系型数据库
分享几个Oracle数据库日常维护中常见的问题
分享几个Oracle数据库日常维护中常见的问题
287 1
|
消息中间件 NoSQL Redis
Redis Stream消息队列之基本语法与使用方式
这篇文章详细介绍了Redis Stream消息队列的基本语法和使用方式,包括消息的添加、读取、删除、修剪以及消费者组的使用和管理,强调了其在消息持久化和主备复制方面的优势。
352 0
|
前端开发 JavaScript IDE
WebStorm 打开多个项目的方法
【8月更文挑战第2天】
370 0
|
SQL 关系型数据库 Oracle
sql 截取字符串
原文:sql 截取字符串 MySQL:   1、LOCATE(substr , str ):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,则返回0;   2、POSITION(substr  IN str ):返回子串 substr 在...
4227 0
|
弹性计算 Cloud Native 关系型数据库
【官方首发】—阿里云云计算&数据库ACP认证的解析与实战系列电子书来啦!
重磅推出【云计算、数据仓库、关系型数据库】ACP认证的解析与实战电子书!认证备考必备学习资料,免费下载!
【官方首发】—阿里云云计算&数据库ACP认证的解析与实战系列电子书来啦!