PostgreSQL基础

news/2024/10/12 0:27:00

1.数据类型

1.4 布尔类型

bool

1.5 网络地址类型

  • cidr:对ip和子网掩码合法性做校验,输出时会带子网掩码
  • inet:对ip做校验,输出时有可能带子网掩码
  • macaddr和macaddr8:MAC地址

1.5.1 操作符

1.5.2 函数

  • host: 取ip地址 SELECT host(cidr '192.168.2.0/24')
  • text: 取ip和子网掩码 SELECT text(cidr '192.168.2.0/24')
  • netmask:取子网掩码 SELECT netmask(cidr '192.168.2.0/24')

1.6 数组

插入方式:

  • {val1,val2}:
  • array函数: array[1,2,3]
    查询: 下标1-n SELECT d_array[1] FROM test

1.6.1 函数

  • 追加: SELECT array_append(ARRAY[1,2,3], 4) / SELECT ARRAY[1,2,3] || 4
  • 删除: SELECT array_remove(ARRAY[1,2,3], 2)
  • 更新: update test set d_array[2] = 3 / update test set d_array = array[1,2]
  • 数组纬度: SELECT array_ndims(ARRAY[1,2,3])
  • 数组长度: SELECT array_length(ARRAY[1,2,3], 1) // 第二个参数为纬度,二维数组填2
  • 元素位置: SELECT array_position(ARRAY[1,2,3], 1)
  • 元素替换: SELECT array_replace(ARRAY[1,2,3], 1,3)
  • 以字符串输出: SELECT array_to_string(ARRAY[1,2,null], ',', '0') // 第二参数为分隔符,第三个为替换null的数

1.6.2 操作符

1.7 范围类型

2.SQL高级特性

2.1 WITH查询

CTE:Common Table Expression
相当于中间表

WITH r as (SELECT generate_series(3)
)
SELECT * from r

递归使用:

// 1-5 之和
WITH recursive t (x) as (SELECT 1UNIONSELECT x + 1FROM tWHERE x < 5
)
SELECT sum(x) FROM t;

2.2 批量插入

  • INSERT INTO table_name SELECT...FROM source_table
  • INSERT INTO tbl_batch3(id, info) VALUES (1, 'a'), (2, 'b'), (3, 'c');
  • COPY: COPY pguser.tbl_batch4 FROM '/home/pg10/tbl_batch4.txt';

2.3 RETURNING

  • 插入:INSERT INTO test(a_boolean) VALUES ('f') RETURNING *;
  • 更新:UPDATE test SET a_boolean='f' RETURNING *;
  • 删除:DELETE FROM test RETURNING *;

2.4 UPSERT

数据插入过程中数据冲突的情况,比如违反用户自定义约束

INSERT INTO user_logins(user_name, login_cnt)
VALUES ('matiler',1), ('francs',1)
ON CONFLICT(user_name)
DO UPDATE SET
login_cnt=user_logins.login_cnt+EXCLUDED.login_cnt, last_login_time=now();
  • 冲突但是不做
INSERT INTO user_logins(user_name, login_cnt)
VALUES ('tutu',1), ('francs',1)
ON CONFLICT(user_name) DO NOTHING;

2.5 数据抽样

order by random 效率低

  • SYSTEM抽样方式
    SYSTEM抽样方式为随机抽取表上数据块上的数据,理论上被抽样表的每个数据块被检索的概率是一样的
查询总数的0.01条
SELECT * FROM test_sample TABLESAMPLE SYSTEM(0.01);
  • BERNOULLI抽样方式
    BERNOULLI抽样方式随机抽取表的数据行,并返回指定百分比数据,BERNOULLI抽样方式基于数据行级别,理论上被抽样表的每行记录被检索的概率是一样的,因此BERNOULLI抽样方式抽取的数据相比SYSTEM抽样方式具有更好的随机性,但性能上相比SYSTEM抽样方式低很多
 SELECT * FROM test_sample TABLESAMPLE BERNOULLI (0.01);

2.6 聚合函数

  • string_add: 将输出的结果集连接成字符串 SELECT country, string_agg(city, ', ') FROM city GROUP BY country;
  • array_agg: 返回的类型为数组 SELECT country, array_agg(city) FROM city GROUP BY country;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/53446.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

引用变量

在C++ Primer Plus中,最开始介绍的是变量和引用变量。变量实际就包含了左值类型的变量和右值类型的变量。 引用变量 引用是C++引入的概念,引用变量是已定义的变量的别名(alias)。引用的创建示例如下: int a = 10; int &b = a;引用在定义时必须初始化,这点和const限定…

MURF1640CT-ASEMI智能AI专用MURF1640CT

MURF1640CT-ASEMI智能AI专用MURF1640CT编辑:ll MURF1640CT-ASEMI智能AI专用MURF1640CT 型号:MURF1640CT 品牌:ASEMI 封装:ITO-220AB 批号:最新 最大平均正向电流(IF):16A 最大循环峰值反向电压(VRRM):400V 最大正向电压(VF):0.95V~1..90V 工作温度:-50C~150C 反…

prometheus学习笔记之Grafana安装与配置

一、Grafana简介 grafana是⼀个可视化组件,⽤于接收客户端浏览器的请求并连接到prometheus查询数据,最后经过渲染并在浏览器进⾏体系化显示,需要注意的是, grafana查询数据类似于zabbix⼀样需要⾃定义模板,模板可以⼿动制作也可以导⼊已有模板。 Grafana的基础架构主要包括…

PHPStudy 面板在使用过程中可能会遇到各种错误

面板在使用过程中可能会遇到各种错误。这里列出一些常见的问题及其解决方法: 启动问题启动失败描述:面板启动时失败,无法正常工作。 解决方法:检查面板的日志文件,查找启动失败的具体原因。 确认服务器资源是否足够。 重新安装或更新到最新版本的 PHPStudy。网站问题网站运…

MAMP 是一款在 macOS 上搭建本地 Web 开发环境的工具

MAMP 是一款在 macOS 上搭建本地 Web 开发环境的工具,包括 Apache、MySQL 和 PHP。以下是 MAMP 中一些常见的问题及其解决方法: 安装问题安装后提示已损坏描述:安装 MAMP 后提示应用已损坏,无法打开。 解决方法:关闭系统完整性保护(SIP)。 从可信来源重新下载安装包。 使…

WAMP(Windows + Apache + MySQL + PHP)是在 Windows 系统上搭建本地 Web 开发环境的一种方式

WAMP(Windows + Apache + MySQL + PHP)是在 Windows 系统上搭建本地 Web 开发环境的一种方式。下面是 WAMP 中一些常见的问题及其解决方法: 启动问题启动后 WAMP 托盘图标显示橙色描述:WAMP 启动后托盘图标显示为橙色,表示某些服务没有正常启动。 解决方法:检查 Apache 或…

启动后 WAMP 托盘图标显示橙色怎么办

启动后 WAMP 托盘图标显示橙色描述:WAMP 启动后托盘图标显示为橙色,表示某些服务没有正常启动。 解决方法:检查 Apache 或 MySQL 服务是否成功启动。 如果是端口冲突,尝试更改 Apache 的端口号。 如果是配置问题,检查 httpd.conf 和 my.ini 文件。扫码添加技术【解决问题】…

WAMP 安装完毕后,PHP 文件无法正常运行怎么办

PHP 文件无法运行描述:WAMP 安装完毕后,PHP 文件无法正常运行。 解决方法:确认 PHP 文件是否放在了 www 目录下。 检查 Apache 的配置文件 httpd.conf,确保 PHP 模块已正确加载。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、…