gpsql常用操作

news/2024/7/9 21:20:54 标签: postgresql

1.时间
字符串转时间/时间戳
   select to_date(‘2018-03-08 18:55:33’,‘yyyy-MM-dd hh24:mi:ss’)
   select to_timestamp(‘2018-03-08 18:55:33’,‘yyyy-MM-dd hh24:mi:ss’) from
2.schema
关系型数据库中存储数据,首先必须定义schema“模式”,也就是用一种预定义结构向数据库说明:要有哪些表格,表中有哪些列,每一列都存放何种类型的数据。必须先定义好模式,然后才能存放数据。nosql型数据库与之相反

3.split集合

   1.–select regexp_split_to_table(‘yaosting\test\split’,’\’) ;

regexp_split_to_table
yaosting
test
split

   2.–select (regexp_split_to_array(‘yaosting\test\split’,’\’ ));

regexp_split_to_array
{yaosting,test,split}

   3. --select split_part(‘yaosting\test\split’,’’,2);

split_part
test

   3.1. --select (regexp_split_to_array(‘yaosting\test\split’,’\’ ))[2];

regexp_split_to_array
test

4.coalesce(numbe,0)

coalesce(numbe,0) 函数
numbe不为null 返回原数值,为null时返回 0
解决数值+null为null的问题,当对表进行关联相加时,存在null列.

–select 2+ coalesce(null,0) as add_num

add_num
2

5.drop、truncate和delete的区别

TRUNCATE 和DELETE只删除数据, DROP则删除整个表(结构和数据)。

参考链接

5.1 高水位线问题 vacuum [full]

频繁地delete和update操作
Postgresql之VACUUM和VACUUM FULL对比
参考链接

6.replace

