SQL
文章平均质量分 55
。。。
肯尼思布赖恩埃德蒙
这个作者很懒,什么都没留下…
展开
-
MySQL 随笔 0.1 日志&MVCC&锁
MySQL 随笔 0.1 日志&MVCC&锁转载 2022-10-22 09:57:13 · 118 阅读 · 0 评论 -
PL/pgSQL 随笔 触发器函数
0. 最近pg出现一些大病,可能后面用不久了…pg12 官方中文文档 PL/pgSQL 触发器函数1. 在pl/pgsql的基础上看触发器函数,挺简单的…分为两类 数据改变触发 函数签名 RETURNS TRIGGER 函数中没有用户参数,由pg提供内置参数(详见链接) 还可以继续细分: 按触发时机: before 修改前 return NEW alter 修改后,return null instead of 替换原本执行的sql 按触发级别:原创 2021-11-14 19:30:07 · 800 阅读 · 0 评论 -
PostgreSQL 随笔 遇到的问题
1.表关联(连接)使用外连接关联表,并在返回结果集中使用coalesce(),出现null数据? 存在垃圾数据,导致主键不唯一原创 2021-09-08 22:05:03 · 88 阅读 · 0 评论 -
PostgreSQL 随笔 未归档
1. distinct on按照Order by的第一位参数排序,并在分组内保留第一位distinct on (分组字段) 去重字段(可以是*)原创 2021-09-06 23:09:22 · 143 阅读 · 0 评论 -
PostgreSQL 随笔 临时表 & 视图 & with
0.博客感觉也要跟代码一起逐版迭代了…PgSQL12 中文文档 CREATE TABLE AS原创 2021-08-26 22:59:32 · 972 阅读 · 0 评论 -
PostgreSQL 聚集函数
0.最近就是到处填坑pgSQL 中文文档 聚集函数1.聚集函数也叫聚合函数聚合操作之高效这里就不多谈了。其特点在 窗口函数的文章中 做了些比较,所以…也不多谈了。结合文档来说,聚集函数有一些巧思的,剩下的基本都是些较为专业的科学统计api,带过了。(有点“随笔”的感觉了…)2. 一些场景having 中使用聚合函数作为过滤条件 较where子句的逐行过滤来说,效率更优grouping、sets、cube、rollup 用作分组集(分组聚集),也就是将分组字段以组合的方式罗列出来借助arra原创 2021-08-26 00:01:43 · 2171 阅读 · 0 评论 -
postgreSQL 窗口函数
0.明明前不久还在杵前端的…pgsql 12 官方中文文档1.为什么需要窗口函数group by的分组查询方式对于复杂结果集的处理来说,粒度还是不够细,要是可以结果集中不同的组进行局部的操作就好了,对吧?2.文档中出现的一些概念说是概念,其实也就是对于窗口函数使用过程中出现的不同类型的情况的一些划分逻辑层次一整个的结果集(WHERE、GROUP BY、HAVING过滤后的) 分区 窗口帧 当前行 平级行2.1 分区(partition by)窗口函数不会使多行被聚集成一原创 2021-08-23 00:27:29 · 541 阅读 · 1 评论 -
PostgreSQL 常用函数
lpad() rpad() 填充一段字符串ltrim() rtrim() 截去一段字符串coalease() 返回参数列表中第一个不为null的项greatest() 返回参数列表中值最大的项least() 返回参数列表中值最小的项数据类型转换to_类型名称()::类型名称extract(epoch from ) 转换成秒CURRENT_DATE 、CURRENT_TIME 、CURRENT_TIMESTAMP 获取事务开始时间now() 获取实时(被调用时候的时间)时间日期/时间计算原创 2021-07-25 20:47:00 · 1070 阅读 · 0 评论 -
PL/pgSQL 内部机制
1.变量替换一个PL/pgSQL函数中的 SQL 语句和表达式能够引用该函数的变量和参数。在现象背后,PL/pgSQL会为这些引用替换查询参数。只有在语法上允许一个参数或列引用的地方才会替换参数。不多解释,直接上反例:INSERT INTO foo (foo) VALUES (foo);PostgreSQL 9.0 之前的版本将尝试替换所有三种情况的变量,这会导致语法错误。1.1 如何解决变量名的冲突问题1.1.1 重命名变量或列例如,将函数变量统一地命名为v_something,而列名不会原创 2021-07-12 23:41:08 · 320 阅读 · 1 评论 -
PL/pgSQL 流程控制
1.返回1.1 RETURN用于不返回非集合的结果RETURN expression;-- 返回一个标量类型的函数RETURN 1 + 2;RETURN scalar_var;-- 返回一个组合类型的函数RETURN composite_type_var;RETURN (1, 2, 'three'::text); -- 必须把列造型成正确的类型1.2 RETURN NEXT以及RETURN QUERY 返回结果集RETURN NEXT expression;RETURN QUE原创 2021-07-11 23:09:50 · 989 阅读 · 0 评论 -
PL/pgSQL 表达式
0.表达式的实现方式:你写的:IF expression THEN ...将被被服务器的主SQL执行器处理成一个查询:SELECT expressionsql实际上执行的是PREPARE命令:PREPARE statement_name(integer, integer) AS SELECT $1 < $2;每一次IF语句的执行,这个预备语句都会被EXECUTE,执行时使用变量的当前值作为参数值。1.赋值variable { := | = } expression;如果没有原创 2021-07-05 23:26:19 · 776 阅读 · 0 评论 -
PL/pgSQL 语法
函数体:函数体就是简单的一个字符串。在写函数体时,使用美元符号引用(使用$xxx$包括起来)通常比使用普通单引号语法更有帮助。如果没有美元引用,函数体中的任何单引号或者反斜线必须通过双写来转义。块结构:PL/pgSQL函数体的外部有一个隐藏的“外层块”包围着。这个块提供了该函数参数(如果有)的声明,其参数和特殊变量可以用该函数的名称限定。[ <<label>> ][ DECLARE declarations ]BEGIN statementsEND [ la原创 2021-07-05 23:08:19 · 648 阅读 · 0 评论 -
PL/pgSQL 前言
1.简介底层:pgSQL是由c语言编写的,pgSQL允许使用SQL或c以外的语言编写自定义的函数,这些其他语言被称为PL(过程语言)引擎(处理器):pgSQL将使用该语言对应的引擎(处理器)去解析,处理器本身是一个编译到共享对象并且按需载入的C语言函数使用环境:用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。作用:用于创建函数以及触发器过程对sql增加控制结构可以执行复杂的计算继承所用用户定义原创 2021-07-05 22:59:45 · 275 阅读 · 0 评论