数据库02-05 高级SQL 触发器,SQL函数,分窗

本文详细介绍了JDBC高级SQL特性、SQL函数的使用,涉及while/for循环、异常处理和触发器定义。此外,探讨了递归查询、分窗函数(包括COUNT、SUM、RANK、DENSE_RANK和ROW_NUMBER)以及OVER()在SQL中的应用,特别是在窗口函数的大小和结构方面。
摘要由CSDN通过智能技术生成

01.JDBC是一个高级的SQL特性。
02.

02.SQL函数

返回一个数值(dept_name这个参数以后会在where中使用)
在这里插入图片描述
返回一个关系(dept_name这个参数以后会在where中使用)
在这里插入图片描述

有输入有输出参数
在这里插入图片描述
03.SQL函数内的语句
在这里插入图片描述
while循环

for循环

if判断

在这里插入图片描述
异常处理:
在这里插入图片描述
在这里插入图片描述
04.触发器
定义:
在这里插入图片描述
作用:
在这里插入图片描述
在这里插入图片描述
触发器中的when(满足括号中的条件后才会执行下面后的语句):
在这里插入图片描述

修改的触发器 update of 关系名 on 关系中的属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
05.递归查询
在这里插入图片描述
查询递归的关系的条件:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
用子图进行查询:
在这里插入图片描述
在这里插入图片描述

06.分窗函数:
一.定义:
既要对数据进行分组,又要对每个组进行某种聚合运算,同时还要对每行输出对应的聚合运算的结果(用 group by 很难实现)。

举例:有一组数据,包含以下字段:城市,姓名,年龄,性别。需求是找出同龄人以及城市人数,按照如下格式输出:城市,姓名,年龄,性别,人数,同龄人人数。

窗函数本质还是聚合运算,只不过它更具灵活性,它对数据每一行都会返回符合条件的数据,这样就避免了非常复杂的查询语句。

二.窗函数的结构:

窗函数基本上是一个聚合函数加上 OVER 关键字组成,比如:

COUNT(*)OVER()

SUM(*)OVER()

SQL的over函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

窗口函数是在所有JOIN,WHERE,GROUP BY和HAVING子句之后以及ORDER BY,LIMIT和SELECT DISTINCT之前的结果集上执行的

三.排名函数:rank()over()

在这里插入图片描述

SQL中的rank()函数分类:

RANK():计算排序,如果存在相同位次的记录,为相同的值分配相同的数字,但会跳过之后的位次。

DENSE_RANK():同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次。

ROW_NUMBER() :从1开始,返回每组内部排序后的顺序编号(组内连续的唯一的)
Select rank() over(order by s_score desc) as 名次,s_class,s_id,s_score from s_score

在这里插入图片描述

Select rank() over(partition by s_class order by s_score desc) as 名次,s_class,s_id,s_score from s_score

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四.over分窗函数:over()

可以选择窗口的大小:
在这里插入图片描述

不固定大小:
在这里插入图片描述

前面的是preceding,还有following
在这里插入图片描述
用between and 来用窗口大小:
在这里插入图片描述

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值