zoukankan      html  css  js  c++  java
  • psql-03数据类型(1)

    • PostgreSQL支持的数据类型远比其他数据库要多;

    类型输入与转换

    select int '1', date '2015-12-6';
    
    select '1'::int, '2015-12-6'::date;
    

    布尔类型

    • 一字节储存, 表示为t/f;
    t | TRUE
    f | FALSE
    t| tRue
    f | fAlSe
    t | 'true'
    f | 'false'
    t | 't'
    f | 'f'
    t | 'y'
    f | 'n'
    t | 'yes'
    f | 'no'
    t | '1'
    f | '0'      //注意没有数值0,1
    
    • 操作符 and, or, not
    • 比较运算符: is
    expression is true;
    expression is not true;
    expression is unknown;
    .......
    

    数值类型

    名称 存储(字节) 类型 范围
    smallint/int2 2 整数 -215~214
    int 4 整数 -231-230
    bigint/int8 8 整数 -263-261
    numeric/decimal 精确小数 无限制
    real/float4 4 浮点数 6位十进制
    double precision/float8/float 8 浮点数 15位十进制
    serial 4 序列 1~2^21-1
    bigserial 8 序列 1~2^63-1
    money 8 货币 -92233720368547758.08~92233720368547758.07
    • numeric/decimal用于货币计算等要求精确的场合;定义此类型: numeric(precision精度, scale标度)
    • 序列类型用于自增,默认从1开始;
    //定义一个自增id的表
    
    create table ids (id serial primary key);
    
    • 货币类型可以储存固定小数的货币数目,与浮点数不同,保证精度;
    • 货币类型的格式由lc_monetary决定;查看: show lc_monetary;,修改: set lc_monetary = 'en_US.UTF_8'
    • 数学函数;
    • 数学操作符;

    字符串类型

    名称 长度
    varchar(n) 变长,4+实际长度,最大1GB
    char(n) 定长,4+n,不足补空白,最大1GB
    text 变长,无限制

    二进制数据类型

    • 只有一种: bytea;
    • 允许存储二进制字符串,和普通字符串的区别:
      * 可以存储字节零值和其他不可打印的字节;
      * 二进制字符串的处理实际就是处理字节,字符串处理则取决于区域设计; 即二进制字符串适合存储是‘原始字节’的数据, 如图片,而字符串适合文本;

    位串类型

    • bit(n): 必须精准匹配长度,存储过短或过长都会报错;
    • bit varying(n): 变长;

    日期/时间类型

    名称 存储空间(字节) 描述 最低值 最高值 分辨率
    date 4 只用于日期 4713BC 5874897AD 1天
    interval[(p)] 12 时间间隔 -178000000年 178000000年 1毫秒
    time[(p)] 8 只用于一日内时间 00:00:00 24:00:00 1毫秒
    time[(p)] with the zone 12 带时区 00:00:00+1459 24:00:00-1459 1毫秒
    timestamp[(p)] 8 日期和时间 4713BC 5874897AD 1毫秒
    timestamp[(p)] with the zone 12 带时区 4713BC 5874897AD 1毫秒
    • 可选精确值p指明小数位数,范围[0~6],默认6位;
    • SQL中任何日期时间的文本输入都需要由类型加单引号字符串组成: type [(p)] 'value';
    • 日期date可以以很多格式输入,常用格式与表示格式为: year-month-day;
    • 时间字符串常用输入格式和表示格式为: hh:mm:ss

    枚举类型

    • 一个包含一系列有序的静态值集合的数据类型; 输入的字符串不在枚举类型之间会报错;
    • 大小敏感,枚举值4字节,其文本长度至少63字节;
    • 使用前先要用create type创建一个枚举类型
    create type week as enum ('sum', 'mon', 'tues', 'wed', 'thur', 'fri'. 'sat');
    create table duty(name text, day week);
    insert into  duty values('jinks', 'mon');
    
    • 使用dT查看枚举类型的定义;
    • 枚举类型具体值都是定义在表pg_enum中,可以直接操作;

    几何类型

    名称 存储空间(字节) 描述 形式
    point 16 (x,y)
    line 32 直线 ((x1,y1),(x2,y2))
    lseg 32 线段 ((x1,y1),(x2,y2))
    box 32 矩形 ((x1,y1),(x2,y2))
    path 16+16*n 闭合路径 ((x1,y1)...)
    path 16+16*n 开发路径 [(x1,y1)...]
    polygon 40+16n 多边形 ((x1,y1)...)
    circle 24 <(x,y),r>

    网络地址类型

    名称 存储空间(字节) 描述
    cidr 7/19 IPv4或IPv5的网络地址
    inet 7/19 IPv4或IPv5的网络地址或主机地址
    macaddr 6 以太网MAC地址
  • 相关阅读:
    hdu3746 KMP的next数组应用,求项链首尾项链循环
    hdu4067 费用流(混合欧拉的宽展和延伸)
    hdu4067 费用流(混合欧拉的宽展和延伸)
    hdu1501 记忆化搜索
    hdu1501 记忆化搜索
    hdu1316 大数
    hdu1316 大数
    hdu4411 经典费用里建图
    hdu4411 经典费用里建图
    hdu4768 非常规的二分
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/5012810.html
Copyright © 2011-2022 走看看