数据类型
字符串类型
字符串类型用来存储字符串数据
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用来存储日期和时间,精确到小数秒,存放日期时还能显示上午,下午和时区
创建表tmp2SQL> 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