Postgresql基础实践教程(四)

【入门教程】PostgreSQL+SequoiaDB HA 实践 【入门教程】PostgreSQL+SequoiaDB HA 实践 前言 SequoiaDB作为分布式数据库,从设计之初就已经支持SQL访问。目前,SequoiaDB自研的SQL访问组件SequoiaSQL作为企业版的功能之一已经提供给上百家企业用户使用,并且已经实现分布式架构下的SQL 2003支持。 对于SequoiaDB社区版用户,我们可以通过SequoiaDB对接Postgre 阅读详情

在这里插入图片描述
⭐️⭐️⭐️⭐️⭐️
完整数据详见 练习数据·免费
⭐️⭐️⭐️⭐️⭐️

三十、统计设施数量

题目

这是我们第一次接触聚合函数,先从简单的开始。我们想知道一共有多少个设施——只需要算出总数就行。

预期结果

count
9

【答案与解析】

select count(*) from cd.facilities;

聚合函数的用法其实挺直观的!上面的 SQL 语句从 facilities 表中查询所有数据,然后统计结果集中的行数。count 函数有几种常见的用法:

  • COUNT(*) 直接返回行数
  • COUNT(address) 统计结果集中 address 字段非空的记录数
  • COUNT(DISTINCT address) 统计 facilities 表中有多少个不同的地址

聚合函数的基本原理是:它接收一列数据,对这些数据进行某种计算,最后输出一个标量值(也就是单个值)。除了 COUNT,还有很多其他聚合函数,比如 MAX、MIN、SUM、AVG 等。看名字大概就能猜到它们是干啥的 😃

很多人对聚合函数感到困惑的地方在于类似下面的查询:

select facid, count(*) from cd.facilities

你试试运行这条语句,会发现它报错了。这是因为 count(*) 想把整个 facilities 表聚合成一个值,但问题是表里有很多不同的 facid,Postgres 不知道该把 count 的结果跟哪个 facid 配对。

那如果你想查出每个 facid 以及对应的计数,该怎么办呢?可以把聚合部分写成子查询,像这样:

select facid, 
	(select count(*) from cd.facilities)
	from cd.facilities

当子查询返回的是一个标量值时,Postgres 会自动把这个值重复填充到 cd.facilities 表的每一行中。

三十一、统计高价设施数量

题目

统计对客人收费在 10 及以上的设施数量。

预期结果

count
6

【答案与解析】

select count(*) from cd.facilities where guestcost >= 10;

这道题只是在前一题的基础上做了点小改动:我们需要把便宜的设施过滤掉。用 WHERE 子句就能轻松搞定。这样一来,聚合函数就只会看到那些收费较高的设施了。

三十二、统计每个会员的推荐人数

题目

统计每个会员推荐了多少人。按会员 ID 排序。

预期结果

recommendedbycount
15
23
31
42
51
61
92
111
132
151
161
201
301

【答案与解析】

select recommendedby, count(*) 
	from cd.members
	where recommendedby is not null
	group by recommendedby
order by recommendedby;

之前我们见过,聚合函数是作用在一列数据上,然后把它们聚合成一个标量值。这很有用,但我们经常会发现,自己想要的不是单个聚合结果:比如说,我可能不想知道俱乐部这个月总共赚了多少钱,而是想知道每个设施分别赚了多少钱,或者哪些时间段最赚钱。

为了支持这种需求,SQL 提供了 GROUP BY 子句。它的作用是把数据分成若干组,然后对每组分别运行聚合函数。当你指定了 GROUP BY,数据库会为指定列中的每个不同值生成一个聚合结果。在这个例子里,我们的意思是"对于 recommendedby 的每个不同值,统计它出现了多少次"。

三十三、列出每个设施的总预订时段数

题目

列出每个设施的总预订时段数。目前只需要生成一个包含设施 ID 和时段数的输出表,按设施 ID 排序。

预期结果

facidTotal Slots
01320
11278
21209
3830
41404
5228
61104
7908
8911

【答案与解析】

select facid, sum(slots) as "Total Slots"
	from cd.bookings
	group by facid
order by facid;

除了引入了 SUM 聚合函数之外,这道题没什么特别需要说明的。对于每个不同的设施 ID,SUM 函数会把 slots 列中的所有值加起来。

三十四、列出指定月份每个设施的总预订时段数

题目

