zoukankan      html  css  js  c++  java
  • oracle表限制及数据类型

    oracle 的命名规则:
    1、要以字母开头
    2、包含字母和数字,以及# $
    3、不能超过30个字符

    oracle基本数据类型
     
    数据类型 参数 描述
    char(n) n=1 to 2000字节 定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)
    varchar2(n) n=1 to 4000字节 可变长的字符串,具体定义时指明最大长度n, 这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。 如果数据长度没有达到最大值n,Oracle 8i会根据数据大小自动调节字段长度, 如果你的数据前后有空格,Oracle 8i会自动将其删去。VARCHAR2是最常用的数据类型。 可做索引的最大长度3209。
    number(m,n) m=1 to 38 n=-84 to 127 可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。 如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数。 如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。 如:number(3,0),输入575.316,真正保存的数据是575。
    date 从公元前4712年1月1日到公元4712年12月31日的所有合法日期, Oracle 8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。 缺省格式为DD-MON-YY,如07-11月-00 表示2000年11月7日。
    long 可变长字符列,最大长度限制是2GB,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。 long是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。
    raw(n) n=1 to 2000 可变长二进制数据,在具体定义字段的时候必须指明最大长度n,Oracle 8i用这种格式来保存较小的图形文件或带格式的文本文件,如Miceosoft Word文档。 raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。
    long raw 可变长二进制数据,最大长度是2GB。Oracle 8i用这种格式来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件。 在同一张表中不能同时有long类型和long raw类型,long raw也是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。
    blob clob nclob 三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件,最大长度是4GB。 LOB有几种类型,取决于你使用的字节的类型,Oracle 8i实实在在地将这些数据存储在数据库内部保存。 可以执行读取、存储、写入等特殊操作。
    bfile 在数据库外部保存的大型二进制对象文件,最大长度是4GB。 这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。 Oracle 8i可以读取、查询BFILE,但是不能写入。 大小由操作系统决定。
     
    oracle 数据库中讨论char ,varchar ,varchar2 数据类型!
     
    这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了?
    首先我们先来分析3个数据类型的说明:
    1。char
    CHAR的长度是固定的,最长2000个字符。
    2。varchar 和 varchar2
    可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案 最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。
    其次也有人认为varchar是最大长度为2000的可变字符串(和sql server中的varchar一致),而varchar2最大长度为4000。
    知道了他们的特点我们就来讨论下使用区别
    1.char和varchar、varchar2
    由于varchar和varchar2用途类似,我们先来讨论char和他们的使用区别:
    varchar和varchar2比char节省空间,在效率上比char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。

      varchar和varchar2虽然比char节省空间,但是如果一个varchar和varchar2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用char代替varchar和varchar2会更好一些。

    当然还有一种情况就是象身份证这种长度几乎不变的字段可以考虑使用char,以获得更高的效率。

    2。varchar和varchar2

    这里就进入重点了,前面的区别我们在sql server中我们已经基本了解了,大家可能都知道,最多也就是复习下,但oracle增加了一个varchar2类型,是大家以前所没有用到过的。

    因为oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar,还有其他数据中一般都有varchar这个数据类型。

    所以我得出了以下结论:

    如果想在oracle新版本的数据库兼容就不要用varchar,如果想和oracle之外其他数据库兼容就不要用varchar2

    ORACLE中的数据类型分类
     
    ORACLE中的数据类型不可谓不多,下面把我这两天来的学习体会写一下吧! 1、字符数据类型:包括我CHAR,VARCHAR2,LONG。 CHAR型可以存储字母数字值,这种数据类型的 列长度可以是1到2000个字节。如果未指明,则默认其占用一个字节,如果用户输入的值小于指定的长度,数据库则用空格填充至固定长度。 VARCHAR2型其实就是VARCHAR,只不过后面多了一个数字2,VARCHAR2就是VARCHAR的同义词,也称别名。数据类型大小在1至4000个字节,但是和 CHAR不同的一点是:当你定义了VARCHAR2长度为30,但是你只输入了10个字符,这时VARCHAR2不会像CHAR一样填充,在数据库中只有 10具字节。 LONG型:此数据类型用来存储可变长度的字符数据,最多能存储2GB。但是有一些限制:一个表中只有一列可以为LONG型,LONG列不能定义为主键或唯一约束,不能建立索引,过程或存储过程不能接受LONG数据类型的参数。 2、数值数据类型只有NUMBER型,但是NUMBER功能不小,它可以存储正数,负数,零,定点数和精度为30位的浮点数。格式为(P=38,S=0),其中P为精度,表示数字的总位数,它在1-38之间,S为范围,表示小数点右边的数字的位数,它在-84至127之间。 3、日期时间数据类型:有DATE数据类型,TIMESTAMP数据类型。 DATE用于存储表中的日期和时间数据,ORACLE使用自己的格式存储日期,使用7个字节固定长度,每个字节分别存储世纪,年月日,小时,分和秒。日期数据类型的值从公元前4712年1月1日到公元9999年12月31日。ORACLE中的SYSDATE函数用于返回当前的日期和时间。 TIMESTAMP数据类型与DATE不同的是:它还返回当前的时区。 4RAW和LONG RAW 数据类型 此种数据类型主要用于存储二进制数据。 RAW用于存储基于字节的数据,最多能存储2000个字节,它没有默认大小,所以在使用时要指定大小,可以建立索引。 RAW LONG用于存储可变长度的二进制数据,最多能存储2GB,它受的限制和LONG类型一样。 5、LOB数据类型 LOB又称为“大对象”数据类型:主要有CLOB,BLOB,BFILE,三种子类型。 CLOB代表(CHARACTER LOB),它能够存储大量字符数据,可以存储非结构化的XML文档。 BLOG代表(BINARY LOB),它可以存储较大的二进制对象;如图形,音视频剪辑。 BFILE 代表(BINARY FILE),它能够将二进制文件存储在数据库外部的操作系统文件中,注意是二进制文件,不是一般数据,BFILE列存储一个BFILE定位器,它指向位于服务器文件系统上的二进制文件,支持的文件最大为4GB。不过ORACLE10以上的会更大,这还需要硬件方面的支持。
    坚持住你的坚持,成功就在拐弯处
  • 相关阅读:
    pat1041. Be Unique (20)
    Linux基础命令---service
    Linux基础命令---last
    Linux基础命令---date
    Linux基础命令---ckconfig
    Linux基础命令---cal
    Linux基础命令---bc
    linux基础命令---df
    linux基础命令---du
    Linux基础命令---hwclock
  • 原文地址:https://www.cnblogs.com/shawnloong/p/2790015.html
Copyright © 2011-2022 走看看