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

Oracle 数据库常见字段类型大全及详细解析

在工作期间会遇到数据库建表的业务,经常会使用复制粘帖等操作,而不清楚数据库的字段类型。本文记录了 Oracle 数据库常见字段类型,根据不同的数据需求,可以选择不同的字段类型来存储数据。

文章目录

    • 一、字符类型(Character)
      • 1、CHAR:定长字符数据类型
      • 2、VARCHAR2:变长字符数据类型
      • 3、NCHAR:存储Unicode字符集的固定长度字符串
      • 4、NVARCHAR2:存储Unicode字符集的可变长度字符串
    • 二、数值类型(Numeric)
      • 1、NUMBER:用于存储整型或浮点型数值。
      • 2、INTEGER 或 INT :整数类型
      • 3、FLOAT:浮点数类型
      • 4、REAL:实数类型
    • 三、日期和时间类型(Date and Time)
      • 1、DATE:存储日期和时间,精确到秒
      • 2、TIMESTAMP:时间戳数据类型
      • 3、INTERVAL:用于表示两个时间点之间的时间间隔
    • 四、二进制大对象类型(Binary Large Object)
      • 1、BLOB:存储二进制对象
      • 2、CLOB:存储大文本数据
      • 3、NCLOB:存储Unicode字符集的字符大对象
    • 五、其他类型
      • 1、RAW:存储原始二进制数据
      • 2、LONG:存储超长字符串数据
      • 3、LONG RAW:存储可变长度的二进制数据
      • 4、ROWID:用于唯一标识数据库中的行
      • 5、BFILE:在数据库外部存储大型二进制对象文件
      • 6、BOOLEAN:布尔类型
      • 7、XML:用于存储XML文档数据。
      • 8、用户自定义类型(User Defined Type)
    • 六、数据类型选择的注意事项
      • 1、字符类型
      • 2、数值类型
      • 3、日期和时间类型

一、字符类型(Character)

1、CHAR:定长字符数据类型

存储固定长度的字符串,最大长度为2000字节,如果存储的字符串长度小于定义的长度,Oracle会自动用空格填充至指定长度。

CREATE TABLE example_table (example_column CHAR(10)
);

使用 CHAR(n) 是存储长度固定为 n 个字节,如果存储的数据长度小于 n,则使用空格填充,n 的取值范围是 1 到 2000。当插入数据时,example_column 列将始终占用 10 个字节的存储空间,无论实际存储的字符长度是多少。

2、VARCHAR2:变长字符数据类型

存储可变长度的字符串,最大长度为4000字节,该类型在实际使用中非常灵活,因为它只占用实际字符串所需的存储空间,而不需要额外的空格填充。

CREATE TABLE example_table (example_column VARCHAR2(20)
);

此列仅存储实际输入字符所需的字节数,最大不超过 20 个字节,最大长度为 n 个字节。n 的取值范围是 1 到 4000。

3、NCHAR:存储Unicode字符集的固定长度字符串

存储 Unicode 字符集的固定长度字符串,最大长度为2000字节(在某些版本中可能为1000字节),适用于需要存储国际化字符集的数据。

CREATE TABLE example_table (nchar_column NCHAR(10)
);

定义一个长度为 10 的 NCHAR 类型的列,用于存储定长的 Unicode 字符数据。存储的字符将根据数据库的国家字符集进行编码,通常用于存储多语言数据。

4、NVARCHAR2:存储Unicode字符集的可变长度字符串

存储 Unicode 字符集的可变长度字符串,最大长度为4000字节(在某些版本中可能为1000字节),同样适用于国际化字符集的数据存储。

CREATE TABLE example_table (nvarchar2_column NVARCHAR2(20)
);

定义一个长度为 20 的 NVARCHAR2 类型的列,用于存储变长的 Unicode 字符数据。

二、数值类型(Numeric)

1、NUMBER:用于存储整型或浮点型数值。

用于存储整型或浮点型数值,可以指定精度(有效数字的位数)和小数位数。如果没有指定精度,Oracle将使用 38 作为默认精度。