列出 2012 年 9 月每个设施的总预订时段数。生成一个包含设施 ID 和时段数的输出表,按时段数排序。

预期结果

facidTotal Slots
5122
3422
7426
8471
6540
2570
1588
0591
4648

【答案与解析】

select facid, sum(slots) as "Total Slots"
	from cd.bookings
	where
		starttime >= '2012-09-01'
		and starttime < '2012-10-01'
	group by facid
order by sum(slots);

这道题只是在前一题的基础上做了点小改动。记住,聚合是在 WHERE 子句执行之后才进行的:所以我们用 WHERE 来限制要聚合的数据范围,这样聚合函数就只会看到一个月的数据了。

三十五、列出每个月每个设施的总预订时段数

题目

列出 2012 年每个月每个设施的总预订时段数。生成一个包含设施 ID、月份和时段数的输出表,按设施 ID 和月份排序。

预期结果

facidmonthTotal Slots
07270
08459
09591
17207
18483
19588
27180
28459
29570
37104
38304
39422
47264
48492
49648
5724
5882
59122
67164
68400
69540
77156
78326
79426
87117
88322
89471

【答案与解析】

select facid, extract(month from starttime) as month, sum(slots) as "Total Slots"
	from cd.bookings
	where extract(year from starttime) = 2012
	group by facid, month
order by facid, month;

这道题新引入的主要功能是 EXTRACT 函数。EXTRACT 可以从时间戳中提取出各个组成部分,比如日、月、年等。我们按照这个函数的输出进行分组,就能得到每月的统计值。如果需要区分不同年份的相同月份,可以使用 DATE_TRUNC 函数,它能把日期截断到指定的粒度。另外值得一提的是,这是我们第一次真正用到按多列分组的功能。

关于这个答案,有一点需要注意:在 WHERE 子句中使用 EXTRACT 函数可能会在大表上导致严重的性能问题。如果 timestamp 列上有普通索引,Postgres 无法利用索引来加速查询,只能全表扫描。你有以下几种解决方案:

  • 考虑在 timestamp 列上创建表达式索引。有了合适的索引,Postgres 就能用索引来加速包含函数调用的 WHERE 子句。
  • 修改查询,虽然写得稍微啰嗦一点,但使用更标准的比较方式,例如:
select facid, extract(month from starttime) as month, sum(slots) as "Total Slots"
	from cd.bookings
	where
		starttime >= '2012-01-01'
		and starttime < '2013-01-01'
	group by facid, month
order by facid, month;

对于这种标准比较,Postgres 无需额外帮助就能使用索引。

三十六、统计至少预订过一次的会员数量

题目

统计至少预订过一次的会员(包括访客)总数。

预期结果

count
30

【答案与解析】

select count(distinct memid) from cd.bookings

你第一反应可能是用子查询,像这样:

select count(*) from 
	(select distinct memid from cd.bookings) as mems

这样确实能正常工作,但我们可以借助 COUNT DISTINCT 稍微简化一下。它的作用正如你所料,统计指定列中不同值的数量。

三十七、列出预订时段超过 1000 的设施

题目

列出预订时段总数超过 1000 的设施。生成一个包含设施 ID 和时段数的输出表,按设施 ID 排序。

预期结果

facidTotal Slots
01320
11278
21209
41404
61104

【答案与解析】

select facid, sum(slots) as "Total Slots"
        from cd.bookings
        group by facid
        having sum(slots) > 1000
        order by facid

原来 SQL 中有一个专门用来过滤聚合函数输出的关键字,这就是 HAVING。

HAVING 的行为很容易和 WHERE 混淆。最好的理解方式是:在包含聚合函数的查询中,WHERE 用来过滤进入聚合函数的数据,而 HAVING 用来过滤聚合函数输出的数据。你可以多试试,体会一下它们的区别!

三十八、计算每个设施的总收入

题目

列出每个设施及其总收入。输出表应包含设施名称和收入,按收入排序。记住,访客和会员的收费是不一样的!

预期结果

namerevenue
Table Tennis180
Snooker Table240
Pool Table270
Badminton Court1906.5
Squash Court13468.0
Tennis Court 113860
Tennis Court 214310
Massage Room 215810
Massage Room 172540

【答案与解析】

select facs.name, sum(slots * case
			when memid = 0 then facs.guestcost
			else facs.membercost
		end) as revenue
	from cd.bookings bks
	inner join cd.facilities facs
		on bks.facid = facs.facid
	group by facs.name
