`

Postgre常用数据类型二

 
阅读更多

全文索引

   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'

 

名字 存储空间 s 描述
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

    GiST(Generalized Search Tree,通用搜索树)索引是一种灵活的索引结构,可以用于多种复杂的数据类型,如多维空间数据、文本相似度查询等。 - **特点**: - 支持多种索引策略,如二维几何类型的比较操作符(如`, ...

    postgre数据库学习文档

    #### 七、数据类型 - **数值类型**: - 整型:`smallint`, `integer`, `bigint`,分别占用2、4、8字节的空间。 - 浮点型:`decimal`, `numeric`, `real`, `double precision`。 以上是基于给定文档内容总结出的...

    postgre学习文档3

    #### 二、PostgreSQL数据分区方法 ##### 本地表分区 - **定义**: PostgreSQL通过**继承表**的概念来实现数据分区。继承表和主表以及继承表之间是完全独立的存储结构,可以单独指定表空间,甚至允许字段不完全一致。...

    postgresql中的cast

    PostgreSQL作为一种功能强大的开源关系型数据库系统,提供了多种方式进行数据类型转换,其中`CAST`是一种常用的显式转换方法。 #### CAST操作的基础用法 CAST的基本语法格式如下: ```sql CAST(expression AS ...

    PostgreSQL 实用实例参考

    在PostgreSQL中,可以使用`CREATE TABLE`语句定义表结构,包括数据类型(如INT、VARCHAR、DATE等)、主键约束、外键约束等。例如: ```sql CREATE TABLE employees ( id SERIAL PRIMARY KEY, name VARCHAR(50), ...

    SQL常用语法基础\SQL常用语法基础.doc

    - **数据类型**:在创建表时,选择合适的数据类型对于确保数据的准确性和提高查询效率至关重要。文档中列出了多种数据类型,包括但不限于: - `TINYINT`:用于存储较小的整数值。 - `SMALLINT`:用于存储更大的...

    PostgreSQL 8.4官方开发文档A4

    - **2.1 Berkeley POSTGRES项目**:该项目起源于20世纪80年代末期,最初由加州大学伯克利分校发起,旨在创建一个支持复杂数据类型和操作的对象关系型数据库系统。 - **2.2 Postgres95**:随着项目的演进,在1994年...

    PostgreSQL数据库的基本使用

    它支持多种数据类型,包括复杂的数据结构,如数组和JSON对象,并且具备GIS(地理信息系统)功能的支持。PostgreSQL能够很好地与各种编程语言进行交互,例如Python、Java、C#等。 #### 二、PostgreSQL基本操作 在...

    postgresql 兼容 oracle 函数

    3. **数学和转换函数**:如ROUND、TRUNC、TO_CHAR、TO_DATE等,这些在数据转换和计算中十分常用。 4. **游标和PL/SQL兼容性**:尽管PostgreSQL原生支持PL/pgSQL,但orafce提供了更接近Oracle的PL/SQL语法,包括游标...

    基于.net framework 4.5 的postgresql 的连接api(Npgsql.dll,Mono.Security.dll)

    它支持各种数据库操作,如查询、事务处理、参数化命令和类型映射,以确保高效、安全的数据交互。 Mono.Security.dll是另一个重要的组件,虽然在现代.NET Framework版本中其部分功能已被替换,但在较旧的.NET ...

    Postgre数据库Insert 、Query性能优化详解

    2. **无日志表(Unlogged Table)**:无日志表是一种特殊的表类型,它的修改不写入WAL(Write-Ahead Log),因此写入速度极快。然而,这种表在服务器异常重启后会丢失所有数据,所以仅适用于临时或允许丢失数据的...

    Mybatis调用PostgreSQL存储过程实现数组入参传递

    PostgreSQL数据库支持多种数据类型,包括数组类型。例如,我们可以创建一个名为`func_arr_update`的自定义函数,它接受一个整数数组`_int4`作为参数。这个函数的目的是遍历输入的整数数组,如果数组中的元素与`t_...

    VC访问数据库技术的方法实例

    2. ADO(ActiveX 数据对象) ADO是建立在OLE DB之上的更高级别的接口,它提供了更简单的编程模型。ADO允许直接访问数据库,或者通过OLE DB提供程序间接访问,即使数据库本身不直接支持OLE DB。 使用ADO时,需要包含...

    MyBatis Generator.rar

    MyBatis Generator (MBG) 是一个基于Java的代码生成器,它通过读取数据库元数据,可以自动生成MyBatis的XML映射文件、对应的Java实体类以及DAO接口和实现类。这不仅减少了开发者的工作量,也使得代码更加规范和易于...

    DBeaver使用教程

    在"数据库"选项卡中,选择"PostgreSQL"作为数据库类型。接着,你需要填写以下信息: 1. **主机名**:PostgreSQL服务器的IP地址或域名。 2. **端口**:默认情况下,PostgreSQL监听5432端口。 3. **数据库名**:你要...

    postgresql-9.2.24-1-windows-x64-binaries.zip

    7. **数据库特性**:PostgreSQL支持事务、并发控制、视图、存储过程、触发器、索引、全文搜索、JSON/JSONB数据类型、GIS支持等高级特性。9.2版本引入了并行查询、改进的统计信息收集等功能。 8. **扩展与社区**:...

    CodeIgniter针对数据库的连接、配置及使用方法

    'dbdriver' =&gt; 'postgre', // 数据库驱动,例如:mysql, postgre, mssql, sqlite 等 'dbprefix' =&gt; '', 'pconnect' =&gt; FALSE, 'db_debug' =&gt; (ENVIRONMENT !== 'production'), 'cache_on' =&gt; FALSE, 'cachedir...

Global site tag (gtag.js) - Google Analytics