Oracle数据类型的简单学习之一


背景

  1. 因为信创安可替代的发展
  2. 有很多项目提到了数据库切换到国产数据库的要求.
  3. 一般情况是要求从Oracle/SQLServer 迁移到国产的:
  4. 达梦/瀚高/人大金仓/南大通用 等数据库.
  5. 但是因为Oracle作为数据库领域 No.1的存在
  6. 他对SQL的规范标准支持的并不是很好.
  7. 所以里面会有很多数据库数据类型映射的问题.
  8. 自己对数据库学习很浅. 希望能够慢慢学习逐渐提高.

Oracle的自建数据类型


字符类型

  1. 前期总结过很多 字符数据类型
  2. 主要是 varchar nvarchar 相关的内容.
  3. 区别是:
  4. varchar 存储的是 安装时指定的数据库字符集.
  5. nvarchar 存储的是 安装时指定的国家字符集.
  6. 需要说明的是 国家字符集一般是AL16UTF16
  7. 这个字符集只能用于 国家字符集, 不能用于数据库字符集
  8. 这里需要补充的是, 虽然 varchar 一般说法是按照 字节来存储. nvarchar 安装字符来存储
  9. 但是实际上也是不对的.
  10. 他主要是受到: NLS_LENGTH_SEMANTICS 参数的默认限制
  11. 也可以创建表时, 通过 varchar(lenth char/byte)的方式显示来指定.
  12. 需要注意, 这个参数默认是 byte. 建库语句默认也是byte.
  13. 修改参数后建议重启数据库, 并且这个参数是PDB可以隔离的.
  14. 参数是 session/system 级别都可以进行设置的.

字符类型


数值类型

  1. 需要说明 Oracle其实底层存储只有 number float BINARY_FLOAT BINARY_DOUBLE 四种数据类型
  2. 但是ISOSQL规范里面 int double float 等等多种数据类型, 其实Oracle里面一概没有实现.
  3. 并且decimal 其实也仅是 number 的一个别名, 据说只是为了从DB2里面进行转换才用的.
  4. 这里面有一个非常大的误区. Oraclenumber 虽然是 38 的最大precision
  5. 但是实际上他可以最多存储126位的数字, 当然 此时的精度无法保证.
  6. 最大可以存储 e+125 的数值.
  7. 里面的换算关系很复杂, 可以通过测试来进行验证.
  8. 但是定义了精度和scale的话, 就跟decimal 一样可以保证精度.

测试1

  1. drop table zhaobsh ;
  2. create table zhaobsh (a decimal ,b number , c decimal(5) , d decimal(19,2) ,
  3. e float ,F decimal(38,2),g number(38,-84) ,h BINARY_FLOAT , i binary_double ) ;
  4. SQL> desc zhaobsh
  5. ----------------------------------------- -------- ----------------------------
  6. A NUMBER(38)
  7. B NUMBER
  8. C NUMBER(5)
  9. D NUMBER(19,2)
  10. E FLOAT(126)
  11. F NUMBER(38,2)
  12. G NUMBER(38,-84)
  13. H BINARY_FLOAT
  14. I BINARY_DOUBLE

