oracle数据类型

我们两清 提交于 2019-12-05 23:46:06

数据类型

字符串类型

字符串类型用来存储字符串数据

类型名称 说明 取值范围(字节)
char 用于描述定长的字符型数据 0~2000
nchar 用来存储Unicode字符集的定长字符型数据 0~1000
varchar2 用于描述可变长的字符型数据 0~4000
nvarchar2 用来存储unicode字符集的可变长字符型数据 0~1000
long 用来存储边长的字符串 0~2GB

varchar2,nvarchar2和long类型都是变长类型,对于其存储需求取决于列值的实际长度,而不是取决于类型的最大可能尺寸
例如,varchar(10)列能保存最大长度为10个字符的一个字符串

创建tmp1表,定义字段ch和vch, 数据类型依次为char(4)和varchar2(4)

SQL> create table tmp1(
  2  ch char(4),vch varchar(4)
  3  );
表已创建。
SQL> insert into tmp1 values('ab','ab');
已创建 1 行。
SQL> select length(ch) from tmp1
  2  union all
  3  select length(vch) from tmp1;

LENGTH(CH)
----------
         4
         2

定长字符串在存储时长度是固定的,而变长字符串的存储长度是根据实际插入的数据长度而定

数值类型

oracle的数值类型主要通过number(m,n)语句来实现,格式为

number(m,n)
语法 描述
number 可变长的数值列
m 是所有 有效数字的位数. 取值范围为1~38
n 是小数点以后的位数. 取值范围为 -84~127

number(5,2)
这个字段的最大值是999.99, 如果数值超出了位数限制就会被截取多余的位数
在这个字段中插入数据575.316,则真正保存到字段中的数值是575.32

number(3)
输入575.316,真正保存的数据是575,对于整数,可以省略后面的0

日期和时间类型

类型名称 描述
date 用来存储日期和时间,精确到秒
timestamp 用来存储日期和时间,精确到小数秒,存放日期时还能显示上午,下午和时区

创建表tmp2

SQL> create table tmp2(d1 date);

表已创建。

插入数据之前,查看数据库默认的时间格式

SQL> select sysdate from dual;

SYSDATE
--------------
20-11月-19

插入数据

SQL> insert into tmp2 values('20-11月-2019');
已创建 1 行。

SQL> select * from tmp2;
D1
--------------
20-11月-19

如果想按照指定的格式输入时间,需要修改时间的默认格式

SQL> alter session set nls_date_format='yyyy-mm-dd';
会话已更改。

SQL> select sysdate from dual;
SYSDATE
----------
2019-11-20

例:
创建数据表tmp3,字段d,类型date,向表中插入'YYYYMMDD'和'YYYY-MM-DD'格式日期

SQL> create table tmp3(d1 date);
表已创建。

SQL> alter session set nls_date_format='yyyy-mm-dd';
会话已更改。
SQL> insert into tmp3 values('1998-08-08');
已创建 1 行。

SQL> insert into tmp3 values('19880808');
已创建 1 行。

SQL> select * from tmp3;
D1
----------
1998-08-08
1988-08-08
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!