创建时常用 NUMBER(p, s) ,存储精度为 p 、小数位数为 s 的数值,即 p 表示数字的总长度,s 表示小数位数。

CREATE TABLE example_table (numeric_column NUMBER(10, 2)
);

可以存储最大长度为 10 位的数字,其中包含 2 位小数,如 1234567.89。

2、INTEGER 或 INT :整数类型

是NUMBER的一个子集,用于存储小的整数,等同于 NUMBER(38)

CREATE TABLE example_table (integer_column INTEGER
);
CREATE TABLE example_table (integer_column INT
);

3、FLOAT:浮点数类型

是NUMBER的一个特殊表示,用于存储双精度浮点数。

CREATE TABLE example_table (float_column FLOAT
);

float_column FLOAT:存储单精度浮点数。

4、REAL:实数类型

同样是NUMBER的一个特殊表示,但精度更高,可达63位。

CREATE TABLE example_table (real_column REAL
);

存储单精度浮点数,比 FLOAT 精度稍低,是 ANSI SQL 兼容的数据类型。

三、日期和时间类型(Date and Time)

1、DATE:存储日期和时间,精确到秒

储日期和时间,包括年、月、日、时、分、秒,精确到秒,范围从公元前 4712 年 1 月 1 日到公元 9999 年 12 月 31 日。Oracle在内部使用7个字节来保存日期数据。

CREATE TABLE example_table (date_column DATE
);

2、TIMESTAMP:时间戳数据类型

存储日期和时间,精确到秒的小数部分,可精确到纳秒,提供了比 DATE 更高的精度。

CREATE TABLE example_table (timestamp_column TIMESTAMP
);

3、INTERVAL:用于表示两个时间点之间的时间间隔

用于表示两个时间点之间的时间间隔

CREATE TABLE example_table (interval_column INTERVAL DAY TO SECOND
);

存储时间间隔,精确到秒,范围从天到秒。

四、二进制大对象类型(Binary Large Object)

1、BLOB:存储二进制对象

存储二进制大对象,可存储多达 4GB 的二进制数据,适用于存储图片、音频、视频等二进制文件。

CREATE TABLE example_table (binary_data_column BLOB
);

2、CLOB:存储大文本数据

用于存储大量字符数据,可存储多达 4GB 的字符数据,适用于存储较长的文本,如文章、文档等。

CREATE TABLE example_table (large_text_column CLOB
);

3、NCLOB:存储Unicode字符集的字符大对象

用于存储Unicode字符集的字符大对象数据,最大长度同样为4GB。

CREATE TABLE example_table (nclob_column NCLOB
);

存储大量的 Unicode 字符数据,类似于 CLOB,但使用国家字符集。

五、其他类型

1、RAW:存储原始二进制数据

用于存储原始二进制数据,如多媒体图像、声音等。最大长度为2000字节。

CREATE TABLE example_table (raw_data_column RAW(10)
);

存储二进制数据,最大长度为 n 字节,n 的取值范围是 1 到 2000。常用于存储加密数据或 Oracle 内部使用的数据。

2、LONG:存储超长字符串数据

用于存储超长字符串数据,最大长度为2GB。但在现代Oracle版本中,建议使用 CLOB 或 NCLOB 替代 LONG 类型。

CREATE TABLE example_table (long_column LONG
);

定义一个 LONG 类型的列,用于存储较长的字符数据,最大长度为 2GB,但使用时需要注意其性能和功能限制,因为它不支持很多字符操作函数。

3、LONG RAW:存储可变长度的二进制数据

用于存储可变长度的二进制数据,最大长度为2GB。同样在现代Oracle版本中,建议使用 BLOB 替代 LONG RAW 类型。

CREATE TABLE example_table (long_raw_column LONG RAW
);

存储二进制数据,最大长度也是 2GB,适合存储一些大型的二进制数据,但功能也比较受限,例如不支持很多二进制操作函数。

4、ROWID:用于唯一标识数据库中的行

