Oracle 基本数据类型【下】

Oracle数据中讨论 char , varchar , varchar2 数据类型:

      这三种类型是我们使用最多的,在数据库中我们该怎么使用呢?

1.CHAR的长度是固定的,最多2000个字符串。。

2.VARCHAR , VARCHAR2可以肯定的是在oracle中目前是可以使用CARCHAR数据类型。。

   他们的区别在网上找了半天也没有准确的答案,说是oracle中varchar是varchar2的同义词,也称别名。。

   其次也有人认为varchar是最大长度为2000的可变字符串(和sql server中的varchar一致),而varchar2的最大长度为4000.。

     知道了他们的特点 我们就来讨论一下区别:

char ,varchar ,varchar2由于后两者区别不大,我们先讨论一下char和他们的使用区别

     后两者比char节省空间,在效率上比char稍微差一些。即要想获得效率,就要牺牲一下空间。。    这也就是我们在数据库设计上常说的“以空间换效率”。。后两者虽然比char节省空间,但是如果varchar和varchar2列经常被修改,而且每次修改数据的长度不同,这回引起”行迁移“现象(Row Migration),而这造成多余的I/O,是数据库设和调整中尽量避免的,在这种情况下用char代替varchar和varchar2会更好一些。当然还有一种情况就是象身份证这种长度几乎不变的字段可以考虑使用char,以获得更高的效率。。

    varchar和varchar2这里就进入重点了,前面的区别我们在sql server中我们已经基本了解了,大家可能都知道,最多也就是复习下,但oracle增加了一个varchar2类型,是大家以前所没有用到过的。因为oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar,还有其他数据中一般都有varchar这个数据类型。。

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

数据类型

参数

描述

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,但是不能写入。
    大小由操作系统决定。

时间: 2024-07-28 21:30:24

Oracle 基本数据类型【下】的相关文章

Oracle自定义数据类型 2 (调用对象方法)

调用对象方法 调用对象方法基于类型创建表后,就可以在查询中调用对象方法 A. 创建基于对象的表语法: create   table   <表名>   of   <对象类型>意义:此表具有该类型和member方法的所有属性, 我们不能通过DBA   STUDIO的表数据编辑器来编辑数据. 例:create   table   FLIGHT_SCH_TAB   of   FLIGHT_SCH_TYPE insert   into   FLIGHT_SCH_TAB     values(

【Oracle】Oracle基本数据类型总结

ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.LOB类型.LONG RAW& RAW类型.ROWID & UROWID类型. 在讲叙字符串类型前,先要讲一下编码.字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种.数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中.通过不同的

Oracle自定义数据类型 1

原文 oracle 自定义类型 type / create type 一 Oracle中的类型 类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nvarchar2.2.数值类型.如:int.number(p,s).integer.smallint.3.日期类型.如:date.interval.timestamp.4.PL/SQL类型.如:pls_integer.binary_integer.binary_double(10g).binary_fl

Oracle同一个用户下启动多个数据库实例

[email protected] oradata]$ export ORACLE_SID=APPDB[[email protected] oradata]$ lsnrctl startLSNRCTL for Linux: Version 11.2.0.4.0 - Production on 22-MAY-2014 11:42:15Copyright (c) 1991, 2013, Oracle.  All rights reserved.TNS-01106: Listener using li

Oracle 11g 环境下,利用utl_smtp创建发送邮件的存储过程

网上太多发邮件储存过程,我就不转发了,弄个简单的作为示例: create or replace procedure Send_mail(mail_body varchar2) is smtp_conn utl_smtp.connection; user_name varchar2(20) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('[email protected]'))); user_pas

Oracle在Linux下的性能优化

Oracle数据库内存参数的优化 Ø       与oracle相关的系统内核参数 Ø       SGA.PGA参数设置   Oracle下磁盘存储性能优化 Ø       文件系统的选择(ext2/ext3.xfs.ocfs2) Ø       Oracle ASM存储  1.优化oracle性能参数之前要了解的情况 1)物理内存有多大 2)操作系统估计要使用多大内存 3)数据库是使用文件系统还是裸设备 4)有多少并发连接 5)应用是OLTP类型还是OLAP类型 2.oracle数据库内存参

Oracle在linux下的开机自启动(详细)转

linux下系统开机oracle自启动(方法一) ---加载为服务自启动.停止一.dbstart   及   dbstop 1. 修改Oracle系统配置文件:/etc/oratab,只有这样,Oracle 自带的dbstart和dbshut才能够发挥作用. # vi /etc/orataborcl:/opt/oracle/102:Y # Entries are of the form:#   $ORACLE_SID:$ORACLE_HOME:<N|Y>: Oracle   数据库的自动启动及

Oracle RAC环境下如何更新patch(Rolling Patch)

Oracle RAC数据库环境与单实例数据库环境有很多共性,也有很多异性.对于数据库补丁的更新同样如此,都可以通过opatch来完成.但RAC环境的补丁更新有几种不同的更新方式,甚至于可以在零停机的情况下对所有节点实现滚动升级.本文主要是转述了Doc 244241.1,描述RAC环境下的patch更新方式以及在不同的情形下选择何种更新方式. 1.RAC patch的几种方式 OPatch supports 3 different patch methods on a RAC environmen

Oracle RAC 环境下的连接管理(转) --- 防止原文连接失效

崔华老师的文章!!! 这篇文章详细介绍了Oracle RAC环境下的连接管理,分别介绍了什么是 Connect Time Load Balancing.Runtime Connection Load Balancing.Connect Time Connection Failover 和 Runtime Connection Failover,以及里面所涉及到的 TAF.ONS.FCF.FAN.LBA 等诸多知识点.本文主要是针对 Oracle RAC 11gR2 环境下的连接管理,但同时也会对

Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像(克隆和导入)

Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像: 注:直接复制一个.vdi 虚拟硬盘再挂上去就可以,但Virtualbox居然提示UUID重复,无法使用. 则,可以通过Vritualbox自带的一个命令行工具解决,UI上没有提供对应的解决方案 : 注:克隆镜像及导入镜像生成虚拟机 1.定位到Vritualbox的安装目录,不能用全路径的方式直接执行该命令行(shift+鼠标左键:->在此处打开命令行(W)) 2.执行VBoxManage.exe clonevdi