SQL 语句的类型和 用法

SQL 语句

Data Type

assets/dot/oracle_dataType.jpg

查看数据所占空间的两个函数:

-- 查看所占字节数
select length('你好,世界') from dual;
-- 查看所占字符数,即多少个字母,多少个汉字
select lengthb('您好,美女') from dual;

-- 比如
create table aaa (a varchar2(6));
insert into aaa values ('aaa');
insert into aaa values ('你好');
select a, length(a), lengthb(a) from aaa;

字符类型

  • char,固定长度,默认1,最大2000,如果长度不够,用空格填充。
  • varchar2 类型,变长字符串,最多4000字节长度。
  • nvarchar2,跟上面比,增加了字符集的支持。
  • long,用于存储大数据,最多 2G。不建议使用,已被 clob 类型替代。
    -- 它的使用跟 SQL 的标准 varchar 基本类似,
    -- 但是,在 Oracle 中请使用 varchar2 而不是 varchar,
    -- varchar2 的效率更高,并且在兼容性上做的更好
    -- 初始化的语句为: name varchar2(20)
    -- 其中 20 代表最大长度, 默认单位是字节。
    -- 如果定义为: name varchar2(20 char),表示最大保存20个字符长度的字符串。
    create table aaa (
       a varchar2(20),        -- 最大是20个字节长度,默认单位字节
       b varchar2(20 byte),   -- 最大为20个字节长度,跟上面是一样的
       c varchar2(20 char)    -- 最大为20个字符长度
    );
    
    -- varchar2 最大能保存 4000 个字节
    -- 如果是英文,则是 4000 个英文字母
    -- 如果是中文,需要按照字符集判断:
    --   GBK 用两个字节表示一个汉字,所以 varchar2 最多表示 2000 个汉字
    --   UTF-8 是变长字符集,用一个字节表示一个英文字母,用3个或4个字节表示一个汉字,所以,最多可以保持1333个汉字。
    select length('你好') from dual;   -- 2
    select lengthb('你好') from dual;  -- 4
    
    
    -- char 类型是固定长度的,可能会占用更多空间。但是因为长度固定,块的分配管理比较块,效率很高。
    -- varchar2 是变长的,会占用尽量少的空间。但是需要消耗更多资源为分配变长空间,效率略低。
    -- 所以,用哪一种,酌情而定。
    
    -- nchar/nvarchar2 是 char/varchar2 的字符集支持版本,对多字节字符有算法上的优化。
    -- 感觉用的比较少。
    
        

数值类型

  • number,占用 38 位,有自己的内部表示方式,可以表示天文数字。
  • int/float,number 类型的子类型
    -- number 类型的语法为 NUMBER [位数[,小数点数]]
    create table bbb (
      a number,         -- 一共 38 位,其他按照插入的值自动判断
      b number(5),      -- 一共5位
      c number(5, 2),   -- 一共5位,3位整数,2位小数
      d number (*, 2)   -- 保存两位小数,其他随意
      e number (*, 0),  -- 相当于 int
      f int
    );
    
    -- 插入的时候,多余的小数会被切掉,但如果整数位超了,会报错
    insert into bbb values (111.223, 111.223, 111.223, 111.223, 22);
      
    -- 一般情况下,作为表的主键,设为 int 类型就可以了
        

日期类型

  • date,存储的年月日,时分秒
  • timestamp,存储的更详细,包括时区,还有精确到小数点后6位的秒数等
  • timestamp with time zone,可以设置时区
  • sysdate/systimestamp 连个函数用来查询当
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值