当前位置: 首页 > news >正文

Oracle数据类型概述(一)

Oracle数据类型概述(一)

概述

表中的每个列都有一种数据类型,这与特定的存储格式、限制、和有效的值范围相关联。
在创建表时,必须为每个列指定数据类型,该列中插入的每个值都假定为该列的数据类型。

Oracle 数据库最常用的数据类型:
字符数据类型
数字数据类型
日期数据类型
ROWID 数据类型

备注:
还有其他几种重要的内建类型包括 RAW、大对象 (LOB)、 和集合。
PL/SQL 具有用于常量和变量的数据类型,包括布尔、引用类型、复合类型 (记录)、和用户定义类型。
后续文章中补充这些类型

字符数据类型

字符数据类型:存储在字符串中的字符 (字母或数字) 数据。
Oracle数据库中最常用的字符数据类型是 VARCHAR2,它是用于存储字符数据的最有效的选项。

与字符编码模式相对应的字节值,一般称为字符集。
数据库字符集是在数据库创建时建立的。字符集的例子有 7 位 ASCII 码、 EBCDIC码、和 Unicode utf-8、GBK等。

字符数据类型的长度语义可以以字节或字符为单位。
字节语义将字符串视为一个字节序列。 这是字符数据类型的默认值。
字符语义将字符串视为字符序列。 一个字符在技术上是数据库字符集的编码点。

VARCHAR2 和 CHAR 数据类型

VARCHAR2 数据类型存储变长字符文本。
字符文本包括在单引号中,以便数据库可以将它们与模式对象名称区分开来。
当创建一个有 VARCHAR2 列的表时,指定该列的最大字符串长度。

CHAR 存储固定长度的字符串。
创建一个有CHAR 列的表时,需要为该列指定一个长度。默认值是 1 个字节。数据库使用空格填充到指定的长度的值。

Oracle 数据库将使用非填充比较语义来比较 VARCHAR2 值,而使用空白填充比较语义来比较 CHAR 值。

NCHAR 和 NVARCHAR2 数据类型

NVARCHAR2 和 NCHAR 数据类型存储 Unicode 字符数据。
Unicode 是一种通用的编码字符集,可以将任何语言的信息存储在一种字符集中。
NCHAR 存储对应于国家字符集的固定长度字符串,而 NVARCHAR2 存储可变长度的字符串

创建数据库时,指定国家字符集。
NCHAR 和 NVARCHAR2 数据类型的字符集必须是 AL16UTF16 或 UTF8。这两种字符集都使用 Unicode 编码。

创建一个有 NCHAR 或 NVARCHAR2 列的表时,其最大大小始终是字符长度语义
对于 NCHAR 或 NVARCHAR2,字符长度语义是默认的,也是唯一的长度语义

数字数据类型

Oracle 数据库的数字数据类型存储固定和浮点数字、零、或无穷。

Oracle 数据库以变长格式存储数字数据。
用科学计数法存储值,其中一个字节用于存储指数
数据库使用最多 20 个字节存储尾数,即浮点数的有效位数部分。
Oracle 数据库不会存储前导零和结尾零。

NUMBER 数据类型

NUMBER 数据类型存储固定和浮点数字。
NUMBER 使用十进制精度。
数据库可以存储几乎任何规模的数字。此数据保证在运行 Oracle 数据库的不同操作系统之间可移植。
大多数情况下,存储数值数据时,推荐使用 NUMBER 数据类型。

按 NUMBER(p,s)的形式定义定点数,p 和 s 有以下特征:
精度:精度指定数字的总长度。如果不指定精度,则列按应用程序提供的数据存储值,不作任何舍入。
小数位数:小数位数指从十进制的小数点到最小有效数字的位数。正小数位数从小数点向右计数直至最小有效位。负小数位数从小数点向左计数直至(但不包括)最小有效数字。

如果指定了精度但没有指定小数位数,如 NUMBER(6),那么小数位数为 0。NUMBER(8,2)类型,精度为 8,而小数位数为2。

