您的位置:首页 > 数据库

psql-03数据类型(1)

2015-12-02 13:54 423 查看
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/int22整数-215~214
int4整数-231-230
bigint/int88整数-263-261
numeric/decimal精确小数无限制
real/float44浮点数6位十进制
double precision/float8/float8浮点数15位十进制
serial4序列1~2^21-1
bigserial8序列1~2^63-1
money8货币-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)
: 变长;

日期/时间类型

名称存储空间(字节)描述最低值最高值分辨率
date4只用于日期4713BC5874897AD1天
interval[(p)]12时间间隔-178000000年178000000年1毫秒
time[(p)]8只用于一日内时间00:00:0024:00:001毫秒
time[(p)] with the zone12带时区00:00:00+145924:00:00-14591毫秒
timestamp[(p)]8日期和时间4713BC5874897AD1毫秒
timestamp[(p)] with the zone12带时区4713BC5874897AD1毫秒
可选精确值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
中,可以直接操作;

几何类型

名称存储空间(字节)描述形式
point16(x,y)
line32直线((x1,y1),(x2,y2))
lseg32线段((x1,y1),(x2,y2))
box32矩形((x1,y1),(x2,y2))
path16+16*n闭合路径((x1,y1)...)
path16+16*n开发路径[(x1,y1)...]
polygon40+16n多边形((x1,y1)...)
circle24<(x,y),r>

网络地址类型

名称存储空间(字节)描述
cidr7/19IPv4或IPv5的网络地址
inet7/19IPv4或IPv5的网络地址或主机地址
macaddr6以太网MAC地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: