全文索引
tsvector tsvector[] tsquery tsquery[]
日期
1.inverval的输入格式如下:
[@] quantity unit [quantity unit...] [direction] 或者 P [ years-months-days ] [ T hours:minutes:seconds ]
其中@标记是可选的,quantity是一个数字。
unit可以是microsecond,millisecond,second, minute,hour,day,week, month,year,decade,century,millennium或这些单位的缩写或复数。
direction可以是ago或为空。
第一种格式例如:'1 day 12 hours 59 min 10 sec' 或者省略单位'1-3 3 4:05:06' 。第二种格式如:P0001-02-03T04:05:06 或者P1Y2M3DT4H5M6S。
2.关于abstime:
abstime和reltime类型是低分辨率类型, 它们被用于系统内部。我们反对你使用这些类型, 因为这些旧类型的部分或全部可能会在未来的版本里消失。
具体格式类似 timestamp [ (p) ] with time zone
timestamp [ (p) ] [ without time zone ] | 8字节 |
2003-04-12 04:05:06.123457 |
日期和时间(无时区) | 4713 BC | 294276 AD | 1微秒/14位 |
timestamp [ (p) ] with time zone | 8字节 | 2003-04-12 16:05:06.123457+08 | 日期和时间,带时区 | 4713 BC | 294276 AD | 1微秒/14位 |
date | 4字节 | 1999-01-08 00:00:00 | 只用于日期 | 4713 BC | 5874897 AD | 1天 |
time [ (p) ] [ without time zone ] | 8字节 | 04:05:06.123457 | 只用于时间 | 00:00:00 | 24:00:00 | 1微秒/14位 |
time [ (p) ] with time zone | 12字节 | 04:05:06.123457-04 |
时间带时 区末位四舍五入 |
00:00:00+1459 | 24:00:00-1459 | 1微秒/14位 |
interval [ fields ] [ (p) ] | 12字节 | 2 years 3 mons 1 day 12:59:10 | 时间间隔 | -178000000年 | 178000000年 | 1微秒/14位 |
abstime | 2003-04-12 16:05:06+08 | 日期和时间带时区 |
几何类型
point | 16字节 | 平面中的点 | (x,y) |
line | 32字节 | (无穷)直线(未完全实现) | ((x1,y1),(x2,y2)) |
lseg | 32字节 | (有限)线段 | ((x1,y1),(x2,y2)) |
box | 32字节 | 矩形 | ((x1,y1),(x2,y2)) |
path | 16+16n字节 | 闭合路径(与多边形类似 | ((x1,y1),...) |
path | 16+16n字节 | 开放路径 | [(x1,y1),...] |
polygon | 40+16n字节 | 多边形(与闭合路径相似) | ((x1,y1),...) |
circle | 24字节 | 圆 | <(x,y),r> (圆心和半径) |
网络地址
inet类型:
该类型的输入格式是address/y, 这里的address是IPv4或者IPv6地址, y是子网掩码的二进制位数。 如果/y部分未填, 则子网掩码对IPv4而言是32,对IPv6而言是128。
所以该值表示只有一台主机。显示时,如果该值表示只有一台主机, /y将不会显示。 示例:'::10.2.3.4/4'或者'192.168.1.100'或者'::10.2.3.4'
cidr | 7或19字节 | IPv4或IPv6网络 | |
inet | 7或19字节 | IPv4 或 IPv6 网络和主机 | |
macaddr | 6字节 | MAC 地址 |
uuid
1.如果字段指定了该类型,不填写的话默认不会自动生成uuid,需要填写uuid格式的字符串。
2.UUID被写成一个小写十六进制数字的序列,由分字符分成几组,特别是一组8位数字+3组4位数字+一组12位数字,总共32个数字代表128位。
3.PostgreSQL同样支持以其他方式输入:
A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11
a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
uuid uuid[]
对象标识符
我的理解就是按照系统表的一套转化规则获取某张系统表的oid,举两个例子应该就能明白了。
SELECT * FROM pg_attribute WHERE attrelid = 'mytable'::regclass;
查看pg_class的表结构,发现表结构里面有个类型为name字段名称为relname的一个字段。
--> 'mytable'::regclass 就相当于SELECT oid FROM pg_class WHERE relname = 'mytable'
下面这个这个例子规则就会复杂些了。
select 'sum(int4)'::regprocedure 同样查看pg_proc的表结构select * from pg_proc 发现里面有个类型为name的proname字段
但是这次不同了,这个proname里面没有sum(int4)只有sum,参数类型应该是在这张表里面别的字段控制的。
所以说它内部有一套规则,这些类型我们使用::还是相当方便的。
oid | 任意 | 数字化的对象标识符 | 564182 |
regproc | pg_proc | 函数名字 | sum |
regprocedure | pg_proc | 带参数类型的函数 | sum(int4) |
regoper | pg_operator | 操作符名 | + |
regoperator | pg_operator | 带参数类型的操作符 | *(integer,integer) or -(NONE,integer) |
regclass | pg_class | 关系名 | pg_type |
regtype | pg_type | 数据类型名 | integer |
regconfig | pg_ts_config | 全文检索配置 | english |
regdictionary | pg_ts_dict | 全文检索路径 | simple |
输入格式如下:
update table_objsymbol set "regproc" = 'lastval'::regproc
update table_objsymbol set "regdictionary" = 'simple'::regdictionary
update table_objsymbol set "txid_snapshot" = '10:20:10'
update table_objsymbol set "tid" = '(3,4)'
xid xid[] (事务(缩写xact)标识符)
cid cid[] (命令标识符)
tid tid[] (行标识符)
oidvector oidvector[]
txid_snapshot txid_snapshot[]
范围类型
范围类型是相当有用的,它表示一个集合,postgre里面提供了很多函数和操作符来使用这个集合, 如下面的几种操作,但是有一点需要注意的范围的集合是左闭右开的。
-- 值是否在该范围内
SELECT int4range(10, 20) @> 15;
-- 判断是否有交集
SELECT numrange(11.1, 22.2) && numrange(20.0, 30.0);
-- 找出区间的上边界值
SELECT upper(int8range(15, 25));
-- 计算集合的交集
SELECT int4range(10, 20) * int4range(15, 25);
-- 判断是否为空集
SELECT isempty(numrange(1, 5));
范围的格式如下:
(lower-bound,upper-bound)
(lower-bound,upper-bound]
[lower-bound,upper-bound)
[lower-bound,upper-bound]
empty
范围类型有下面几种:
-
int4range — Range of integer
-
int8range — Range of bigint
-
numrange — Range of numeric
-
tsrange — Range of timestamp without time zone
-
tstzrange — Range of timestamp with time zone
-
daterange — Range of date
其它类型 先列出来,有些还没有找到使用方法。
-- pg_lsn pg_lsn[]
-- aclitem 权限控制,输入格式为'user1=r'。user1为自己定义的用户,后面的权限'arwdDxtXUCTc'只能是其中一种。
-- 查询某字段类型在系统表或者用户表中是否存在
select oid,typname from pg_type where typname = 'pg_node_tree';
select attrelid::regclass,attname,atttypid from pg_attribute where atttypid=194
--pg_node_tree insert --ERROR: cannot accept a value of type pg_node_tree
select "typdefaultbin" from "pg_type" where "typdefaultbin" is not null
--regoper,refcursor,tinterval smgr 系统表中不存在该字段
cstring[] pseudo-type 伪列,用户不能使用该列。
gtsvector gtsvector_in not implemented 尚未实现该类型。
相关推荐
postgre学习文档2
Postgre SQL 9.4安装包,用于Postgre SQL的安装
Postgre JDBC驱动Postgre JDBC驱动Postgre JDBC驱动
nacos_postgre.sql
Postgregis+PostGIS,开源的空数据库。
QGIS软件连接Postgre数据库截图操作
VC访问数据库有两种方法:一种是使用CDatabase和CRecord对象;另一种是利用ADO技术。 这个程序实现了Postgre数据库的读写,以及存储过程的调用。
postgre最新版本手册,数据库使用手册
易语言源码 Postgre SQL 连接池。基于 http://www.sanye.cx/?id=12020 的源码 二次开发...封装了一些高级方法..包括,连接池+查询缓存+不知道真假的储存过程+慢查询记录。使用源码使用了E2EE支持库(模块部分思路借鉴...
postgre安装文档
设置Postgre数据库远程连接服务的两种方式,截图教程。
postgre8.4安装包 数据库 osm数据 之后可以打开osm格式文件
2. SQL 语言 2.1. 介绍 2.2. 概念 2.3. 创建新表 2.4. 向表中添加行 2.5. 查询一个表 2.6. 在表之间连接 2.7. 聚集函数 2.8. 更新 2.9. 删除 3. 高级特性 3.1. 介绍 3.2. 视图 3.3. 外键 3.4. 事务 3.5. 继承 3.6. ...
postgre自动生成代码 ,mybatis xml dao service 这个好用,dto
net访问mysql、postgre和sqlserver
postgre最新驱动
MsSql+Mysql+oracle+Postgre驱动jar包
vs调用postgre示例,使用的是vs2010,一个简单的控制台程序demo,本地运行通过
Postgre SQL数据库安全防护.pptx