oracle_数据类型讲解PPT学习课件_第1页
oracle_数据类型讲解PPT学习课件_第2页
oracle_数据类型讲解PPT学习课件_第3页
oracle_数据类型讲解PPT学习课件_第4页
oracle_数据类型讲解PPT学习课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle数据类型 单世民 Oracle数据类型概述 LONG NVARCHAR2 VARCHAR2 NCHAR CHAR RAW BLOB LONGRAW NUMBER BINARY FLOAT BINARY DOUBLE BFILE CLOB NCLOB DATE TIMESTAMP TIMESTAMPWITHTIMEZONE TIMESTAMPWITHLOCALTIMEZONE INTERVALYEARTOMONTH INTERVALDAYTOSECOND ROWID UROWID 字符类型 数值类型 二进制类型 日期和时间类型 LONG类型 LOB类型 ROWID UROWID类型 字符类型 概述Oracle中的字符数据类型包括CHAR VARCHAR2以及带 N 的相应变体 NCHAR和NVARCHAR2 这些字符数据类型能存储2000字节或4000字节的文本 这些文本会由数据库根据需要在不同的字符集 characterset 之间进行转换 CHAR VARCHAR2 NCHAR NVARCHAR2都是以同样的格式进行存储 字符类型 NLS 国家语言支持 NLS全称是NationalLanguageSupport NLS是数据库的一个非常强大的特性 控制着数据的许多方面 最重要的两个方面是 文本数据持久存储在磁盘上时如何编码透明地将数据从一个字符集转换到另一个字符集 字符类型 如何查看当前的数据库字符集设定 SELECT FROMnls database parametersWHEREparameter NLS CHARACTERSET 字符类型 CHARCHAR是定长字符串类型 总会用空格填充来达到其最大长度 CHAR字段最多可以存储2000字节的信息 正常情况下 size的单位默认为BYTE CHAR size BYTE CHAR 字符类型 VARCHAR2VARCHAR2是变长字符串类型 不会用空格填充至最大长度 此类型最多可存储4000字节的信息 VARCHAR2 size BYTE CHAR 字符类型 NCHAR NVARCHAR2两种数据类型用于包含UNICODE格式数据的字符串 以支持某些应用中对多字节数据的需求 两者的存储字符数上界分别是2000 4000字节 NVARCHAR2和NCHAR与相应的VARCHAR2和CHAR的区别在于 文本采用数据库的国家字符集来存储和管理 而不是默认字符集长度总是字符数 而CHAR VARCHAR2可能会指定是字节还是字符 字符类型 判断 vchar col列可以存储多少字符 每字符4字节 1000字符VARCHAR2中存储的字节数上界是4000 如果选择的字符集中每个字符都要使用4个字节来表示 那么vchar col字段只能放下1000个字符 CREATETABLET vchar colVARCHAR2 4000CHAR 字符类型 判断 是否可以如下定义vchar col列 不可以NVARCHAR2中存储的字节数上界也是4000 但是定义时长度参数总是表示字符数 没有字节 BYTE 还是字符 CHAR 的选择问题 CREATETABLET vchar colNVARCHAR2 4000CHAR 数值类型 NUMBEROracle9iRelease2及以前的版本只支持一种适合存储数值数据的固有数据类型 在所有的Oracle版本中NUMBER都得到支持NUMBER类型精度可达38位 可以存储小到10e 130 大到 但不包括 10e126的任何数值 数值类型 NUMBER精度 precision 也称为总位数 取值范围1 38 默认值为38 也可以用字符 表示38小数位数 scale 也称为小数点右边的位数 合法值 48 127 默认值取决于是否指定了精度 如果没有指定精度 小数位数则默认有最大的取值区间 如果指定了精度 小数位数默认为0 NUMBER precision scale 数值类型 判断 num col字段是否可以存储小数 可以如果没有指定精度 小数位数则默认有最大的取值区间 换句话说 定义NUMBER的列会存储浮点数 有小数 CREATETABLET num colNUMBER 数值类型 判断 num col字段是否可以存储小数 不可以如果指定小数位数为0 那么相应字段只能存储整数数据 没有小数 CREATETABLET num colNUMBER 5 数值类型 判断 num col字段是否可以存储123456 不可以123456含有6位数字 超过了定义时所规定的精度 5位 因此 可以使用精度来保证某些数据完整性约束 CREATETABLET num colNUMBER 5 0 数值类型 判断 向num col插入123 456 Oracle是否会报错 不会小数位数可以用于控制数值的 舍入 尽管123 456超过了5位 但是Oracle会利用小数位数将123 456 舍入 为只有两位小数 这就得到了123 46 再根据精度来验证123 46 满足精度要求 CREATETABLET num colNUMBER 5 2 数值类型 判断 向num col插入1234 Oracle是否会报错 会数值1234 00的总位数超过了5位 指定小数位数为2时 小数点左边最多只能有3位 右边有两位 因此 1234超过了定义的精度 NUMBER 5 2 列的存储范围是 999 99 999 99 CREATETABLET num colNUMBER 5 2 数值类型 判断 是否可以如下定义num col字段 可以将小数位数定义为负值 作用在于允许对小数点左边的值舍入 CREATETABLET num colNUMBER 5 2 数值类型 判断 向num col插入123 456 数据库会最终存储的数值是多少 100就像NUMBER 5 2 将值舍入为最接近的0 01量级一样 NUMBER 5 2 会把数值舍入为与之最接近的100量级 CREATETABLET num colNUMBER 5 2 数值类型 判断 向num col插入1234567 Oracle是否会报错 不会精度指示了舍入后数值允许有多少位 并使用小数位数来确定如何舍入 CREATETABLET num colNUMBER 5 2 数值类型 判断 NUMBER数据类型是定长类型 错NUMBER类型是一种变长格式 长度为0 22字节 随着有效数字数字的增加 NUMBER类型需要越来越多的存储空间 每增加两位有效数字 就需要另外一个字节的存储空间 Oracle存储一个数时 会使用尽可能少的内容来表示 为此 它会存储有效数字 用户指定小数点位置的一个指数 以及有关数值符号的信息 数值类型 BINARY FLOAT BINARY DOUBLE类型在Oracle10g之前的版本中没有这两种类型 他们就是IEEE标准浮点数 用于近似数值 没有NUMBER类型精确 BINARY FLOATBINARY DOUBLE 数值类型 特殊值 数值类型 Oracle在语法上支持的其他数值数据类型 NUMBER NUMERIC p s DECIMAL p s DEC p s INTEGER INT SMALLINT FLOAT b DOUBLEPRECISION REAL 二进制类型 数据库中以二进制类型存储的二进制数据不会进行字符集转换 而文本类型需要进行字符集转换Oracle支持3种数据类型来存储二进制数据RAW类型能够存储最多2000字节的二进制数据BLOB类型也即大对象类型LONGRAW类型此类型是为了支持向后兼容性提供的 二进制类型 RAWRAW类型是一个变长度的二进制串 物理上限是2000字节 不能存储可直接显示的字符数据 当使用SQL PLUS等许多工具处理RAW数据时 这些RAW数据会被隐式地转换为一个VARCHAR2类型 RAW size 二进制类型 判断 对于仅包含一个16字节长RAW类型的表T 通过SQL Plus Oracle会如何处理如下所示的命令 能成功执行插入字符 abcdef 么 会成功执行插入操作 但是插入的数据并不是字符串 abcdef 而是一个3字节的RAW数据 SQL PLUS将RAW类型获取为一个串时 会隐式地调用RAWTOHEX函数 而插入串时会隐式地调用HEXTORAW函数 INSERTINTOTVALUES abcdef 二进制类型 判断 对于仅包含一个16字节长RAW类型的表T 通过SQL Plus Oracle会如何处理如下所示的命令 报错 错误信息为 invalidhexnumber INSERTINTOTVALUES abcdefgh 日期类型 Oracle固有数据类型DATE TIMESTAMP和INTERVAL是紧密相关的 DATE和TIMESTAMP类型可以存储固定日期 时间 INTERVAL类型可以存储一个时间量 TIMESTAMP相对于DATE的两个优势 支持小数秒支持时区 日期类型 判断 DATE类型就是用来存储日期 年月日 的 错DATE类型不仅可以用来存储日期 还存储了有关时间的信息 精度可以到达整数秒 日期类型 DATEDATE类型是一个7字节的定宽日期 时间数据类型 它总是包含7个属性 包括 世纪 世纪中的哪一年 月份 月份中的哪一天 小时 分钟和秒 Oracle使用一种内部格式来表示这些信息 日期类型 判断 在书写过程中使用的日期格式会以某种方式影响磁盘上存储的数据 并且会影响数据如何存储 错格式对数据如何存储根本没有任何影响 格式只是用于将存储DATE所用的二进制格式转换为一个串 或者将一个串转换为用于存储DATE的二进制格式 对于TIMESTAMP和INTERVAL也是如此 日期类型 日期类型到底是怎么存储的 Oracle以数值方式存储日期 Oracle支持儒略历 Juliandate 当系统使用儒略历时 它指定一个开始日期为第一天 接下来的一天为第二天等等 每个次日都将计数值增加1 Oracle所支持的儒略历的开始日期是公元前4712年的1月1日 用户使用熟悉的文本表示方式输入日期 Oracle在后台将它们转换成对应的儒略历 此外 儒略历还可以存储时间值 时间以小数值存储在表示日期的整数值之后 日期类型 使用日期相关的系统变量存储时间信息时 应注意在查询时适当结合使用TRUNC函数 ROWID UROWID类型 ROWIDROWID是数据库中一行的地址 ROWID中编入了足够多的信息 足以在磁盘上找到行 以及标识ROWID所指向的对象 ROWID并不真正存储在行中 而是行的一个推导属性 基于行的物理地址生成 Oracle中除了索引组织表 IOT 外的所有行都有ROWID ROWID主要用于作为物理地址来减少行更新操作的操作代价 加快访问任何表中某一行的速度 ROWID UROWID类型 UROWIDUROWID是ROWID的 近亲 它用于比如索引组织表 IOT 和通过异构数据库网关访问的没有固定ROWID的表 UROWID基于行的主键生成 是行主键值的一个表示 但是 UROWID并不作为一个单独的列存在 而只是作为现有列的一个函数 LONG类型 Oracle中的LONG类型有两种 LONG文本类型 可以存储2GB的文本LON

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论