全文索引
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 尚未实现该类型。
相关推荐
GiST(Generalized Search Tree,通用搜索树)索引是一种灵活的索引结构,可以用于多种复杂的数据类型,如多维空间数据、文本相似度查询等。 - **特点**: - 支持多种索引策略,如二维几何类型的比较操作符(如`, ...
#### 七、数据类型 - **数值类型**: - 整型:`smallint`, `integer`, `bigint`,分别占用2、4、8字节的空间。 - 浮点型:`decimal`, `numeric`, `real`, `double precision`。 以上是基于给定文档内容总结出的...
#### 二、PostgreSQL数据分区方法 ##### 本地表分区 - **定义**: PostgreSQL通过**继承表**的概念来实现数据分区。继承表和主表以及继承表之间是完全独立的存储结构,可以单独指定表空间,甚至允许字段不完全一致。...
PostgreSQL作为一种功能强大的开源关系型数据库系统,提供了多种方式进行数据类型转换,其中`CAST`是一种常用的显式转换方法。 #### CAST操作的基础用法 CAST的基本语法格式如下: ```sql CAST(expression AS ...
在PostgreSQL中,可以使用`CREATE TABLE`语句定义表结构,包括数据类型(如INT、VARCHAR、DATE等)、主键约束、外键约束等。例如: ```sql CREATE TABLE employees ( id SERIAL PRIMARY KEY, name VARCHAR(50), ...
- **数据类型**:在创建表时,选择合适的数据类型对于确保数据的准确性和提高查询效率至关重要。文档中列出了多种数据类型,包括但不限于: - `TINYINT`:用于存储较小的整数值。 - `SMALLINT`:用于存储更大的...
- **2.1 Berkeley POSTGRES项目**:该项目起源于20世纪80年代末期,最初由加州大学伯克利分校发起,旨在创建一个支持复杂数据类型和操作的对象关系型数据库系统。 - **2.2 Postgres95**:随着项目的演进,在1994年...
它支持多种数据类型,包括复杂的数据结构,如数组和JSON对象,并且具备GIS(地理信息系统)功能的支持。PostgreSQL能够很好地与各种编程语言进行交互,例如Python、Java、C#等。 #### 二、PostgreSQL基本操作 在...
3. **数学和转换函数**:如ROUND、TRUNC、TO_CHAR、TO_DATE等,这些在数据转换和计算中十分常用。 4. **游标和PL/SQL兼容性**:尽管PostgreSQL原生支持PL/pgSQL,但orafce提供了更接近Oracle的PL/SQL语法,包括游标...
它支持各种数据库操作,如查询、事务处理、参数化命令和类型映射,以确保高效、安全的数据交互。 Mono.Security.dll是另一个重要的组件,虽然在现代.NET Framework版本中其部分功能已被替换,但在较旧的.NET ...
2. **无日志表(Unlogged Table)**:无日志表是一种特殊的表类型,它的修改不写入WAL(Write-Ahead Log),因此写入速度极快。然而,这种表在服务器异常重启后会丢失所有数据,所以仅适用于临时或允许丢失数据的...
PostgreSQL数据库支持多种数据类型,包括数组类型。例如,我们可以创建一个名为`func_arr_update`的自定义函数,它接受一个整数数组`_int4`作为参数。这个函数的目的是遍历输入的整数数组,如果数组中的元素与`t_...
2. ADO(ActiveX 数据对象) ADO是建立在OLE DB之上的更高级别的接口,它提供了更简单的编程模型。ADO允许直接访问数据库,或者通过OLE DB提供程序间接访问,即使数据库本身不直接支持OLE DB。 使用ADO时,需要包含...
MyBatis Generator (MBG) 是一个基于Java的代码生成器,它通过读取数据库元数据,可以自动生成MyBatis的XML映射文件、对应的Java实体类以及DAO接口和实现类。这不仅减少了开发者的工作量,也使得代码更加规范和易于...
在"数据库"选项卡中,选择"PostgreSQL"作为数据库类型。接着,你需要填写以下信息: 1. **主机名**:PostgreSQL服务器的IP地址或域名。 2. **端口**:默认情况下,PostgreSQL监听5432端口。 3. **数据库名**:你要...
7. **数据库特性**:PostgreSQL支持事务、并发控制、视图、存储过程、触发器、索引、全文搜索、JSON/JSONB数据类型、GIS支持等高级特性。9.2版本引入了并行查询、改进的统计信息收集等功能。 8. **扩展与社区**:...
'dbdriver' => 'postgre', // 数据库驱动,例如:mysql, postgre, mssql, sqlite 等 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir...