首页 > 数据库 >PostgreSQL基础

PostgreSQL基础

时间:2024-08-27 13:47:41浏览次数:8  
标签:抽样 PostgreSQL 基础 user test array ARRAY SELECT

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 1
    UNION
    SELECT x + 1
    FROM t
    WHERE 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;

标签:抽样,PostgreSQL,基础,user,test,array,ARRAY,SELECT
From: https://www.cnblogs.com/lwx11111/p/18382566

相关文章

  • SQL基础综合练习题(39题)
    https://download.csdn.net/download/ruyigongfang/89681313可以用这个文件的建表语句在自己的pysql执行,就有该练习用的表。https://download.csdn.net/download/ruyigongfang/89681312该链接是只有题没有答案的文档。所用到的表:student(学生表):sno(学号),sname(学生姓名),ssex(学......
  • 【Linux入门】shell基础篇——变量与运算
    文章目录shell中的变量概述变量的作用Shell变量名与变量值变量名变量值变量的作用范围局部变量(LocalVariables)全局变量(GlobalVariables)注意变量的类型1.环境变量(EnvironmentVariables)2.位置变量(PositionalVariables)3.预定义变量(PredefinedVariables)补充:自定......
  • (软件测试)基础3
    1.用例执行添加一列为实际结果:出现上述情况:此时不通过!!!最耗时:等待bug回归2.缺陷缺陷介绍:问题不等于错误   任何问题都叫缺陷,问题并不代表错误测试:最终站在用户的角度缺陷产生原因:从需求产生,直至发布上线,从中都有可能有缺陷的产生(木桶效应)设计:架......
  • 计算机网络信息安全,零基础入门到精通,收藏这一篇就够了!
    01网络安全概述安全性威胁计算机网络通讯过程中,主要有两种威胁。•主动攻击•被动攻击具体攻击的位置如下图。从汽车电子的角度举个例子,大部分的软件工程师,应该都干过下面两件事。•被动攻击大家都做过的,“对标,抄袭”买来对标的车,找个一分二的线,不知道从哪弄来的......
  • 如何考取PostgreSQL认证证书?
    PostgreSQL数据库炙手可热,国内知名的腾讯云TDSQL、阿里云PolarDB都有PostgreSQL版本的产品,还有人大金仓、华为opengauss、翰高数据库等都跟PostgreSQL有关系,所以考一个PostgreSQL认证非常有必要。要获得PostgreSQL认证,可以从以下几个方面着手:一、了解PostgreSQL认证体系PostgreS......
  • Java基础-学习笔记14
    14集合Collection、Map第一部分Collection的框架体系1)可以动态保存任意多个对象,使用比较方便2)提供了一系列方便的操作对象的方法:add、remove、set、get等3)使用集合添加、删除新元素简单便捷。集合Collection主要是两组:单列集合,双列集合List、Set是存储单列的数据......
  • JuiceFS元数据引擎PostgreSQL
    使用PostgreSQL作为JuiceFS元数据引擎,各表的含义和字段做一个简单归纳juicefs数据库用于存储juicefs文件信息postgres=#\lListofdatabasesName|Owner|Encoding|LocaleProvider|Collate|......
  • 手把手教你—搭建Vue3企业级项目规范+基础封装配置
    前言如何搭建一个简易脚手架。核心需求是输入项目命令,clone准备好的项目模板,拉到本地后,装一下依赖,就可以直接开发了。不用每次都花大量时间,去搭建项目规范和做必要的封装配置。经过简单寻找后,发现没有符合自己预期的。从0到1搭建一个具备完善规范的Vue3开发模板✨,并手把手带大......
  • 10种常见的黑客攻击、满足你的黑客梦,零基础入门到精通,收藏这一篇就够了
    1.跨站脚本(XSS)跨站脚本攻击是最为常见的一类网络攻击,它针对的是网站的用户,而不是web应用本身。恶意黑客在有漏洞的网站里注人一段代码,然后网站访容执行这段代码。此类代码可以人侵用户账户,激活木马程序,或者修改网站内容,诱骗用户给出私人信息。​设置web应用防火墙(W......
  • 零基础学习人工智能—Python—Pytorch学习(九)
    前言本文主要介绍卷积神经网络的使用的下半部分。另外,上篇文章增加了一点代码注释,主要是解释(w-f+2p)/s+1这个公式的使用。所以,要是这篇文章的代码看不太懂,可以翻一下上篇文章。代码实现之前,我们已经学习了概念,在结合我们以前学习的知识,我们可以直接阅读下面代码了。代码里使......