第四章:德哥之PostgreSQL应用开发指南2

文章目录

1.数据类型、操作符

pg中所有的数据类型
postgres=# select * from pg_type ;
postgres=# \d pg_type;

增加一个表,会增加一个表类型,这是一个复合类型,数据输入输出接口走的是record_in 和record_out
postgres=# \d table1;
postgres=# select * from pg_type where typname = 'table1';
  oid  | typname | typnamespace | typowner | typlen | typbyval | typtype | typcategory | typispreferred | typisdefined | typdelim | typrelid | typelem | typarray | typinput  | typoutput  | typreceive  |   typsend   | typmodin | typ
modout | typanalyze | typalign | typstorage | typnotnull | typbasetype | typtypmod | typndims | typcollation | typdefaultbin | typdefault | typacl
-------+---------+--------------+----------+--------+----------+---------+-------------+----------------+--------------+----------+----------+---------+----------+-----------+------------+-------------+-------------+----------+----
-------+------------+----------+------------+------------+-------------+-----------+----------+--------------+---------------+------------+--------
 17314 | table1  |         2200 |       10 |     -1 | f        | c       | C           | f              | t            | ,        |    17312 |       0 |    17313 | record_in | record_out | record_recv | record_send | -        | -
       | -          | d        | x          | f          |           0 |        -1 |        0 |            0 |               |            |

2.内置数据类型

数值
货币
字符串
字节流:二进制的数据叫字节流,单位Byte,可存1GB
时间
布尔
枚举
平面几何:点线面


网络地址:可以用掩码存一串地址
比特串,比特串单位是bit
全文检索
UUID
XML
JSON
数组
复合类型:record类型

range
域:限制原有数据类型返回
大对象,可存4TB,类似字节流
Itree,树状数据类型
hstore:存若干kv,支持检索,建议用json代替
cube:用于图像向量相似计算

扩展类型
图像:imgsmlr,https://github.com/postgrespro/imgsmlr,类似图像
geometry、geography
轨迹
raster
近似
roaringbitmap:压缩bitmap
pair
扩展插件:eg:datasketches使用近似算法,https://pgxn.org/dist/datasketches/
postgres=# create extension ltree
CASCADE      VERSION      WITH SCHEMA
postgres=# create extension ltree ;
CREATE EXTENSION
postgres=# \dT ltree;
      List of data types
 Schema | Name  | Description
--------+-------+-------------
 public | ltree |
(1 row)

a.b的层级比a.b.c.d.e的层级要高
postgres=# select ltree 'a.b.c.d' <@ ltree 'a.b';
 ?column?
----------
 t
(1 row)
postgres=# select ltree 'a.b.c.d' @> ltree 'a.b';
 ?column?
----------[添加链接描述](https://www.postgresql.org/docs/11/cube.html)
 f
(1 row)

2.数据库对象

SQL Commands

CREATE DATABASE — create a new database
把业务数据放到一个databse,并用不同SCHEMA来区分,公用的schema放在public里面(public也是schema的一个名字);
不同的schema可以创建同名的表
CREATE SCHEMA — define a new schema
每个表空间对应一个文件系统的目录,即物理存储位置
CREATE TABLESPACE — define a new tablespace


上一篇:postgresql 安装结束之前 The database cluster initialisation failed


下一篇:presto的使用