order by revenue;

这道题唯一的复杂之处在于访客(会员 ID 为 0)的收费和其他人不一样。我们用 case 语句来计算每次预订的费用,然后按设施分组,把每次预订的费用加起来。

三十九、找出总收入低于 1000 的设施

题目

列出总收入低于 1000 的设施。输出表应包含设施名称和收入,按收入排序。记住,访客和会员的收费是不一样的!

预期结果

namerevenue
Table Tennis180
Snooker Table240
Pool Table270

【答案与解析】

select name, revenue from (
	select facs.name, sum(case 
				when memid = 0 then slots * facs.guestcost
				else slots * membercost
			end) as revenue
		from cd.bookings bks
		inner join cd.facilities facs
			on bks.facid = facs.facid
		group by facs.name
	) as agg where revenue < 1000
order by revenue;

你可能尝试过用我们在前面练习中介绍的 HAVING 关键字,写出类似下面的查询:

select facs.name, sum(case 
		when memid = 0 then slots * facs.guestcost
		else slots * membercost
	end) as revenue
	from cd.bookings bks
	inner join cd.facilities facs
		on bks.facid = facs.facid
	group by facs.name
	having revenue < 1000
order by revenue;

可惜这样行不通!你会收到类似这样的错误:ERROR: column “revenue” does not exist。和 SQL Server、MySQL 等其他关系型数据库不同,Postgres 不支持在 HAVING 子句中使用列别名。所以要让这个查询正常工作,你得写成下面这样:

select facs.name, sum(case 
		when memid = 0 then slots * facs.guestcost
		else slots * membercost
	end) as revenue
	from cd.bookings bks
	inner join cd.facilities facs
		on bks.facid = facs.facid
	group by facs.name
	having sum(case 
		when memid = 0 then slots * facs.guestcost
		else slots * membercost
	end) < 1000
order by revenue;

像这样重复大量的计算代码显得很 messy,所以我们推荐的解决方案是把主查询体包装成子查询,然后用 WHERE 子句从中筛选。一般来说,对于简单的查询,我建议用 HAVING,因为它更清晰。而对于复杂的情况,这种子查询的方式往往更好用。

四十、输出预订时段数最多的设施 ID

题目

输出预订时段数最多的设施 ID。如果要挑战一下,试着写一个不用 LIMIT 子句的版本。这个版本可能会看起来很复杂!

预期结果

facidTotal Slots
41404

【答案与解析】

select facid, sum(slots) as "Total Slots"
	from cd.bookings
	group by facid
order by sum(slots) desc
LIMIT 1;

我们先从最简单的方法开始:生成一个包含设施 ID 和总预订时段数的列表,按总时段数降序排序,然后只取第一条结果。

不过需要注意的是,这种方法有个明显的缺陷:如果出现平局(多个设施的时段数相同),我们仍然只能得到一个结果!要想得到所有符合条件的结果,我们可以尝试用 MAX 聚合函数,像这样:

select facid, max(totalslots) from (
	select facid, sum(slots) as totalslots    
		from cd.bookings    
		group by facid
	) as sub group by facid

这个查询的意图是获取最高的 totalslots 值及其对应的 facid。可惜这样行不通!如果有多个 facid 的时段数相同,Postgres 就无法确定应该把哪个 facid 和 MAX 函数输出的单个(标量)值配对。所以 Postgres 会提示你 facid 应该放在 GROUP BY 子句中,但这不会产生我们想要的结果。

让我们先尝试写一个能正常工作的查询:

select facid, sum(slots) as totalslots
	from cd.bookings
	group by facid
	having sum(slots) = (select max(sum2.totalslots) from
		(select sum(slots) as totalslots
		from cd.bookings
		group by facid
		) as sum2);

这个查询先生成设施 ID 和对应的时段数列表,然后用 HAVING 子句计算出最大的 totalslots 值。我们的逻辑基本上是:“生成 facid 及其预订时段数的列表,然后过滤掉那些时段数不等于最大值的结果。”

虽然 HAVING 很有用,但我们的查询写得有点丑。为了改进它,我们再引入一个新概念:公用表表达式(CTE)。CTE 可以让你在查询中内联定义一个数据库视图。在像这种需要重复代码的场景中,它特别有用。

CTE 的声明形式是 WITH CTE名称 as (SQL表达式)。你可以看到我们用 CTE 重写了上面的查询:

