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/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毫秒 |
在
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地址 |
相关文章推荐
- oracle控制文件
- oracle数据恢复----------之oracle各种闪回操作
- oracle----sqlldr用法
- 使用sqlldr将文件中的数据导入到数据库
- SQLLDR
- sql loader
- redis在linux中安装,java端代码jedis和jedisPool
- mysql新建用户及授权
- Redis学习手册
- sqlite3总结篇
- Sql Server Data compression 预估和选择,以及查看成功压缩的数据页
- zabbix实现mysql数据库的监控(四)
- mongoDB的初步配置
- 64位电脑上安装oracle和plsql
- mssqlserver数据导出到另外一个数据库
- MySQL常用操作(笔记比较乱学完整理)
- 使用mysqldump 迁移数据库
- mysql函数、事件示例
- mysql查询数据,根据条件更新到另一张表
- 好久没写了,SQLSERVER服务丢失后怎么办