浮点数

Oracle 数据库为浮点数提供了两种互斥的数值数据类型: BINARY_FLOAT 和 BINARY_DOUBLE。这两种类型支持所有 NUMBER 数据类型提供的基本功能。
BINARY_FLOAT 和BINARY_DOUBLE 使用二进制精度,可以使算术计算更快并且通常可以降低存储需求。
BINARY_FLOAT 和 BINARY_DOUBLE 是近似数字数据类型。它们存储十进制的值的近似表示,而不是精确的表示形式。例如值 0.1 不能用BINARY_DOUBLE 或 BINARY_FLOAT 完全精确地表示。他们经常用于科学计算。其行为类似于 Java 或 XMLSchema 中的 FLOAT 和 DOUBLE 数据类型。

日期数据类型

日期数据类型包括 DATE 和 TIMESTAMP。Oracle 数据库为时间戳提供全面的时区支持。

DATE 数据类型

DATE 数据类型存储日期和时间。尽管日期时间可以用字符或数字数据类型表示,DATE 具有特殊的相关属性。
数据库在内部将日期存储为数字。
日期被存储为固定长度的域,共 7 个字节,分别对应世纪、 年、 月、 日、 小时、分、和秒。
Oracle 数据库以 24 小时制格式存储时间 — — HH:MI:SS。如果不输入的任何时间部分,那么默认情况下,日期字段中的时间是凌晨 00: 00: 00,如果只输入了时间,则日期部分默认为当月的第一天。

TIMESTAMP 数据类型

TIMESTAMP 数据类型是日期数据类型的扩展。
除了存储在 DATE 数据类型的信息,它同时还存储秒的小数部分
TIMESTAMP 数据类型对于存储精确时间的值很有用,比如那些必须跟踪事件顺序的应用程序。
DATETIME 数据类型 TIMESTAMP WITH TIME ZONE 和TIMESTAMP WITH LOCAL TIME ZONE 能感知时区。当用户中选择数据时,其值会被调整以适配用户会话的时区。此数据类型可用于收集和评估各地理区域的日期信息。

Rowid数据类型

存储在数据库中的每一行都有一个地址。
Oracle 数据库使用 ROWID 数据类型存储在数据库中的每一行的地址 (rowid)。
Rowids 分为以下几类:
物理 rowids 存储堆组织表、 表簇、表分区、和索引分区中的行地址。
逻辑 rowids 存储索引组织表中的行地址(指向主键行位置)。
外部 rowids 是外来表(如通过网关访问的 DB2 表)中的标识符。他们不是标准的 Oralce 数据库 rowids。

有一种数据类型称为通用 rowid 或 UROWID,支持各种 rowids。

使用Rowid

Oracle 数据库在内部使用 rowids 用于构造索引,最常见的 B 树索引,包含一个被划分成多个键范围的排序列表。每个键都与一个指向关联的行地址的rowid 相关联,用于快速访问。
使用rowids 的几个重要功能:
Rowids 是访问特定行的最快方式。
Rowids 提供了查看表的组织方式的能力。
Rowids 是给定表中的行的唯一标识符。

可以创建带 ROWID 数据类型列的表。例如,您可以定义一个异常表,其中一列为 ROWID 数据类型,以存储违反了完整性约束的行 rowids。使用ROWID 数据类型定义的列像其他表中的列一样, 其值可以更新,等等。

Rowid伪列

Oracle 数据库中的每个表都有一个名为 ROWID 的 伪列。
伪列类似于表列,但实际上并不存储在表中。
可以从伪列中选择数据,但不能插入、更新、或删除它们的值。
伪列也类似于不带参数的 SQL 函数。不带参数的函数对于结果集中的每一行通常返回相同的值,而伪列通常为每个行返回不同的值。
ROWID 伪列的值是表示的每个行的地址的字符串。这些字符串具有的数据类型 ROWID。在执行 SELECT 或 DESCRIBE 列出表的结构时,此伪列并不显示,它也不占用空间。但是,每个行的 rowid 可以通过使用保留字ROWID 作为列名的 SQL 查询来检索。