测试2

  1. insert into zhaobsh(b) values (999999999999999999999999999999999999999949999999999999999999999999999999999999999999999999999999999999999999999999999999999999)
  2. 126长度, 这个可以正常保存。
  3. insert into zhaobsh(b) values (999999999999999999999999999999999999999950000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
  4. 126长度, 这个保存会报错。

数值类型


布尔类型

  1. 需要说明 Oracle没有布尔类型.
  2. 布尔类型其实是一个深坑. 他是 SQL2003的标准才添加的.
  3. SQL92标准里面其实是没有 boolean 类型的.
  4. Oracle作为数据库的扛把子, 自己玩的比标准还要深入.
  5. 所以他并没有非常良好的按照SQL标准进行开发.
  6. 产品一般可以使用 char(1) 后者是 number(1) 进行描述.
  7. 但是迁移后的数据, 是需要对照一下的.
  8. 这里其实还有业务逻辑, 需要进行处理.

SQL规范的进展-来源参见水印 CSDN

  • 需要注意 2023.6.1 SQL2023规范已经发布.
  • 这个规范是需要付费的. 没钱的不建议下载.


SQL2003规范

  1. SQL:2003SQL标准的一个重要版本,于2003年发布。它在SQL:1999的基础上做了一些修订和扩展,引入了一些新的功能和改进,进一步完善了SQL语言的功能和能力。
  2. 以下是SQL:2003标准的一些主要特征和改进:
  3. 更多的窗口函数:SQL:2003扩展了对窗口函数的支持,使得窗口函数的功能更加强大和灵活。
  4. 序列和自增字段:引入了序列(Sequence)和自增字段(Identity Columns)的概念,为数据库中生成唯一标识符提供了更方便和标准的方式。
  5. 更强大的数据类型支持:SQL:2003引入了更多种类的数据类型,包括布尔类型(BOOLEAN)、日期和时间处理的增强类型等,增强了数据建模的灵活性。
  6. 更多的XML支持:SQL:2003进一步加强了对XML数据类型和XML查询语言的支持,允许更方便地操作和处理XML数据。
  7. 对标量子查询的扩展:引入了对标量子查询(Scalar Subqueries)的支持,允许在SELECT列表中使用子查询。
  8. 更多的标准化函数和操作符:SQL:2003引入了更多的标准函数和操作符,增强了SQL语言的表达能力。
  9. 更多的数据完整性约束和管理:加强了对数据完整性约束的支持和管理,使得数据库更容易受到保护和控制。
  10. 对外部数据集成的改进:SQL:2003增强了对外部数据集成的能力,使得数据库系统更容易与外部数据进行集成和交互。

Oracle数据类型的简单学习之一的更多相关文章

  1. oracle表空间简单学习

    1.重命名表空间:alter tablespace 原表空间名 rename to 新表空间名ps:(1)system 和sysaux表空间不能重名(2)如果该表空间中任何一个数据出于脱机状态或者表空 ...

  2. 【2016-11-3】【坚持学习】【Day18】【Oracle 数据类型 与C#映射关系】

    大部分类型的对应关系:原文:http://2143892.blog.51cto.com/2133892/499353 序号 Oracle数据类型 .NET类型 GetOracleValue类型 DbT ...

  3. 简单学习一下ibd数据文件解析

    来源:原创投稿 作者:花家舍 简介:数据库技术爱好者. GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简单学习一下数据文件解析 这是尝试使用Golang语言简单解析My ...

  4. oracle 数据类型详解---日期型(转载)

    oracle 数据类型详解---日期型 oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTER ...

  5. mysql 和 Oracle 数据类型对照

    MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle在数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据 ...

  6. Vagrant 安装Oracle19c RAC测试环境的简单学习

    1. 学习自网站: https://xiaoyu.blog.csdn.net/article/details/103135158 简单学习了下 能够将oracle RAC开起来了 但是 对后期的维护和 ...

  7. js数据类型很简单,却也不简单

    最近脑子里有冒出"多看点书"的想法,但我个人不是很喜欢翻阅纸质书籍,另一方面也是因为我能抽出来看书的时间比较琐碎,所以就干脆用app看电子书了(如果有比较完整的阅读时间,还是建议看 ...

  8. SQL Server和Oracle数据类型对应关系

    在工作中,有时会遇到跨库传输数据的情况,其中 SQL Server 和 Oracle 之间的数据传输是比较常见的情况. 因为 SQL Server 和 Oracle 的数据类型有些差异,这就要求我们在 ...

  9. Log4j简单学习笔记

    log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...

  10. oracle数据类型

    本文转自:http://blog.csdn.net/defonds/article/details/4302695 谢谢原文作者 有道是,磨刀不误砍柴工.多了解一些底层的东西,对于Oracle开发.维 ...

随机推荐

  1. Python——第四章:函数的递归调用

    递归:  函数自己调用自己 递归如果没有任何东西拦截的话. 它默认就是一个死循环 def func() func() func() 因此递归调用的时候需要有判断,来退出循环 def func() if ...

  2. gentoo安装gcc出现error: C compiler cannot create executables

    安装程序  systemd 过程中,出现了error: C compiler cannot create executables 这类错误,经过检查,由于没有配置本地编译器的结果. 输入命令如下: g ...

  3. Llama2-Chinese项目:6-模型评测

      测试问题筛选自AtomBulb[1],共95个测试问题,包含:通用知识.语言理解.创作能力.逻辑推理.代码编程.工作技能.使用工具.人格特征八个大的类别. 1.测试中的Prompt   例如对于问 ...

  4. C# 创建Excel气泡图

    气泡图(Bubble Chart)是可用于展示三个变量之间的关系.通过绘制x 值, y 值和大小值即可确定图表中气泡的坐标及大小.下面通过后端C#代码及VB.NET代码展示如何来实现在Excel中创建 ...

  5. 一通百通,带你一次性全理解Spring 中的Template

    摘要:Template定义了问题的边界,子类定义了具体的实现,只要在模板的范围内玩耍就可以了. 本文分享自华为云社区<Spring 中的Template一次全理解,解析问题的本质>,作者: ...

  6. vue2升级vue3:class component的遗憾

    在vue2,class 写法真的非常爽 import { Component as tsc } from 'vue-tsx-support'; import { Component, Watch }  ...

  7. CentOS7安装maven,mvn clean -DskipTests package

    1.JAVA_HOME 首先确保正确安装并配置了JAVA_HOME 我这里安装了jdk1.8 2.下载maven 3.6.3 wget https://mirrors.tuna.tsinghua.ed ...

  8. 人人都会Kubernetes(一):告别手写K8s yaml,运维效率提升500%

    1. Kubernetes的普及和重要性 随着云计算的迅速发展,容器化技术已成为构建和运行分布式应用程序的关键.而Kubernetes作为容器编排领域的佼佼者,已经成为了云原生应用的标准.它不仅简化了 ...

  9. PPT 图片框架排版万能能公式

    图片作用 提升设计感 辅助表达 传递情感 如何选择一张高大上的图片? 星空.地球.城市.海洋.线条.粒子.山脉.壁纸(系统.手机厂商千挑万选的) https://cn.bing.com/images ...

  10. Sublime Json 格式化

    Ctrl+Shift+P 安装  pretty json  Ctrl+Alt+J