Oracle 基本数据类型详解

文章目录

  • 1 概述
    • 1.1 思维导图
  • 2 基本数据类型
    • 2.1 字符类型
    • 2.2 数值类型
    • 2.3 日期类型
  • 3 扩展

1 概述

1. 计算字符长度 'length()'
   计算字节长度 'lengthb()'
2. 不同的 '编码方式''字节' 长度也不一样,一般来说
   GBK  :一个汉字 = 2 个字节,1个英文 = 1 个字节
   UTF-8:一个汉字 = 3 个字节,1个英文 = 1 个字节
3. 字符集查询
   select *
     from nls_database_parameters t
    where t.parameter in ('NLS_CHARACTERSET', -- 数据库字符集
                          'NLS_NCHAR_CHARACTERSET' -- 国家字符集
                         );                         
4. 验证数据类型:dump() 函数,上述不用记,在数据库上验证下就知道了。
                chr(97) = 'a'    -- ascii 码对应的字符
                ascii('a') = 97  -- 字符对应的 ascii 码

 
 
   
   
   
   

扩展:Oracle dump() 详解

1.1 思维导图

Oracle 基本数据类型详解_第1张图片

2 基本数据类型

2.1 字符类型

基础数据准备:

create table char_type_test (
  t_char      char(10),
  t_nchar     nchar(10),
  t_varchar2  varchar2(10),
  t_nvarchar2 nvarchar2(10),
  t_varchar   varchar(10)
);
insert into char_type_test
  (t_char, t_nchar, t_varchar2, t_nvarchar2) 
values
  ('ab悠悠', 'ab悠悠', 'ab悠悠', 'ab悠悠');
commit;

 
 
   
   
   
   

验证:char、nchar

select t.t_char, dump(t.t_char, 1010), length(t.t_char) 字符长度, lengthb(t.t_char) 字节长度
  from char_type_test t;
select t.t_nchar, dump(t.t_nchar, 1010), length(t.t_nchar) 字符长度, lengthb(t.t_nchar) 字节长度
  from char_type_test t;

 
 
   
   
   
   

查询结果:
Oracle 基本数据类型详解_第2张图片
同理,验证 varchar2 和 nvarchar2:
Oracle 基本数据类型详解_第3张图片

验证: varchar 在 11g 版本会强制性转化为 varchar2

select *
  from user_tab_columns t
 where t.table_name = 'CHAR_TYPE_TEST'
 order by t.column_id;
-- ALTER TABLE char_type_test MODIFY t_varchar VARCHAR(10);
-- 即便你声明或修改为 varchar 类型
-- Oracle 在 11g 版本及以后都强制性转为 varchar2 了

 
 
   
   
   
   

Oracle 基本数据类型详解_第4张图片

2.2 数值类型

create table number_type_test (
  n1 number,
  n2 number(2, 1),
  n3 number(2, 4),
  n4 number(2, -3)
);
-- 测试数据(知晓即可,日常开发,没人这么干,自己给自己挖坑)
insert into number_type_test(n2) values(1.45);    -- 1.5
insert into number_type_test(n2) values(11.0);    -- error p=3,s=1
insert into number_type_test(n3) values(0.00999); -- error p=3,s=5
insert into number_type_test(n4) values(11500.5); -- 12000 (有效为 = p + |s|,没有小数位,小数点往左数 s 位,四舍五入)

 
 
   
   
   
   

2.3 日期类型

create table date_type_test (
  create_date date,
  update_date timestamp
);
insert into date_type_test values(sysdate, sysdate);

 
 
   
   
   
   

查询数据:timestamp 日期更加精确
Oracle 基本数据类型详解_第5张图片

3 扩展

1. 查询表字段的数据类型
   select *
     from dba_tab_columns t
    where t.owner = 'SCOTT'
      and t.table_name like '%TEST%'
    order by t.table_name, t.column_id; 

 
 
   
   
   
   

你可能感兴趣的:(Oracle数据库,oracle,数据库)