Oracle 基本数据类型详解

文章目录

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 思维导图

在这里插入图片描述

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;

 
 

查询结果:
在这里插入图片描述
同理,验证 varchar2 和 nvarchar2:
在这里插入图片描述

验证: 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 了

 
 

在这里插入图片描述

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 日期更加精确
在这里插入图片描述

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; 

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值