惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Security Latest
Security Latest
P
Palo Alto Networks Blog
AWS News Blog
AWS News Blog
NISL@THU
NISL@THU
T
Threatpost
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Latest news
Latest news
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
J
Java Code Geeks
P
Privacy International News Feed
阮一峰的网络日志
阮一峰的网络日志
S
Schneier on Security
博客园 - 聂微东
Project Zero
Project Zero
美团技术团队
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Scott Helme
Scott Helme
I
Intezer
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hacker News: Front Page
S
Security @ Cisco Blogs
博客园 - 司徒正美
O
OpenAI News
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
酷 壳 – CoolShell
酷 壳 – CoolShell
SecWiki News
SecWiki News
月光博客
月光博客
S
Security Affairs
The GitHub Blog
The GitHub Blog
P
Privacy & Cybersecurity Law Blog
S
Secure Thoughts
V
V2EX
S
Securelist
F
Fortinet All Blogs
W
WeLiveSecurity
D
Docker
博客园 - 三生石上(FineUI控件)
Simon Willison's Weblog
Simon Willison's Weblog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
V
Visual Studio Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Webroot Blog
Webroot Blog
Engineering at Meta
Engineering at Meta

博客园 - osbreak

ros2::tf2 QML::qml与c++数据交互 k8s:: Service 管理 deployment postgresql 索引 postgresql 基础运维 PLSQL 触发器 PLSQL 程序包 PLSQL 执行块 PLSQL 基础数据类型 PLSQL oracle安装部署 mysql事务与隔离 mysql慢查询分析 mysql建增删改查 mysql常用总结 (9)libevent 常用设置 (8)libevent 构建libevent http服务,支持文件下载 (7)libevent filter(过滤器) (6)libevent定时器 (5)libevent evbuffer
postgresql 基本类型
osbreak · 2023-12-15 · via 博客园 - osbreak

1.1 整数类型

integer		4字节
smallint	2字节
bigint		8字节

1.2 任意精度类型

NUMERIC(precision, scale)

1.3 浮点数类型

float4		单精度,4字节
float8		双精度,8字节

1.4 金额类型

/* 显示和客户端参数lc monetary有关 */
money	存储空间 8字节,默认有2位小数

/* 显示和客户端参数lc monetary有关 */
> show  lc_monetary;
zh_CN.UTF-8
/* 设置为美元 */
> set lc_monetary='en_US.UTF-8';

/*  numeric、int、bigint型数据类型转换为money  */
> SELECT '12.34'::numeric::money;
¥12.34
> SELECT '12.34'::money::numeric;
12.34

1.5 序列类型

/* 序列类型通常用于自增ID */
smallserial		2字节
serial			4字节
bigserial		8字节

1.6 字符类型

varchar(n)		有长度限制的字符串
char(n)			定长字符串,长度不足则向后填充空白字符
text			不限长度

1.7 枚举类型

枚举类型中指定的值大小写敏感,匹配时值必须完全一致,
CREATE TYPE mood AS ENUM ('sad', ok', 'happy');

输入一个不存在的枚举值将报错 
SELECT * FROM person WHERE current_hood = 'happ':
避免报错的方法把举转换成text 
SELECT * FROM person WHERE current_hood::text = 'happ':
查询枚举的大小,枚举的标签在定义中最大限制由NAMEDATALEN决定,默认是64-1。
select oid,typname from pg_type where typname='mood';
select * from pg_enum where enumtypid=3952969;
select enum_first('sad'::mood);   // 返回此枚举类型的第一个值
select enum_last('sad'::mood);    // 返回此枚举类型的最后一个值
select enum_range('sad'::mood);   // 返回枚举类型的所有值
select enum_range('sad'::mood , 'happy'::mood); // 返回两个枚举类型之间的范围

1.8 网络地址类型

cidr		IPv4 或 IPv6 网络
inet		IPv4 或 IPv6 主机和网络
macaddr		6 字节 MAC 地址

1.9 几何类型

point 二维平面上的点,用(x, y)表示,x、y分别表示x轴、y轴的坐标值
create table test_point (name text, pt point);
INSERT INTO test_point (name, pt) VALUES ('p1', '(1.1, 22.0)');

/* ?- :是否横向齐平(y坐标是否相同) */
SELECT * FROM test_point WHERE pt ?- '(0,22)';
/* ?| :是否纵向齐平(x坐标是否相同) */
SELECT * FROM test_point WHERE pt ?| '(1.1,0)';
circle,圆,用圆心和半径表示,如 (x, y, r)其中(x,y)为圆心,r为半径。
CREATE table test_circle (name text, cc circle);
INSERT INTO test_circle (name, cc) VALUES ('c1', '1, 2, 2');

/* <@ 	点是否位于圆内 */
/* @> 	圆是否包含点 */
SELECT * FROM test_circle WHERE cc @> point '(1,2)';

/* << 	圆是否严格在圆的左侧 */
/* >> 	圆是否严格在圆的右侧 */
 SELECT * FROM test_circle WHERE cc << circle '10,6,3';

/* <-> 	两个圆之间的距离 */
SELECT circle '((0,0),1)' <-> circle '((5,0),1)';
line,线,在坐标系上用Ax + By + C = 0表示,也就是一个二元一次方程,A、B表示斜率,C表示偏移量。
CREATE TABLE test_line (name text, info line);
INSERT INTO test_line VALUES ('c1', '(0, 1), (2, 3)');

?|| 	两条线是否平行
SELECT * FROM test_line WHERE info ?|| '{1,-1,10}';
?-| 	两条线是否垂直
SELECT * FROM test_line WHERE info ?-| '{1,1,10}';
lseg 线段
CREATE TABLE test_lseg (name text, info lseg);
INSERT INTO test_lseg VALUES ('c1', '((0, 1), (2, 3))');
INSERT INTO test_lseg VALUES ('c2', '[(0, 1), (2, 3)]');
box 四变形的对角点对表示
CREATE TABLE test_box (name text, info box);
INSERT INTO test_box VALUES ('c1', '((1, 1), (2, 3))');
path 线路
CREATE TABLE test_path (name text, info path);
INSERT INTO test_path VALUES ('c1', '((0, 1), (2, 3), (4,5), (3, 6))');
INSERT INTO test_path VALUES ('c2', '[(0, 1), (2, 3), (4,5), (3, 6)]');
INSERT INTO test_path VALUES ('c3', '(0, 1, 2, 3, 4, 5, 3, 6)');

2.0 文本搜索类型

to_tsvector:规范化文本中出现的词
> SELECT to_tsvector('a fat cat sat on a mat and ate a fat rat');
'a':1,6,10 'and':8 'ate':9 'cat':3 'fat':2,11 'mat':7 'on':5 'rat':12 'sat':4

https://zhuanlan.zhihu.com/p/105097036