Oracle|数据类型详解

data type

强数据类型

字符串:

char(size):

定长,不会自动回收,size:1-2000个字节

varchar2(size):

白哦长

DBMS在合适的时机回收剩余的字节空间

size:1-4000个字节

create table stu2(name varchar2(30),sex char(1),pid char(18),addr varchar2(100));

编解码:

查看数据库的编码的格式:

select userenv('language') from dual;

dual虚表

select userenv('language') from dual;

编译:字符-》字节码

UTF-8一个中文占用3个字节

解码:

字节码-》字符

GBK:1个中文占用2个字节

nchar(size):

size:代表字符长度

create table t4(nname nchar(5));

long

最多放2G字节

clob:

最多放4G字节

数值类型

number(p,s)

number(p):

不超过p为整数:

小数位:四舍五入

number(p,s)

p>s>0

整数不超过p-s为

小数位s为

超过,四舍五入

不足:用0补齐

s<0<p

整数位:不超过p-s为

对小数点左侧的s为清零,四舍五入

小数位:没有小数位

直接清零

number

整数小数自适应

较少用

numeric(size)

等同number(size)

int整数

https://blog.csdn.net/IT_jinxing/article/details/77159519

Oracle中数据类型number(m,n)中m表示的是所有有效数字的位数,n表示的是小数位的位数。m的范围是1-38,即最大38位。

1> .NUMBER类型细讲:

oraclenumber   datatype   语法:NUMBER[(precision   [, scale])]

简称:precision   -->   p

scale   -->   s

NUMBER(p,   s)

范围:   1   <=   p   <= 38,

-84   <=   s   <= 127

保存数据范围: -1.0e-130   <= number value  <   1.0e+126

保存在机器内部的范围:   1   ~   22   bytes

有效位:从左边第一个不为0的数算起的位数。

s的情况:

s   >   0

精确到小数点右边s位,并四舍五入。然后检验有效位是否   <=   p。

s   <   0

精确到小数点左边s位,并四舍五入。然后检验有效位是否   <=   p   +   |s|。

s   =   0

此时NUMBER表示整数。


eg:

Actual   Data       Specified   As     Stored   As

----------------------------------------

123.89                       NUMBER            123.89

123.89                       NUMBER(3)           124

123.89                       NUMBER(6,2)       123.89

123.89                       NUMBER(6,1)       123.9

123.89                       NUMBER(4,2)       exceeds   precision   (有效位为5,   5   >   4)

123.89                       NUMBER(6,-2)     100

.01234                       NUMBER(4,5)       .01234   (有效位为4)

.00012                       NUMBER(4,5)       .00012

.000127                      NUMBER(4,5)       .00013

.0000012                     NUMBER(2,7)       .0000012

.00000123                    NUMBER(2,7)       .0000012

1.2e-4                       NUMBER(2,5)       0.00012

1.2e-5                       NUMBER(2,5)       0.00001

123.2564                     NUMBER                 123.2564

1234.9876                    NUMBER(6,2)       1234.99

12345.12345                  NUMBER(6,2)       Error   (有效位为5+2   >   6)

1234.9876                    NUMBER(6)           1235   (s没有表示s=0)

12345.345                    NUMBER(5,-2)     12300

1234567                      NUMBER(5,-2)     1234600

12345678                     NUMBER(5,-2)     Error   (有效位为8   >   7)

123456789                    NUMBER(5,-4)     123460000

1234567890                   NUMBER(5,-4)     Error   (有效位为10   >   9)

12345.58                     NUMBER(*,   1)     12345.6

0.1                          NUMBER(4,5)       Error   (0.10000,   有效位为5   >   4)

0.01234567                   NUMBER(4,5)       0.01235

0.09999                      NUMBER(4,5)       0.09999

日期:

date

select sysdate from dual;

--格式dual虚表

insert into t3 values(to_date('1999-09-07','yyyy-mm-dd'));

select to_char('birthday,'yyyy-mm-dd') from t3;

select to_char(bithday,'yyyy-mm-dd hh m:mi:ss') from t3;

二进制数据(图片影音)

raw(size)

size:2000个字节

long raw

blob

练习:

员工 emp(id,name,sex,birthday,photo,salary)

插入2条数据

查询

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容