oracle数据类型
长度单位-字节 | 长度单位-字符 |
一般 储存 |
||
字符 | char | 定长字符串,用空格补齐,最多2000字节,不指定时默认为1 | 性别01 | |
varchar2 | 变长字符串,最多4000字节(一个英文1字节,一个汉字3字节) | 姓名 | ||
nvarchar2 |
包含UNICODE格式数据的变长字符串,最多存储4000字节, 一个UNICODE占4字节,单位是字符,所以nvarchar2(20)可以存20个汉字 |
|||
数字 | number |
number(P,S),P有效数字位数,即小数点左边位数, 最多38个有效数字;S小数点数字的位数 |
||
integer |
integer是number的子类型,它等同于number(38,0), 用来存储整数。 若插更新的数值有小数,则会被四舍五入。 |
|||
浮点数 | binary float |
BINARY FLOAT 是 32位、单精度浮点数字数据类型。 可以支持至少6位精度,每个BINARY FLOAT 的值需要5个字节, 包括长度字节。 |
||
binary double |
BINARY DOUBLE 是为 64位,双精度浮点数字数据类型。 每个BINARY DOUBLE的值需要 9个字节,包括长度字节。 |
|||
日期 | date |
DATE 是最常用的数据类型,日期数据类型存储日期和时间信息。 虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型 具有特殊关联的性。为每个日期值,Oracle存储以下信息: 世纪、年、 月、曰期、小时、分钟和秒。一般占用7个字节的存储空间。 |
||
timestamp |
这是一个7字节或 12字节的定宽日期,时间数据类型。它与 DATE 数据 类型不同,因为TIMESTAMP 可以包含小数秒,带小数秒的 TIMESTAMP 在小数点右边最多可以保留9位。 |
|||
timestamp with time zone | 这是 TIMSTAMP 类型的变种,它包含了时区偏移量的值。 | |||
timestamp withlocal time zone | 将时间数据以数据库时区进行规范化后进行存储 | |||
LOB |
CLOB 类型 (Character Large Object) |
二进制数据,存储单字节和多字节字符数据。最大长度 4G | 非常多文字 | |
BLOB 类型 (BinaryLarge Object) |
它存储非结构化的二进制数据大对象,它可以被认为是没有 字符集语义的比特流,一般是图像、声音、视频等文件。最大长度 4G。 |
图片、影音 | ||
NCLOB 数据类型 | 存储 UNICODE 类型的数据,最大长度4G。 | |||
LONG
|
LONG |
|
它存储变长字符串(超长字符串),最多达 2G 的字符数据 (2GB是指2千兆字节,而不是 2千兆字符)。存储大于varchar2小于clob |
|
LONG RAW | 能存储 2GB 的原始二进制数据,可存放多媒体图象声音等。 | |||
RAW |
用于存储二进制或字符类型数据,必须制定长度。这种数据类型 存储的数据不会发生字符集转换。可存放多媒体图象声音等。 |
float数据类型
float(n)
n代表的是2进制的精度,转换为10进制需要乘0.3
1.234567e6=1.234567*10的6次幂
如果插入数据是1234567
float(3)的结果是1000000,可以理解为1.234567e6, 3*0.3=0.9,小数点后保留0位,就是1e6.
float(4)的结果是1200000,可以理解为1.234567e6, 4*0.3=1.2,小数点后保留1位,就是1.2e6.
float(5)的结果是1200000,可以理解为1.234567e6, 5*0.3=1.5,小数点后保留1位,就是1.2e6.
float(7)的结果是1230000,可以理解为1.234567e6, 7*0.3=2.1,小数点后保留2位,就是1.23e6.
float(11)的结果是1234000,可以理解为1.234567e6, 11*0.3=3.3,小数点后保留3位,就是1.234e6.
sqlplus更改session日期会话
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select sysdate from dual;
select to_date('2013-02-09 23:59:59','yyyy-mm-dd hh24:mi:ss') from dual;
alter session set nls_timestamp_format='yyyy-mm-dd hh24:mi:ss.ff';
select to_timestamp('2013-02-09 23:59:59.123','yyyy-mm-dd hh24:mi:ss.ff') from dual;
alter session set nls_timestamp_tz_format='yyyy-mm-dd hh24:mi:ss.ff tzh:tzm';
select systimestamp from dual;
确定一个时间范围:
select 'TRUE' from dual where to_date('2013-04-05 13:48:22','YYYY-MM-DD HH24:MI:SS') between date'2013-04-05' and date'2013-04-06'-1/86400;
select 'TRUE' from dual where to_date('&X','YYYY-MM-DD HH24:MI:SS') between date'2013-04-05' and date'2013-04-06'-1/86400;
select 'TRUE' from dual where to_date('&X','YYYY-MM-DD HH24:MI:SS') >= date'2013-04-05' and to_date('&X','YYYY-MM-DD HH24:MI:SS')<= date'2013-04-06'-1/86400;
select 'TRUE' from dual where to_char(to_date('&X','YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD') = '2013-04-05';
显示日期
select to_char(sysdate,'YYYY"年"MM"月"DD"日"') from dual;
select to_char(sysdate,'YYYY"年"MM"月"DD"日" HH24"点"MI"分"SS"秒"') from dual;
char(1) 最小1最大2000,代表字节;定长
char(12 char) 表示可以存12个字符
varchar2和char基本一样;可变长
可以用lengthb来测试字符所占据的字节数