with sum as (select facid, sum(slots) as totalslots
	from cd.bookings
	group by facid
)
select facid, totalslots 
	from sum
	where totalslots = (select max(totalslots) from sum);

可以看到,我们把重复的 cd.bookings 查询提取到了一个 CTE 中,让整个查询变得更易读了!

等等,还没完。其实还可以用窗口函数来解决这个问题。我们后面再讲窗口函数,但对于这类问题,确实有更好的解决方案。

一道练习题讲了这么多内容。如果现在不能完全理解也不用太担心——我们会在后面的练习中继续用到这些概念。

PostgreSql零基础入门 PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。PostgreSQL 开发者把它念作 post-gress-Q-L。PostgreSQL 的 Slogan 是 “世界上最先进的开源关系型数据库”。PostgreSQL官网PostgreSQL中文社区全球数据库排行国产数据库排行‘’PostgreSQL学习目录Postgres遵守BSD许可证发行,使开发者们得以获取源代码并进一步开发系统。 阅读详情

相关推荐

【PostgreSQL教程】PostgreSQL详细介绍

PostgreSQL是一个强大的开源对象关系数据库系统,它使用并扩展了SQL语言,并结合了许多功能,可以安全地存储和扩展最复杂的数据工作负载。PostgreSQL的起源可以追溯到1986年,是加州大学伯克利分校POSTGRES项目的一部分,在核心平台上有超过35年的积极开发。

xiaomiphone9的博客 2495

postgresql入门(postgresql教程)

检查服务登录身份是否为“本地系统账户”(Windows)或依赖项是否安装(Linux/macOS)。PostgreSQL 是开源关系型数据库,采用 BSD 协议,支持商业化使用。,重启服务后登录并重置密码。

Dontla的博客 2652

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口Java

本篇教程的Java程序中开始使用PostgreSQL之前,需要确保在计算机上设置了PostgreSQL JDBC和Java。您可以检查Java教程以在计算机上安装Java。现在让本篇教程检查如何设置PostgreSQL JDBC驱动程序。

No8g攻城狮的博客 1756

PostgreSQL教程

在日常操作中,对于一组相关操作,通常要求要么都成功,要么都失败。在关系型数据库中,称这一组操作为事务。原子性A:事务是一个最小的执行单位,一次事务中的操作要么都成功,要么都失败。一致性C:在事务完成时,所有数据必须保持在一致的状态。(事务完成后吗,最终结果和预期结果是一致的)隔离性:一次事务操作,要么是其他事务操作前的状态,要么是其他事务操作后的状态,不存在中间状态。持久性:事务提交后,数据会落到本地磁盘,修改是永久性的。

来xghuang666的专栏 1万+

算法-基于MACD的Adaboost股价涨跌预测模型

MACD是一个指标,具体用法是MACD>0看涨,反之看跌,果真是这样的吗?由于所有的技术指标都基于对历史数据的统计,指标的滞后性也就难免,有时候MACD明明大于0,股价仍然跌,有时候macd小于0,股价仍然涨。 本文基于Adaboost算法提出了一种基于macd的线性阀值分类器作为若分类器,通过在限定的解空间内寻找使得错误率最小的阀值和偏置,这样做避免了训练若分类器的复杂性,经验证,这种方法有效。

mtaxot的博客 8023

VSCode+ESP-IDF开发环境搭建:从零开始创建你的第一个物联网项目(2024最新版)

本文详细介绍了如何在2024年使用VSCode和ESP-IDF搭建物联网开发环境,从零开始创建第一个物联网项目。内容包括环境准备、ESP-IDF配置、项目创建与结构解析、构建烧录步骤以及高级技巧和常见问题解决方案,帮助开发者快速上手ESP32开发。

weixin_29165725的博客 330

Learn PostgreSQL 项目教程

Learn PostgreSQL 项目教程 1. 项目介绍 Learn PostgreSQL 是由 Packt Publishing 出版的一本关于 PostgreSQL 数据库的书籍,旨在帮助读者从零开始学习 PostgreSQL,并掌握如何构建和管理高性能的数据库解决方案。该项目在 GitHub 上开源,提供了书籍中的代码示例和相关资源。 PostgreSQL 是一个快速增长的开源对象关系数据...

gitblog_00114的博客 787

Windows下的Geant4安装教程

本教程将从0开始展示在Windows下如何安装Geant4,包括各种辅助工具(QT、Cmake、Visual Studio)的下载安装,环境变量的配置,以及example的生成等。

weixin_49065278的博客 4106

零基础小白如何自学PostgreSQL

自学 PostgreSQL 从基础的 SQL 语法开始,逐渐深入到高级功能和性能优化,最重要的是多实践。通过学习数据库设计、优化以及应用开发,你会逐步掌握 PostgreSQL,为后续的开发打下坚实的基础。自学 PostgreSQL 需要循序渐进,从基础的 SQL 操作入手,逐步深入到数据库设计、优化、云部署等高级内容。实践是最好的学习方式,随着你不断练习和探索,你会越来越熟悉 PostgreSQL,并能够在实际项目中灵活运用它。

小宝哥Code的专栏 1676

ARM Cortex平台NEON指令集优化实战指南

本文为ARM Cortex平台开发者提供了一份全面的NEON指令集优化实战指南。文章从NEON的SIMD架构原理讲起,详细介绍了开发环境搭建、NEON内联函数与自动向量化两种核心编程方法、关键数据类型与指令,并通过图像饱和运算、矩阵乘法等实战案例,深入解析了性能调优技巧与常见避坑指南,旨在帮助开发者充分释放ARM处理器的并行计算潜力。

weixin_29162439的博客 260

手把手教你学Simulink--人形机器人控制场景实例:基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真

matlab编辑% 连杆长度 (m)% 躯干(髋到CoM)% 大腿% 小腿% 质量 (kg)% 转动惯量(绕质心,简化为杆)matlab编辑% 躯干CoM(假设在髋上方L_body/2处)% 左大腿CoM% 左小腿CoM% (右腿类似,略)本文完成了基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真,实现了:✅ 定义7-DOF平面人形结构✅ 使用Symbolic Math Toolbox自动推导动力学方程✅ 生成。

MHD0815的博客 146

GORM PostgreSQL 驱动使用教程

GORM PostgreSQL 驱动使用教程 1. 项目介绍 GORM PostgreSQL 驱动是 GORM(Go 语言的 ORM 库)的一个官方 PostgreSQL 数据库驱动。GORM 是一个功能强大且灵活的 ORM 库,支持多种数据库,而 PostgreSQL 驱动则是专门为 PostgreSQL 数据库设计的。该驱动提供了对 PostgreSQL 数据库的高效访问和操作,支持事务、连接...

gitblog_01103的博客 1761

ROCm rocr-libhsakmt分析系列9-3: queue的内核创建流程

KFD队列是用户空间与GPU通信的核心机制,通过多种队列类型(计算、DMA、调试等)实现命令流管理。核心数据结构包括描述队列属性的queue_properties、内核调度对象queue、进程级管理器process_queue_manager,以及跨进程设备的qcm_process_device等。这些结构通过ring buffer、doorbell机制和MQD硬件描述符协同工作,支持队列全生命周期管理、资源调度、异常处理和上下文保存/恢复功能。

图形/计算GPU的驱动与虚拟化技术分享园地 2129

PostgreSQL 权限管理PRIVILEGES:从基础到企业级实践

PostgreSQL权限管理从基础到企业级实践摘要:本文全面讲解PostgreSQL基于角色的权限管理体系,涵盖系统权限和对象权限矩阵。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 7819

PLC的模糊PID控制

模糊PID控制包括模糊化,确定模糊规则,解模糊等组成部分,小车通过传感器采集赛道信息,PLC通过温度传感器获取炉内温度,确定当前实际温度和设定目标值的偏差e(error), e=setpoint-input以及偏差的变化ec(当前偏差-上次偏差),根据给定的模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出PID控制参数 其次我们需要对这2个参数进行模糊化,e 、 ec 这里我对e进行举例,两个输入的标准化范围都在 [-1,1] 范围内。模糊逻辑控制器还产生范围 [-1,1] 内的归一化输出。 博

RXXW_Dor的博客 1万+

audio语音相关的基础知识-VAD,ASR,AEC,AGC,BF等

有音素之间的间隙,也有静音和语音本身的间隙,为了对数据从时间上进行相对的校准,语音端点检测技术就应运而生了,因此端点检测技术可以决定这种校准的相对精度,使得同一内容的特征更趋于相同,当然,一般情况下是不可能完全相同的。盲源分离的目的是求得源信号的最佳估计,盲辨识的目的是求得传输通道的。这个技术的主要任务是从带有噪声的语音中准确的定位出语音的开始和结束点,因为语音中含有很长的静音,也就是把静音和实际语音分离开来,因为是语音数据的原始处理,所以VAD是语音信号处理过程的关键技术之一。呈现出与会者清晰的声音。

u013250861的博客 1034

Practical SQL完全指南:从零基础到PostgreSQL数据分析师的终极教程

**Practical SQL** 是一本由Anthony DeBarros撰写的经典教程,专为零基础学习者设计,通过PostgreSQL数据库系统掌握实用SQL技能。无论你是数据爱好者、职场新人还是希望转型的专业人士,这本书都能帮助你从零开始,逐步成长为能够处理真实世界数据的PostgreSQL数据分析师。 ## 📚 为什么选择PostgreSQL? PostgreSQL作为一款免费开源的

gitblog_00677的博客 597

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

postgreSQL 操作 教程

— 得到所有用户自定义表的名字(这里"tablename"字段是表的名字,"schemaname"是schema的名字。在PostgreSQL中,一个表可以从0个或多个表继承,一次查询可以查询到某个表中的所有行,或者这个表和这个表所有子表的所有行,默认为后者。postgres=# \encoding // 显示客户端的字元集。// 显示客户端的字元集。// 显示服务器的字元集。// 精细显示SQL命令中的select命令的使用方法。

dujidan的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

PostgreSQL 基本使用教程

PostgreSQL 基本使用教程原文地址:PostgreSQL 基本使用教程

wwwcomcn123的专栏 2717

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

PostgreSQL在Linux和Windows安装和入门基础教程

StackOverflow 2022 开发者报告:总体而言,MySQL 依然是最受欢迎的的数据库。但在专业开发者群体中,PostgreSQL(46.48%)已经超越 MySQL(45.68%)夺得了第一名。看来必须得学一波了啊。 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支

write less , do more 6483

PostgreSQL编译安装教程

注意,如果pgdata目录没有指定,则会默认使用环境变量中的PGDATA指定的目录作为数据库存放的目录,由于之前我们刚刚设置了"PGDATA=/usr/local/pgsql/data"环境变量,所以此处我们也就无需再额外指定,直接执行初始化命令即可。目录里"linux"文件就是我们要找的文件。完成以后,在"--prefix=/usr/local/pgsql"参数对应的"/usr/local/pgsql"的目录就是我们所有PostgreSQL存放的文件,这里的这个data和log文件现在是没有的。

Eucalyptus's blog 2167

PostgreSQL扩展开发:从零实现uuid47类型的完整教程

PostgreSQL作为功能强大的开源数据库,支持通过扩展机制增强其原生功能。本教程将带你从零开始开发一个实用的PostgreSQL扩展——uuid47,它结合了UUID v4的隐私保护特性和v7的性能优势,为数据库提供更高效的唯一标识符解决方案。 ## 一、PostgreSQL扩展开发基础 PostgreSQL扩展(Extension)是一种打包的功能模块,包含SQL脚本、C代码或其他语言实

gitblog_00439的博客 700

CartoDB PostgreSQL 扩展使用教程

CartoDB PostgreSQL 扩展使用教程 1. 项目介绍 CartoDB PostgreSQL 扩展是一个开源项目,旨在为 PostgreSQL 数据库添加 CartoDB 特定的功能和工具。该扩展是 CartoDB 平台的核心组件之一,主要用于处理地理空间数据和元数据。通过该扩展,用户可以将普通的 PostgreSQL 表转换为 CartoDB 可识别的表,并利用 CartoDB 的构...

gitblog_00046的博客 1322

PostgreSQL 扩展 for VSCode 使用教程

PostgreSQL 扩展 for VSCode 使用教程 项目介绍 PostgreSQL 扩展 for VSCode 是一个用于在 Visual Studio Code 中开发 PostgreSQL 数据库的扩展。该扩展提供了连接到 PostgreSQL 实例、管理连接配置文件、在每个标签页中连接到不同的 Postgres 实例或数据库、查看对象 DDL(数据定义语言)、使用 IntelliSe...

gitblog_00661的博客 1823
上一篇: Postgresql基础实践教程(三)
下一篇: Postgresql基础实践教程(五)
丷丩
丷丩 优质创作者: 数据科学与机器学习技术领域 优质创作者: 数据科学与机器学习技术领域
博客等级 码龄18年 1万+粉丝 317原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丷丩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值