regexp_replace(customer_name, ‘([a-zA-Z]+)|([@]+)|([#]+)|([*]+)’,’’)

7.数据类型转化和round

select round(cast(a/b as numeric), 2) --保留两位小数.

8.group高阶用法

SELECT
brand_id,
store_id,
round( count(*), 0 )
FROM
bas_buick_repair_order
WHERE
car_model_name IN ( ‘威朗’, ‘全新英朗’ )
GROUP BY
GROUPING SETS ( store_id, brand_id, (store_id, brand_id) );

group by grouping sets(store_id, brand_id, (store_id, brand_id)) 等价于group by store_id+group by brand_id+group by store_id,brand_id.

9. filter()~~case

select brand_id, store_id
,count(*) filter(where mileage_daily_avg_forecast>=0 and mileage_daily_avg_forecast<10) as “0~10”
from dim_dev_buick_premiles
group by
grouping sets(store_id,brand_id)
;

select brand_id,store_id
,sum(case when mileage_daily_avg_forecast>=0 and mileage_daily_avg_forecast<10 then 1 else null end) as “0~10”
from dim_dev_buick_premiles
group by
grouping sets(store_id,brand_id)
;

一次全表 扫描,filter适合所有的聚合函数,不仅仅是PG内置的的聚合函数,还支持安装扩展包的聚合函数 原文链接

10.over()

select store_id
,avg(mileage_daily_avg_forecast) over(partition by store_id)
from dim_dev_buick_premiles

over()子句又称作窗口函数,这个窗口是将where 条件获取的总的集合假想成一个窗口,并且avg(gdp) over()获取的是这个假想集的平均值。

返回行数与原表行数一致,可以简单理解为新增了一列.
原文链接

滑动窗口函数

select country_name,“year”,gdp,array_agg(“year”) over(partition by country_name order by “year” desc rows between unbounded preceding and 1 following) from country_gdp_year_final

rows between unbounded preceding and 1 following
定义的滑动窗口包含三行,当前行,当前行的前一行,当前行的后一行

结合order by 才有意义,将数据先排序,然后计算窗口内的值.
与over()相比,前者是字段级别的,后者更细,某字段的某范围值.书写规范类似于filter()

内建窗口函数

在这里插入图片描述

查看sql正在进行的进程、是否锁表、解表

1.查看正在进行的sql进程
SELECT
procpid,
START,
now() - START AS lap,
current_query
FROM
(
SELECT
backendid,
pg_stat_get_backend_pid (S.backendid) AS procpid,
pg_stat_get_backend_activity_start (S.backendid) AS START,
pg_stat_get_backend_activity (S.backendid) AS current_query
FROM
(
SELECT
pg_stat_get_backend_idset () AS backendid
) AS S
) AS S
WHERE
current_query <> ‘’
ORDER BY
lap DESC;
2.查看锁表的进程
select oid from pg_class where relname=‘m_ss_kjcx_tech_inovate_talent’
select pid from pg_locks where relation=‘4384913’
3.对锁表的进程进行释放
select pg_cancel_backend(线程id);
来kill掉指定的SQL语句。(这个函数只能 kill Select 查询,而updae,delete DML不生效)

使用可以kill 各种DML(SELECT,UPDATE,DELETE,DROP)操作=
select pg_terminate_backend(pid int)

gpsql - 索引

索引大法好

1.需要使用的列:
经常查询的列
排序的列
连接的列
where条件的列
经常出现order by 、group by 、distinct的列
注意:定期删除无用的索引,减少数据操作的负荷

2.索引的创建
唯一索引
create index index_name_id on dbscheme.test0001(name_id);

多字段索引
create index indexs_name_traff on dbscheme.test0001(name_id,traffic);

部分索引
create index index_par_name_id on dbscheme.test0001(name_id) where name_id = ‘kk’;

表达式索引
select trim(nameid) from dbscheme.test0001 where trim(nameid) = ‘ll’
create index index_name_id on dbscheme.test0001(trim(name_id)) ;

创建指定的btree索引
create index index_name_id on dbscheme.test0001 using btree (name_id);

修改索引名称
alter index index_name_id rename to index_name_id_new

删除索引
DROP INDEX index_name_id_new;

事务的ACID属性

从我们最开始了解数据库的时候,我们都知道事务是由一个或者多个SQL语句组成,并且这些语句要么全部执行成功、要门全部执行失败(这就是原子性 Atomic),并且事务将数据库从一个一致的状态转移到另一个一致的状态(这就是一致性:consistency),但是当数据库并发比较大的时候,多个session对于表记录进行并发操作的时候,Session之间的查询和操作是互不影响的,看上去各个事务像是一前一后串联发生(这就是隔离性:Isolation),事务在被提交后提供一个确定一致的结果,即使出现硬件故障等,它仍然保持一个一致的状态(这就是持久性:persistence)


http://www.niftyadmin.cn/n/1621612.html

相关文章

CentOS7下安装Python3并保留Python2

1. 安装make编译指令的依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 2.下载python3.x安装包到服务器的/apps/install_pack目录下 # wget https://www.py…

Tsfresh 时序数据特征挖掘 特征算子简介

本篇介绍现有主要算子含义和使用注意是想基础算子简单复合算子一.本身无时序概念算子二.本身有时序概念算子复杂复合算子一些使用感悟和补充懂的都懂,下文算子基本按照源码顺序罗列.如果有其他关于tsfresh的问题,欢迎留言讨论,后续可能会再写tsfresh的其他系列文章.部分算子示例…

搭建LAMP架构— 3、手工编译安装PHP

PHP&#xff0c;一个嵌套的缩写名称&#xff0c;是英文超级文本预处理语言&#xff08;PHP:Hypertext Preprocessor&#xff09;的缩写。PHP 是一种 HTML 内嵌式的语言&#xff0c;PHP与微软的ASP颇有几分相似&#xff0c;都是一种在服务器端执行的嵌入HTML文档的脚本语言&…

element-ui打包和运行报错处理

最近在使用webpack打包过程中遇到element-ui报错。 说明一下情况&#xff1a;之前在原有的配置文件和node_modules依赖包下打包的过程中&#xff0c;一直都很顺利&#xff0c;但是突然就报错了&#xff0c;很尴尬啊&#xff01; 1 ERROR in static/js/vendor.dcbf487ca944c251a…

从遗传算法走进TOPT的auto

1.简述 遗传算法 元启发式算法&#xff08;Meta-heuristic algorithms) 模拟进化过程&#xff0c;通过选择(Selection)、交叉(Crossover)以及变异(Mutation)等机制&#xff0c; 在每次迭代中都保留一组候选个体&#xff0c;重复此过程&#xff0c;种群经过若干代进化后&#x…

NAS简述

Neural architecture search (NAS) 名词补充: EA:演化算法 RL:强化学习 NAS结构三部分: 搜索空间: 整体结构搜索、cell搜索、分层搜索、网络态射(扩充网络的宽深)架构优化: 演化算法、强化学习、代理模型、梯度优化、网格和随机搜索、混合优化模型评估: 看前述的模型实际效…

Spring3.1 对Bean Validation规范的新支持(方法级别验证)

上接Spring提供的BeanPostProcessor的扩展点-1继续学习。 一、Bean Validation框架简介 写道Bean Validation standardizes constraint definition, declaration and validation for the Java platform.大体意思是&#xff1a;Bean Validation 标准化了Java平台的约束定义、描述…

机器学习超参数优化算法进化史

背景: 由于深度学习和传统机器学习的超参数性质差异较大,二者的超参数优化算法原理和偏向也不同, 以下算法整理更适用于传统机器学习. 1.先盲目地搜索 网格搜索(Grid Search, GS) 和 随机搜索(Random Search,RS) 2.要有继承性地搜索 贝叶斯优化算法(Bayesian Optimization,BO…