数据类型
字符串类型
字符串类型用来存储字符串数据
类型名称 | 说明 | 取值范围(字节) |
---|---|---|
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