oracle 10g数据类型整理
2015-06-12 19:24
633 查看
目前的项目中基本都是使用oracle数据库,时间久了,对数据类型有些含糊不清了,整理一下,做个备份。
在plsql中,可以定义某一个字段的类型为:
时间、时间间隔类型:
LOB列包含一个LOB地址,指向数据库内或者数据库外的LOB类型值。
int类型
oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。
int类型只能存储整数;
number可以存储浮点数,也可以存储整数;
number(8,1)存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全;
number(8)存储总长度为8的整数;
int相当于number(22),存储总长度为22的整数。
概述
在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。
查看数据库视图所包含的数据类型:SELECT * FROM DBA_TYPES WHERE OWNER IS NULL.具体细节情况参见Oracle® Database SQL Language Quick
Reference 10/11g 或官方文档
所谓固定长度:是指虽然输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格后,才将字段值的内容存储到数据块中。这种方式虽然比较浪费空间,但是存储效率较可变长度类型要好。同时还能减少数据行迁移情况发生。
所谓可变长度:是指当输入的字段值小于该字段的限制长度时,直接将字段值的内容存储到数据块中,而不会补上空白,这样可以节省数据块空间。
CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR).
http://www.cnblogs.com/dreamweaver2012/archive/2012/08/15/2639782.html
在plsql中,可以定义某一个字段的类型为:
1. 字符类型
数据类型 | 长度 | 说明 |
CHAR(n BYTE/CHAR) | 默认1字节,n值最大为2000 | 末尾填充空格以达到指定长度,超过最大长度报错。默认指定长度为字节数,字符长度可以从1字节到四字节。 |
NCHAR(n) | 默认1字符,最大存储内容2000字节 | 末尾填充空格以达到指定长度,n为Unicode字符数。默认为1字节。 |
NVARCHAR2(n) | 最大长度必须指定,最大存储内容4000字节 | 变长类型。n为Unicode字符数 |
VARCHAR2(n BYTE/CHAR) | 最大长度必须指定,至少为1字节或者1字符,n值最大为4000 | 变长类型。超过最大长度报错。默认存储的是长度为0的字符串。 |
VARCHAR | 同VARCHAR2 | 不建议使用 |
2. 数字类型
数据类型 | 长度 | 说明 |
NUMBER(p[,s]) | 1-22字节。 P取值范围1到38 S取值范围-84到127 | 存储定点数,值的绝对值范围为1.0 x 10 -130至1.0 x 10 126。值大于等于1.0 x 10 126时报错。p为有意义的10进制位数,正值s为小数位数,负值s表示四舍五入到小数点左部多少位。 |
BINARY_FLOAT | 5字节,其中有一长度字节。 | 32位单精度浮点数类型。 符号位1位,指数位8位,尾数位23位。 |
BINARY_DOUBLE | 9字节,其中有一长度字节。 | 64位双精度浮点数类型。 |
3. 时间、时间间隔类型
时间字段可取值范围:时间字段 | 时间类型有效值 | 时间间隔类型有效值 |
YEAR | -4712至9999,包括0 | 任何整数 |
MONTH | 01至12 | 0至11 |
DAY | 01至31 | 任何整数 |
HOUR | 00 至 23 | 0 至 23 |
MINUTE | 00 至 59 | 0至 59 |
SECOND | 00 to 59.9(n),9(n)不适用与DATE类型 | 0 to 59.9(n) |
TIMEZONE_HOUR | -1至14,不适用与DATE和TIMESTAMP类型 | 不可用 |
TIMEZONE_MINUTE | 00至59,不适用与DATE和TIMESTAMP类型 | 不可用 |
TIMEZONE_REGION | | 不可用 |
TIMEZONE_ABBR | | 不可用 |
时间、时间间隔类型:
数据类型 | 长度 | 说明 |
DATE | 7字节 | 默认值为SYSDATE的年、月,日为01。包含一个时间字段,若插入值没有时间字段,则默认值为:00:00:00 or 12:00:00 for 24-hour and 12-hour clock time。没有分秒和时间区。 |
TIMESTAMP [(fractional_seconds_precision)] | 7至11字节 | fractional_seconds_precision为Oracle存储秒值小数部分位数,默认为6,可选值为0到9。没有时间区。 |
TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE | 13字节 | 使用UTC,包含字段YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_ HOUR, TIMEZONE_MINUTE |
TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE | 7至11字节 | 存时使用数据库时区,取时使用回话的时区。 |
INTERVAL YEAR [(year_precision)] TO MONTH | 5字节 | 包含年、月的时间间隔类型。year_precision是年字段的数字位数,默认为2,可取0至9。 |
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)] | 11字节 | day_precision是月份字段的数字位数,默认为2,可取0至9。 |
4. 大对象类型
数据类型 | 长度 | 说明 |
BLOB | 最大为(4GB-1)*数据库块大小 | 存储非结构化二进制文件。支持事务处理。 |
CLOB | 最大为(4GB-1)*数据库块大小 | 存储单字节或者多字节字符数据。支持事务处理。 |
NCLOB | 最大为(4GB-1)*数据库块大小 | 存储Unicode数据。支持事务处理。 |
BFILE | 最大为2 32-1字节 | LOB地址指向文件系统上的一个二进制文件,维护目录和文件名。不参与事务处理。只支持只读操作。 |
LOB列包含一个LOB地址,指向数据库内或者数据库外的LOB类型值。
5. 其他类型
数据类型 | 长度 | 说明 |
LONG | 最大为2GB | 变长类型,存储字符串。创建表时不要使用该类型。 |
RAW(n) | 最大2000字节,n为字节数,必须指定n | 变长类型,字符集发生变化时不会改变值。 |
LONG RAW | 最大为2GB | 变长类型,不建议使用,建议转化为BLOB类型,字符集发生变化时不会改变值。 |
ROWID | 10字节 | 代表记录的地址。显示为18位的字符串。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。 |
UROWID(n) | |
oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。
int类型只能存储整数;
number可以存储浮点数,也可以存储整数;
number(8,1)存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全;
number(8)存储总长度为8的整数;
int相当于number(22),存储总长度为22的整数。
概述
在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。
查看数据库视图所包含的数据类型:SELECT * FROM DBA_TYPES WHERE OWNER IS NULL.具体细节情况参见Oracle® Database SQL Language Quick
Reference 10/11g 或官方文档
所谓固定长度:是指虽然输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格后,才将字段值的内容存储到数据块中。这种方式虽然比较浪费空间,但是存储效率较可变长度类型要好。同时还能减少数据行迁移情况发生。
所谓可变长度:是指当输入的字段值小于该字段的限制长度时,直接将字段值的内容存储到数据块中,而不会补上空白,这样可以节省数据块空间。
CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR).
http://www.cnblogs.com/dreamweaver2012/archive/2012/08/15/2639782.html
相关文章推荐
- XA中使用dblink发现的一个oracle bug
- Oracle行转列、列转行的Sql语句总结
- oracle 多行转一列,一列转多行
- oracle修改sys用户密码
- oracle bulk collect is table of 批量操作
- oracle权限控制
- oracle复制表结果与数据,以及创建临时表
- Oracle 格式化数字
- Oracle 数据泵使用详解
- Oracle 使用小计(3)
- oracle分页查询语句
- Oracle Exadata一体机简介
- Linux 下修改默认openJDK为Oracle JDK搭建Apache-Tomcat (Kali)
- oracle数据库管理之表空间
- ORACLE 注册备份集信息方法(catalog backuppiece)
- Oracle集群文件系统(OCFS2)
- oracle数据库导出备份导入恢复
- Oracle 11.2.0.3 Download Link
- Oracle 安装报SGA size can not be greater than maximum shared memory segment size(0)
- Oracle存储过程中传入参数,传出字符串