用于唯一标识数据库中的行,是一个二进制数据类型,占用固定的10个字节。

CREATE TABLE example_table (row_id_column ROWID
);

存储数据库中行的物理地址,用于唯一标识行,长度为 18 个字节。

5、BFILE:在数据库外部存储大型二进制对象文件

用于在数据库外部存储大型二进制对象文件,最大长度为4GB。Oracle可以读取和查询BFILE,但不能直接写入。

CREATE TABLE example_table (external_file_column BFILE
);

存储指向外部文件的指针,文件存储在数据库服务器的文件系统中,而不是数据库内部。

6、BOOLEAN:布尔类型

布尔类型,用于存储真或假两种状态。

CREATE TABLE example_table (boolean_column NUMBER(1) CHECK (boolean_column IN (0, 1))
);

由于 Oracle 没有内置的 BOOLEAN 类型,使用 NUMBER(1) 并通过 CHECK 约束来模拟布尔值,其中 1 表示 TRUE,0 表示 FALSE。

7、XML:用于存储XML文档数据。

CREATE TABLE example_table (xml_column XMLTYPE
);

存储 XML 数据,使用 XMLTYPE 数据类型。

8、用户自定义类型(User Defined Type)

允许用户根据自己的需求定义新的数据类型。

六、数据类型选择的注意事项

1、字符类型

  • 当数据长度固定时,使用 CHAR
  • 当数据长度不固定时,使用 VARCHAR2 以节省空间。
  • 对于大量文本数据,使用 CLOB

2、数值类型

  • 对于整数,可使用 INTEGERNUMBER
  • 对于小数,使用 NUMBER(p, s),根据精度需求确定 ps 的值。

3、日期和时间类型

  • 对于一般的日期和时间存储,使用 DATE
  • 对于需要更高精度的日期和时间,使用 TIMESTAMP

相关文章:

Oracle 数据库常见字段类型大全及详细解析

