oracle表中列的类型。number和integer区别
数据库中创建表,常见类型总结: 见一个大神总结的很全: 一、数据类型 二、字符数据类型 三、数字数据类型 Oracle使用标准、可变长度的内部格式来存储数字。这个内部格式精度可以高达38位。 NUMBER数据类型可以有两个限定符,如:column NUMBER(precision,scale)。precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38 作为精度。scale表示小数点右边的位数,scale默认设置为0。如果把scale设成负数,Oracle将把该数字取舍到小数点左边的指定位数。 日期数据类型 Oracle标准日期格式为:DD-MON-YY HH:MI:SS 通过修改实例的参数NLS_DATE_FORMAT,可以改变实例中插入日期的格式。在一个会话期间,可以通过Alter session SQL命令来修改日期,或者通过使用SQL语句的TO_DATE表达式中的参数来更新一个特定值。 其它的数据类型 RAW和LONG RAW RAW和LONG RAW数据类型主要用于对数据库进行解释。指定这两种类型时,Oracle以位的形式来存储数据。RAW数据类型一般用于存储有特定格式的对象,如位图。 RAW数据类型可占用2KB的空间,而LONG RAW数据类型则可以占用2GB大小。 ROWID ROWID是一种特殊的列类型,称之为伪列(pseudocolumn)。ROWID伪列在SQL SELECT语句中可以像普通列那样被访问。Oracle数据库中每行都有一个伪列。ROWID表示行的地址,ROWID伪列用ROWID数据类型定义。 ROWID与磁盘驱动的特定位置有关,因此,ROWID是获得行的最快方法。但是,行的ROWID会随着卸载和重载数据库而发生变化,因此建议不要在事务 中使用ROWID伪列的值。例如,一旦当前应用已经使用完记录,就没有理由保存行的ROWID。不能通过任何SQL语句来设置标准的ROWID伪列的值。 列或变量可以定义成ROWID数据类型,但是Oracle不能保证该列或变量的值是一个有效的ROWID。 LOB(大型对象)数据类型,可以保存4GB的信息。LOB有以下3中类型: <CLOB>,只能存储字符数据 <NCLOB>,保存本地语言字符集数据 <BLOB> ,以二进制信息保存数据 可以指定将一个LOB数据保存在Oracle数据库内,还是指向一个包含次数据的外部文件。 LOB可以参与事务。管理LOB中的数据必须通过DBMS_LOB PL/SQL内置软件包或者OGI接口。 为了便于将LONG数据类型转换成LOB,Oracle 9i包含许多同时支持LOB和LONG的函数,喊包括一个ALTER TABLE语句的新选择,它允许将LONG数据类型自动转换成LOB。 BFILE BFILE数据类型用做指向存储在Oracle数据库以外的文件的指针。 XML Type 作为对XML支持的一部分,Oracle 9i包含了一个新的数据类型XML Type。定义为XMLType的列将存储一个字符LOB列中的XML文档。有许多内置的功能可以使你从文档中抽取单个节点,还可以在XML Type文档中对任何节点创建索引。 用户自定义数据 从Oracle 8以后,用户可以定义自己的复杂数据类型,它们由Oracle基本数据类型组合而成。 AnyType、AnyData和AnyDataSet Oracle包括3个新的数据类型,用于定义在现有数据类型之外的数据结构。其中每种数据类型必须用程序单元来定义,以便让Oracle9i知道如何处理这些类型的特定实现。 类型转换 Oracle会自动将某些数据类型转换成其他的数据类型,转换取决于包括该值的SQL语句。 数据转换还可以通过Oracle的类型转换函数显示地进行。 连接与比较 在大多数平台上Oracle SQL中的连接操作符用两条竖线(||)表示。连接是将两个字符值连接。Oracle的自动类型转换功能使得两个数字值也可以进行连接。 NULL NULL值是关系数据库的重要特征之一。实际上,NULL不代表任何值,它表示没有值。如果要创建表的一个列,而这个列必须有值,那么应将它指定为NOT NULL,这表示该列不能包含NULL值。 任何数据类型都可以赋予NULL值。NULL值引入了SQL运算的三态逻辑。如果比较的一方是NULL值,那么会出现3种状态:TURE、FALSE以及两者都不是。 因为NULL值不等于0或其他任何值,所以测试某个数据是否为NULL值只能通过关系运算符IS NULL来进行。 NULL值特别适合以下情况:当一个列还未赋值时。如果选择不使用NULL值,那么必须对行的所有列都要赋值。这实际上也取消了某列不需要值的可能性,同时对它赋的值也很容易产生误解。这种情况则可能误导终端用户,并且导致累计操作的错误结果。 number(p,s) p:1~38 s:-84~127 p>0,对s分2种情况:1. s>0 精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。 2. s<0 精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s| 123.2564 NUMBER 123.2564 1234.9876 NUMBER(6,2) 1234.99 12345.12345 NUMBER(6,2) Error 1234.9876 NUMBER(6) 1235 12345.345 NUMBER(5,-2) 12300 1234567 NUMBER(5,-2) 1234600 12345678 NUMBER(5,-2) Error 123456789 NUMBER(5,-4) 123460000 1234567890 NUMBER(5,-4) Error 12345.58 NUMBER(*,1) 12345.6 0.1 NUMBER(4,5) Error 0.01234567 NUMBER(4,5) 0.01235 0.09999 NUMBER(4,5) 0.09999 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |