![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PostgreSQL
文章平均质量分 59
Lens5935
这个作者很懒,什么都没留下…
展开
-
PostgreSQL 之爆炸函数
一、regexp_split_to_table以逗号切分,转为数据集select regexp_split_to_table('aa,bb,cc,dd', ',' )正则匹配regexp_split_to_table('E:\文件\test.txt','\\') 二、regexp_split_to_array以逗号切分,转为数组select regexp_split_to_array('aa,bb,cc,dd', ',' ) ...原创 2021-10-10 19:03:11 · 1389 阅读 · 0 评论 -
PostgreSQL和MySQL对比
下面我将从以下几个方面阐述MySQL和PostgreSQL的异同和优劣:开源性:PostgreSQL:The world’s most advanced open source database。开源协议:PostgreSQL基于自由的BSD/MIT许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。 PG的开源协议特别灵活,任何公司的和个人都可以把PG作为一个产品销售,而不需要像MySQL那样必须修改大部分代码才可以作为公司的产品。MySQL:World’s Mo..原创 2021-07-23 15:18:19 · 19600 阅读 · 0 评论 -
PostgreSQL insert update 常用操作及insert用法区别
创建测试数据表create table student (id int constraint idx_id primary key,name varchar(20) constraint cst_name not null); 插入数据insert into student values(1,'lens');1. 根据字段,当id冲突时更新name值insert into student values(1,'y5935') ON CONFLICT(id) d...原创 2020-05-17 22:37:58 · 5128 阅读 · 0 评论 -
PostgreSQL 用户自定义函数FUNCTION创建及调用(完整)
PostgreSQL函数也称为PostgreSQL存储过程。PostgreSQL函数或存储过程是存储在数据库服务器上并可以使用SQL界面调用的一组SQL和过程语句(声明,分配,循环,控制流程等)。 它有助于您执行通常在数据库中的单个函数中进行多次查询和往返操作的操作。您可以在许多语言(如SQL,PL/pgSQL,C,Python等)中创建PostgreSQL函数。要在 PostgreSQL 定义一个新的用户自定义函数,需要使用CREATE FUNCTION语句,如下所示:CREAT...原创 2020-05-19 13:42:40 · 36175 阅读 · 0 评论 -
PostgreSQL 使用RETURNING返回DML值(附详解)
需求:在写函数的过程中经常涉及到对表的增(insert)删(delete)改(update)查(select)操作,就是在对表操作后,获取操作行的某些列的值,或者获取操作行所有的数据。insert-select select-delete update-select select-into解决办法:postgresql有个returning特性,在function返回之前insert或者update的值,可以返回之前各种DML(insert,delete,update)掉的值,比mysq原创 2021-02-17 21:25:29 · 894 阅读 · 1 评论 -
PostgreSQL的递归查询(with recursive用法)
WITH语句通常被称为通用表表达式(Common Table Expressions)或者CTEs。CTE 优缺点可以使用递归 WITH RECURSIVE,从而实现其它方式无法实现或者不容易实现的递归查询 当不需要将查询结果被其它独立查询共享时,它比视图更灵活也更轻量 CTE只会被计算一次,且可在主查询中多次使用 CTE可极大提高代码可读性及可维护性 CTE不支持将主查询中where后的限制条件push down到CTE中,而普通的子查询支持需求:如何实现(省份>城市>区原创 2021-02-17 13:29:19 · 8334 阅读 · 4 评论 -
PostgreSQL函数实现获取操作影响的行数
获取普通的操作所影响的行数,PostgreSQL中有内置的变量DIAGNOSTICS与ROW_COUNT可以做到这一点。CREATE OR REPLACE FUNCTION fun_affect_rows()RETURNS text AS $BODY$declare v_count int;begininsert into click values('test video_id1');GET DIAGNOSTICS v_count = ROW_COUNT;raise notice '本.原创 2021-02-16 19:31:07 · 1624 阅读 · 1 评论 -
PostgreSQL11中实现动态SQL
动态SQL用于减少查询时的重复任务,通过允许有效的数据查询来简化数据库程序员的工作。例如,可以使用动态SQL每天为某个表创建表分区,在所有外键上添加缺少的索引,或者向某个表添加数据审核功能,而不会产生主要的编码效果。动态SQL的另一个重要用途是克服PL/pgSQL缓存的副作用,因为使用执行语句未缓存。动态 SQL 是通过 EXECUTE 语句实现的。该 EXECUTE 语句接受一个字符串,并简单地计算它。执行语句的摘要如下:EXECUTE command-string [ INTO [ST原创 2021-02-16 18:27:03 · 2187 阅读 · 1 评论 -
PostgreSQL中crosstab实现动态行转列(附案例)
行转列,通用做法是使用 case when 。today,介绍一下新的方法 -- crosstabcrosstab 函数被用来生成pivot(扭曲,转动)展示,即通过横向而不是下拉展示(行转列)。如下面这个例子:源表:row1 val11row1 val12row1 val13...row2 val21row2 val22row2 val23...期望的结果:row1 val11 val12 val13 ....原创 2021-02-16 13:48:25 · 5306 阅读 · 0 评论 -
HiveSQL 实现10分钟时间粒度
需求: 就是时间段为10分钟粒度.有用户点击行为日志的时间戳.对用户点击量进行统计实现思路:因为数据有时间戳,可以通过from_unixtime()来获取具体的时间 有了具体的时间,就可以用minute()函数获取对应数据所在的分钟.minute()函数获取分钟为字符串 想法 00 - 10应该分到一组, 10- 20 应该分到第二组,依次类推. 用minute 整除 10的话, 00 - 10整除 10都为 0, 10- 20 整除 10都为1,依次类推 这样就可以把每1...原创 2020-09-23 16:06:18 · 2875 阅读 · 0 评论 -
CentOS 7 安装&配置PostgreSQL 12(附图片详解)
linux版本:CentOS Linux release 7.6.1810 (Core)PostgreSQL版本:12.x1、导入yum源[root@localhost java]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm2、安装PostgreSQL服务[root@localhost jav.原创 2020-08-12 14:23:48 · 1033 阅读 · 0 评论