在工作期间会遇到数据库建表的业务,经常会使用复制粘帖等操作,而不清楚数据库的字段类型。本文记录了 Oracle 数据库常见字段类型,根据不同的数据需求,可以选择不同的字段类型来存储数据。 文章目录 一、字符类型(Char…...

U3D的.Net学习

Mono:这是 Unity 最初采用的方式,它将 C# 代码编译为中间语言 (IL),然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP:这是一种较新的方法,它会将 C# 代码先编译为 C 代码,再由 C 编译器…...

Tomcat下载配置

目录 Win下载安装 Mac下载安装配置 Win 下载 直接从官网下载https://tomcat.apache.org/download-10.cgi 在圈住的位置点击下载自己想要的版本 根据自己电脑下载64位或32位zip版本 安装 Tomcat是绿色版,直接解压到自己想放的位置即可 Mac 下载 官网 https://tomcat.ap…...

adb常用指令(完整版)

1、adb devices 查看是否连接到设备 2、adb install [-r] [-s] 安装app,-r强制,-s安装sd卡上 3、adb uninstall [-k] 卸载app,-k保留配置和参数 4、adb push 把本地文件上传设备 5、adb pull 下载文件到本地 6、cd D:\sdk\platform-tool…...

大数据学习(36)- Hive和YARN

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…...

C# ASP.NET MVC项目内使用ApiController

1.在App_Start文件夹新建WebApiConfig.cs文件,建立webApi路由的注册方法。 using System.Web.Http;namespace PrivilegeManager {public class WebApiConfig{public static void Register(HttpConfiguration config){config.MapHttpAttributeRoutes();config.Route…...

Kafka 入门与应用实战:吞吐量优化与与 RabbitMQ、RocketMQ 的对比

前言 在现代微服务架构和分布式系统中,消息队列作为解耦组件,承担着重要的职责。它不仅提供了异步处理的能力,还能确保系统的高可用性、容错性和扩展性。常见的消息队列包括 Kafka、RabbitMQ 和 RocketMQ,其中 Kafka 因其高吞吐量…...

“推理”(Inference)在深度学习和机器学习的语境

“推理”(Inference)在深度学习和机器学习的语境中,是指使用经过训练的模型对新数据进行预测的过程。将其简单地理解为“模型的应用阶段”。在这一阶段,我们不再进行模型训练,而是利用已训练好且保存下来的模型来获取对…...

字节腾讯阿里大厂面经汇总:Java集合(容器)大厂面试题及参考答案

ArrayList 的扩容机制以及删除操作的时间复杂度 ArrayList 是 Java 中非常常用的一个集合类,它是基于数组实现的动态数组。当我们创建一个 ArrayList 时,如果不指定初始容量,它会有一个默认的初始容量(通常是 10)。当我们向 ArrayList 中添加元素时,如果元素的数量达到了…...

数据结构(初阶)(一)----算法复杂度

算法复杂度 算法复杂度数据结构算法算法效率复杂度的概念 数据结构 数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤,所以我们要学各式各样的数据结…...

构建高效稳定的网络环境

概述 网络技术是当今IT行业的重要组成部分,构建高效稳定的网络环境对于企业、个人和互联网发展至关重要。本文将探讨网络技术中的关键要素,包括网络协议、网络架构、网络安全和网络优化,并提供实用的技巧和最佳实践,以帮助您构建…...

使用Edge打开visio文件

使用Edge打开visio文件 打开Edge浏览器搜索‘vsdx edge’ 打开第一个搜索结果 Microsoft Support 根据上述打开的页面进行操作 第一步:安装Visio Viewer 第二步:添加注册表 桌面新增文本文件,将下面的内容放入新建文本中,修…...

ChatGPT Prompt 编写指南

一、第一原则:明确的意图​ 你需要明确地表达你的意图和要求,尽可能具体、描述性、详细地描述所需的上下文、你期望的结果等。你的要求越明确,越有希望获得你想要的答案。​ 糟糕的案例 ❌​ ​ 写一首关于 OpenAI 的诗。​ ​ 更好的案…...

蚁群算法 (Ant Colony Optimization) 算法详解及案例分析

蚁群算法 (Ant Colony Optimization) 算法详解及案例分析 目录 蚁群算法 (Ant Colony Optimization) 算法详解及案例分析1. 引言2. 蚁群算法 (ACO) 算法原理2.1 蚂蚁觅食行为2.2 算法步骤2.3 数学公式3. 蚁群算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 旅行商…...

安卓动态设置Unity图形API

命令行方式 Unity图像api设置为自动,安卓动态设置Vulkan、OpenGLES Unity设置 安卓设置 创建自定义活动并将其设置为应用程序入口点。 在自定义活动中,覆盖字符串UnityPlayerActivity。updateunitycommandlineararguments (String cmdLine)方法。 在该方法中,将cmdLine…...

通信协议—WebSocket

一、WebSocket编程概念 1.1 什么是WebSocket WebSocket 是一种全双工通信协议,允许在客户端(通常是浏览器)和服务器之间建立持久连接,以实现实时的双向通信。它是 HTML5 标准的一部分,相比传统的 HTTP 请求&#xff…...

helm推送到harbor私有库--http: server gave HTTP response to HTTPS client

harbor私有库访问的是http模式 harbor 2.8版本以上可以存储helm镜像 docker镜像推送的时候需要docker端配置insecure-registries 发现helm推送只能在harbor部署的本机使用localhost才能推送成功,即 helm push xxx.tgz oci://localhost:80/library 使用helm pus…...

数据结构——实验一·线性表

海~~欢迎来到Tubishu的博客🌸如果你也是一名在校大学生,正在寻找各种变成资源,那么你就来对地方啦🌟 Tubishu是一名计算机本科生,会不定期整理和分享学习中的优质资源,希望能为你的编程之路添砖加瓦⭐&…...

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开,使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版,仅包含Conda和Python,如果只做深度学习,可使用miniconda。 [注]:Anaconda、Conda与Miniconda Conda:创建和管…...

OpenCV相机标定与3D重建(66)对立体匹配生成的视差图(disparity map)进行验证的函数validateDisparity()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用左右检查来验证视差。矩阵 “cost” 应该由立体对应算法计算。 cv::validateDisparity 函数是 OpenCV 库中用于对立体匹配生成的视差图&…...

2025年新开局!谁在引领汽车AI风潮?

汽车AI革命已来。 在2025年伊始开幕的CES展上,AI汽车、AI座舱无疑成为了今年汽车行业的最大热点。其中不少车企在2025年CES上展示了其新一代AI座舱,为下一代智能汽车的人机交互、场景创新率先打样。 其中,东软集团也携带AI驱动、大数据支撑…...

Spring自定义BeanPostProcessor实现bean的代理Java动态代理知识

上文:https://blog.csdn.net/qq_26437925/article/details/145241149 中大致了解了spring aop的代理的实现,其实就是有个BeanPostProcessor代理了bean对象。顺便复习下java代理相关知识 目录 自定义BeanPostProcessor实现aopJava动态代理知识动态代理的几…...

三篇物联网漏洞挖掘综述

由于物联网设备存在硬件资源受限、硬件复杂异构, 代码、文档未公开的问题, 物联网设备的漏洞挖掘存在较大的挑战: 硬件资源受限性: 通用动态二进分析技术需要在运行程序外围实施监控分析。由于物联网设备存储资源(存储)的受限性,…...

Pytorch深度学习指南 卷I --编程基础(A Beginner‘s Guide) 第1章 一个简单的回归

本章正式开始使用pytorch的接口来实现对应的numpy的学习的过程,来学习模型的实现,我们会介绍numpy是如何学习的,以及我们如何一步步的通过torch的接口来实现简单化的过程,优雅的展示我们的代码,已经我们的代码完成的事…...

【EXCEL_VBA_实战】多工作薄合并深入理解

工作背景:多个工作薄存在冲突的名称,需快速合并 困难点:工作表移动复制时,若有冲突的名称,会不断弹出对话框待人工确认 思路:利用代码确认弹出的对话框 关键代码:Application.DisplayAlerts …...

mysql之表的外键约束

MySQL表的外键约束详细介绍及代码示例 外键约束是数据库中用于维护数据完整性和一致性的重要机制。它确保一个表中的数据与另一个表中的数据相关联,防止无效的数据引用。本文将详细介绍了外键约束的各个方面,并通过具体的代码示例进行演示。 1. 外键约束…...

Tuning the Go HTTP Client Settings

记录一次Go HTTP Client TIME_WAIT的优化 业务流程 分析 通过容器监控发现服务到事件总线的负载均衡之间有大量的短链接,回看一下代码 发送请求的代码 func SendToKEvent(ev *KEvent) error {data, err : json.Marshal(ev.Data)if err ! nil {return err}log.Pri…...

第二十四课 Vue中子组件调用父组件数据

Vue中子组件调用父组件数据 Vue是不建议在不同的组件直接传递值的&#xff0c;我们需要使用props方法来进行组件间的值传递 子组件调用父组件数据 父模板的数据&#xff0c;子组件是无法直接调用的 无法直接调用 1&#xff09;组件调用顶级对象中的data <div class&quo…...

Jenkins-pipeline语法说明

一. 简述&#xff1a; Jenkins Pipeline 是一种持续集成和持续交付&#xff08;CI/CD&#xff09;工具&#xff0c;它允许用户通过代码定义构建、测试和部署流程。 二. 关于jenkinsfile&#xff1a; 1. Sections部分&#xff1a; Pipeline里的Sections通常包含一个或多个Direc…...

小米Vela操作系统开源:AIoT时代的全新引擎

小米近日正式开源了其物联网嵌入式软件平台——Vela操作系统&#xff0c;并将其命名为OpenVela。这一举动在AIoT&#xff08;人工智能物联网&#xff09;领域掀起了不小的波澜&#xff0c;也为开发者们提供了一个强大的AI代码生成器和开发平台。OpenVela项目源代码已托管至GitH…...