格式模型与数据类型

格式模型是一个字符文本,用来描述存储在一个字符串中的日期时间或数值数据的格式。
格式模式不会更改数据库中的值的内部表示形式。

当将一个字符串转换成日期或数字时,格式模型决定了数据库如何解释字符串。在 SQL 中,你可以使用格式模型作为 TO_CHAR 和 TO_DATE 函数的参数,来格式化将从数据库中返回的一个值,或将存储到数据库中的一个值。
例如:
to_char(salary, '$99,990.99')
to_char(sysdate,'yyyymmdd hh24:mi:ss')
to_date('2026-04-07 21:22:20','yyyymmdd hh24:mi:ss')

http://www.jsqmd.com/news/618921/

相关文章:

  • 分析家庭影院电视搭建,漳州、厦门等地有哪些靠谱品牌推荐 - mypinpai
  • Qwen2.5多轮对话断裂?长上下文管理优化部署教程
  • OpenClaw技能市场巡礼:百川2-13B-4bits量化模型十佳实用技能
  • 2026靠谱气凝胶涂料企业:朗缪环保科技(天津)有限公司 - 资讯焦点
  • Rebus测试策略完全指南:单元测试、集成测试和端到端测试
  • 字体渲染脚本三步优化指南:告别Windows浏览器字体模糊困扰
  • 通达信【四季发财中线】指标实战指南:如何用紫色柱线精准捕捉短线买卖点
  • SDD基于规范编程-OpenSpec及SuperPowers档
  • 2026年海口龙华区劳务资质办理服务机构TOP8综合评测与权威推荐 - 速递信息
  • CosyVoice语音生成大模型-300M-25Hz学术应用:配合MathType公式的理工科教学音频生成
  • BetterGI原神AI助手:300%效率提升的终极自动化游戏指南
  • OpenClaw从入门到应用——频道:Nostr
  • 2026年北京美国留学中介推荐哪家?零差评中介全面测评! - 资讯焦点
  • 别再为整层铜箔烦恼了!嘉立创EDA内电层局部优化技巧:电源分割与信号屏蔽实战
  • 从付费软件到自主开发:我用AI和FFmpeg实现了一个录屏工具亮
  • 2026年出海泰国选哪家服务商?泰国名义雇主EOR公司推荐Safeguard Global - 品牌2026
  • 3分钟解放双手:Midscene让AI帮你完成所有浏览器重复操作
  • 北京家长亲测5家零差评美国留学中介,附详细对比测评! - 资讯焦点
  • 3步解锁Axure RP中文界面:告别英文菜单,提升原型设计效率75%
  • GKD订阅管理革命:一站式订阅库如何简化你的自动化体验
  • sysinfo 安全部署指南:在 macOS/iOS 沙盒环境中的正确使用方法
  • 避坑指南:OpenSIPS 3.1在Docker下的5个常见配置错误(附NAT解决方案)
  • 深度揭秘:如何用CDecrypt工具轻松解密Wii U游戏文件
  • 2026哪种净水器适合家用?不同家庭的适配方案,小白也能直接抄作业 - 资讯焦点
  • 盘点2026年莆田实力强的灯光设计品牌企业,费用多少 - mypinpai
  • RePKG:深度解析Wallpaper Engine资源提取与纹理转换的终极方案
  • 如何快速部署QQ截图独立版:完整配置与OCR优化指南
  • LVGL v8.3在GD32F450上跑飞?手把手教你用Keil调试HardFault_Handler定位真凶
  • 2026年4月一体化污水泵站厂家TOP3相关解析 - 资讯焦点
  • 2026年口碑好的CRM系统盘点:企业选型必看清单 - 纷享销客智能型CRM