当前位置: 首页 > news >正文

DB2—03(DB2中常见基础操作)

DB2—03(DB2中常见基础操作)

  • 1. 前言
    • 1.1 oracle和mysql相关
  • 2. db2中的"dual"
    • 2.1 SYSIBM.SYSDUMMY1
    • 2.2 使用VALUES
    • 2.3 SYSIBM.SYSDUMMY1 "变" dual
  • 3. db2中常用函数
    • 3.1 nvl()、value()、COALESCE()
    • 3.2 NULLIF() 函数
    • 3.3 LISTAGG() 与 xml2clob()、xmlagg()
  • 4. DB2中自定义函数
    • 4.1 简单入门函数
      • 4.1.1 语法结构
      • 4.1.2 例子
        • 4.1.2.1 例子1——求两数和
        • 4.1.2.2 例子2——自定义等差数列的n项和
    • 4.2 返回table的自定义函数
    • 4.3 自定义递归查询函数
  • 5. 解决 db2-表 处于暂挂状态

1. 前言

1.1 oracle和mysql相关

  • 部分语法和oracle、mysql都大同小异、关于oracle和mysql的可以看下面的文章:
    • Oracle 常用简单sql操作(insert into、merge into、start with connect by prior以及 regexp_substr等各种函数用法详解).
    • Oracle自定义函数、Oracle存储过程多种用法讲解以及动态创建表的存储过程.
    • Oracle中分割字符串的方法.
    • oracle递归查询(start with connect by prior)以及 树形统计connect_by_root(子节点汇总到父节点).
    • Oracle自定义函数实现递归查询(用自定义函数替换connect_by_root).
    • Mysql 创建存储过程和函数及各种例子

2. db2中的"dual"

2.1 SYSIBM.SYSDUMMY1

  • db2中没有这个表,在db2中类似dual表的是 SYSIBM.SYSDUMMY1,效果如下:
    SELECT 1+1 FROM SYSIBM.SYSDUMMY1;SELECT CURRENT DATE FROM SYSIBM.SYSDUMMY1;--查询当前日期
    
    在这里插入图片描述

2.2 使用VALUES

  • 如果嫌 SYSIBM.SYSDUMMY1 麻烦,可以使用 VALUES 命令获取结果,如下:
    VALUES (3+2);values length('abc');values CURRENT DATE;
    
    在这里插入图片描述
    在这里插入图片描述

2.3 SYSIBM.SYSDUMMY1 “变” dual

  • 如果你习惯了dual,那就为 SYSIBM.SYSDUMMY1 创建别名dual,如下:
    CREATE ALIAS dual FOR SYSIBM.SYSDUMMY1; --创建别名SELECT 5+7 FROM dual;
    
    在这里插入图片描述

3. db2中常用函数

3.1 nvl()、value()、COALESCE()

  • 先说一下nvl()
    • nvl(),语法如下:
      nvl(val1,val2)
      
    • 功能:
      如果val1为空(注意:这里的空是null,不算空字符串),则返回val2,否则返回val1本身,例子如下:
      SELECT nvl(null,0),nvl(234,0),nvl('','aa') FROM SYSIBM.SYSDUMMY1; 
      
      在这里插入图片描述
    • 注意:
      其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型
    • value()COALESCE() 用法同nvl()
  • 再说一下nvl2()
    SELECT nvl2(null,0,1),nvl2(234,0,1),nvl2('','不空','空') FROM SYSIBM.SYSDUMMY1; 
    
    在这里插入图片描述
  • 接着说一下 value()COALESCE()
    value()COALESCE() 就简单,因为用法同nvl(),给两个语句,自己下去测测看:
    SELECT value(null,0),value(56,0),value('','bb') FROM SYSIBM.SYSDUMMY1; SELECT COALESCE(null,0),COALESCE(56,0),COALESCE('','bb') FROM SYSIBM.SYSDUMMY1; 
    
    在这里插入图片描述
  • 最后选哪个,个人觉得还是用nvl()nvl2() 吧,除了熟悉之外还有就是以后换数据库的话也好移植。

3.2 NULLIF() 函数

  • 如果相同返回NULL,否则返回第一个参数,如下:
    在这里插入图片描述

3.3 LISTAGG() 与 xml2clob()、xmlagg()

  • 关于这三个函数的使用,如下:
    DB2中实现数据字段的拼接(LISTAGG() 与 xml2clob、xmlagg).

4. DB2中自定义函数

4.1 简单入门函数

4.1.1 语法结构

4.1.2 例子

4.1.2.1 例子1——求两数和
  • 代码如下(end后面不用结束符合):
    create or replace function fun_sum_number(num1 bigint,num2 bigint)
    returns bigint
    BEGINdeclare v_result bigint;SET v_result = num1 + num2;return v_result;
    END
    
  • 测试如下:
    values(fun_sum_number(1,5));
    
    在这里插入图片描述
4.1.2.2 例子2——自定义等差数列的n项和
  • 最小数、最大数以及步长确定的等差数列的n项和,实现代码如下:
    CREATE OR REPLACE FUNCTION fun_all_num_sum(start_num bigint, end_num bigint, step_num bigint)RETURNS bigintLANGUAGE SQLBEGINDECLARE loop_start bigint;DECLARE total_sum bigint;SET loop_start = start_num;SET total_sum = 0;WHILE loop_start <= end_num DOSET total_sum = total_sum + loop_start;--step_num 步长SET loop_start = loop_start + step_num;END WHILE;RETURN total_sum;END
    
  • 效果如下:
    SELECT fun_all_num_sum(1,3,1),fun_all_num_sum(1,4,1),fun_all_num_sum(2,8,2) FROM SYSIBM.SYSDUMMY1 ;
    
    在这里插入图片描述

4.2 返回table的自定义函数

  • 代码如下:
    CREATE OR REPLACE FUNCTION fun_query_dog_by_id(dogId varchar(10)) 
    RETURNS TABLE(DOG_ID varchar(10), dog_name varchar(10), dog_kind varchar(10)
    )
    RETURN
    SELECT DOG_ID, dog_name, dog_kind
    FROM dog
    WHERE dog.DOG_ID  = fun_query_dog_by_id.dogId;
    --或者直接 WHERE dog.DOG_ID  = dogId;
    --WHERE dog.DOG_ID  = dogId;
    
  • 测试如下:
    • 原表数据
      在这里插入图片描述
    • 使用函数查询
      SELECT * FROM table(fun_query_dog_by_id('A10001'));
      
    在这里插入图片描述

4.3 自定义递归查询函数

  • 先看原始数据结构
    在这里插入图片描述
  • 根据部门ID找公司ID,函数实现如下:
    CREATE OR REPLACE FUNCTION fun_get_company_id_by_dept_id(v_dept_id varchar(10))
    RETURNS varchar(10)
    LANGUAGE SQL
    BEGINDECLARE dept_level bigint;DECLARE loop_dept_id varchar(10);DECLARE result_company_id varchar(10);select t.DEPT_LEVEL into dept_level from sys_company_dept t where t.dept_id = v_dept_id;--如果本身就是公司,直接返回,如果是部门循环找上级直到找到公司IDSET loop_dept_id = v_dept_id;WHILE dept_level >= 2 DOSELECT t1.PARENT_ID ,t2.DEPT_LEVEL into loop_dept_id,dept_level FROM sys_company_dept t1LEFT JOIN sys_company_dept t2 ON t1.PARENT_ID  = t2.DEPT_ID where t1.dept_id = loop_dept_id;END WHILE;SET result_company_id = loop_dept_id;RETURN result_company_id;
    END
    
  • 效果如下:
    在这里插入图片描述
  • 递归查询部门及对应的公司列表,如下:
    SELECT temp.*,t2.DEPT_NAME AS company_name FROM (
    SELECT t1.*,fun_get_company_id_by_dept_id(t1.DEPT_ID) AS company_id FROM sys_company_dept t1
    )temp LEFT JOIN sys_company_dept t2 ON temp.company_id = t2.DEPT_ID 
    
    在这里插入图片描述

5. 解决 db2-表 处于暂挂状态

  • 有时当对表数据进行操作时,表锁了,处于暂挂状态,如果其他解决方法不能解决的话可以尝试用以下语句进行解锁,命令语句如下:
    call sysproc.admin_cmd('reorg table 表名')
    

相关文章:

DB2—03(DB2中常见基础操作)

DB2—03&#xff08;DB2中常见基础操作&#xff09; 1. 前言1.1 oracle和mysql相关 2. db2中的"dual"2.1 SYSIBM.SYSDUMMY12.2 使用VALUES2.3 SYSIBM.SYSDUMMY1 "变" dual 3. db2中常用函数3.1 nvl()、value()、COALESCE()3.2 NULLIF() 函数3.3 LISTAGG() …...

华为云cce健康检查有什么用?配置需要注意什么?

华为云cce健康检查 如上图&#xff0c;华为云健康检查可用来探测cce的实例运行状态&#xff0c;必要时cce会自动重启实例&#xff0c;达到cce持续服务。 但是配置时需要注意一下几个方面&#xff0c;否则cce的状态总是有些不正常。 1、http探查比较友好。因为我们的在cce里面…...

微信小程序会议OA-登录获取手机号流程登录-小程序导入微信小程序SDK(从微信小程序和会议OA登录获取手机号到登录小程序导入微信小程序SDK)

目录 获取用户昵称头像和昵称 wx.getUserProfile bindgetuserinfo 登录过程 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties …...

原来 TinyVue 组件库跨框架(Vue2、Vue3、React、Solid)是这样实现的?

本文由 TinyVue 组件库核心成员郑志超分享&#xff0c;首先分享了实现跨框架组件库的必要性&#xff0c;同时通过演示Demo和实际操作向我们介绍了如何实现一个跨框架的组件库。 前言 前端组件库跨框架是什么&#xff1f; 前端组件库跨框架是指在不同的前端框架&#xff08;如…...

自定义label组件

自定义label组件 支持边框绘制 支持shape背景(按指定圆角裁剪,矩形,圆角矩,圆形),支持指定角圆角 支持自定义阴影(颜色,偏移,深度) 边框颜色支持状态选择器 预览 核心绘制辅助类 public class LabelHelper {private final Paint paint;private Paint shadowPaint;private fina…...

【Linux】使用Makefile自动化编译项目:简化开发流程、提高效率

文章目录 示例一&#xff1a;编译一个进度条程序示例二&#xff1a;编译一个简单的程序gcc的几个选项结论 当你开始一个新的软件项目时&#xff0c;编写一个好的Makefile是非常重要的。Makefile是一个文本文件&#xff0c;用于指定如何构建和编译项目。它定义了目标文件、依赖关…...

浅谈开源和闭源的认知

目录 在大型模型的发展中&#xff0c;开源和闭源两种截然不同的开发模式扮演着关键的角色。开源模式通过促进技术共享&#xff0c;吸引了大量优秀人才的加入&#xff0c;从而推动了大模型领域的不断创新。与此相反&#xff0c;闭源模式则着重于保护商业利益和技术优势&#xff…...

你了解Postman 变量吗?

变量是在Postman工具中使用的一种特殊功能&#xff0c;用于存储和管理动态数据。它们可以用于在请求的不同部分、环境或集合之间共享和重复使用值。 Postman变量有以下几种类型&#xff1a; 1、环境变量&#xff08;Environment Variables&#xff09;: 环境变量是在Postman…...

ArmSoM-RK3588编解码之mpp编码demo解析:mpi_enc_test

一. 简介 [RK3588从入门到精通] 专栏总目录mpi_enc_test 是rockchip官方编码 demo本篇文章进行mpi_enc_test 的代码解析&#xff0c;编码流程解析 二. 环境介绍 硬件环境&#xff1a; ArmSoM-W3 RK3588开发板 软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian11 三. …...

【ES6.0】-详细模块化、export与Import详解

【ES6.0】-详细模块化、export与Import详解 文章目录 【ES6.0】-详细模块化、export与Import详解一、模块化概述二、ES6模块化的语法规范三、export导出模块3.1 单变量导出3.2 导出多个变量3.3 导出函数3.4 导出对象第一种第二种&#xff1a; 3.5 类的导出第一种第二种 四、imp…...

网工内推 | Base北京,国企网工运维,最高30k*14薪,IE认证优先

01 万方数据股份有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1.负责完成基础网络组网工作&#xff1b; 2.负责网络对象的访问控制及安全策略&#xff0c;配置VLan&#xff0c;黑白名单、地址转换、故障排查及网络安全监控工作&#xff1b; 3.负责对操作系…...

SQL LIKE 运算符:用法、示例和通配符解释

SQL中的LIKE运算符用于在WHERE子句中搜索列中的指定模式。通常与LIKE运算符一起使用的有两个通配符&#xff1a; 百分号 % 代表零个、一个或多个字符。下划线 _ 代表一个单个字符。 以下是LIKE运算符的用法和示例&#xff1a; 示例 选择所有以字母 “a” 开头的客户&#x…...

编译原理Lab1-用FLEX构造C-Minus-f词法分析器

HNU编译原理lab1实验–根据cminux-f的词法补全lexical_analyer.l文件&#xff0c;完成词法分析器。 本文没有添加任何图片&#xff0c;但是以复制输出的形式展现出来了实验结果。 实验要求&#xff1a; 根据cminux-f的此法补全lexical_analyer.l文件&#xff0c;完成词法分析…...

网络安全之渗透测试入门准备

渗透测试入门所需知识 操作系统基础&#xff1a;Windows&#xff0c;Linux 网络基础&#xff1a;基础协议与简单原理 编程语言&#xff1a;PHP&#xff0c;python web安全基础 渗透测试入门 渗透测试学习&#xff1a; 1.工具环境准备&#xff1a;①VMware安装及使用&#xff1b…...

【MySQL】宝塔面板结合内网穿透实现公网远程访问

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板cpo…...

通过AX6000路由器,实现外部访问内网的任意主机

概述 这里遇到一个场景,就是需要外部的人员,访问我内网的一台设备,进行内外部的设备联调。 这也是实际环境中,很常见的一种场景。 之前的做法是子设备上运行edge节点,可以直接访问。 但有的设备无法运行edge节点,那么可以参考一下这个方案来实现。 此方案可以摒弃了…...

如何应用ChatGPT撰写、修改论文及工作报告,提供写作能力及优化工作??

如果我想让gpt从pdf文档中提取相关关键词的内容&#xff0c;可以怎么做呢&#xff1f;&#xff1f;我们评论区讨论 ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题&#xff0c;ChatGPT都能为您提供实用且高质量的建议和指导&am…...

camera-caps:Jetson设备上的一种实用的V4L2可视化界面

camera-caps&#xff1a;Jetson设备上的一种实用的V4L2可视化界面 github地址是&#xff1a; https://github.com/jetsonhacks/camera-caps 注意&#xff1a;Jetpack5.x需要选择tag 5.x版本...

CAN基础知识

CAN 简介 CAN 是 Controller Area Network 的缩写&#xff08;以下称为 CAN&#xff09;&#xff0c;是 ISO 国际标准化的串行通信 协议。在当前的汽车产业中&#xff0c;出于对安全性、舒适性、方便性、低公害、低成本的要求&#xff0c;各种 各样的电子控制系统被开发了出来…...

vue3跨域怎么解决?

其实很简单 假设一个接口; http://101.42.170.68:10000/open/mockData/test1 首先&#xff0c;看自己项目中有没有vue.config.js文件&#xff0c;如果没有自己创建一个&#xff0c;如果有那吗在其中写。 vue.config.js: //固定格式&#xff0c;修改一部分就行了 const { def…...

STM32串口高效通信实战:用HAL_UART_Transmit_IT+DMA打造不卡顿的日志输出系统

STM32串口高效通信实战&#xff1a;用HAL_UART_Transmit_ITDMA打造不卡顿的日志输出系统 在实时控制系统开发中&#xff0c;日志输出是调试和状态监控的重要手段。但当系统需要处理电机控制、传感器数据采集等高实时性任务时&#xff0c;传统的阻塞式串口打印往往会成为性能瓶颈…...

警惕钓鱼压缩包!WinRAR CVE-2023-38831漏洞的社工利用场景分析与防御建议

警惕钓鱼压缩包&#xff1a;WinRAR漏洞的社会工程学攻击与防御实战指南 当你收到一封标注"2023年第四季度财务报表.zip"的邮件&#xff0c;或是同事通过即时通讯工具发来的"会议纪要.rar"时&#xff0c;是否会毫不犹豫地双击打开&#xff1f;这种看似平常的…...

如何解锁联想拯救者笔记本的隐藏BIOS选项:一位技术爱好者的探索之旅

如何解锁联想拯救者笔记本的隐藏BIOS选项&#xff1a;一位技术爱好者的探索之旅 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具&#xff0c;例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com…...

Book118文档下载器:快速获取在线文档的完整解决方案

Book118文档下载器&#xff1a;快速获取在线文档的完整解决方案 【免费下载链接】book118-downloader 基于java的book118文档下载器 项目地址: https://gitcode.com/gh_mirrors/bo/book118-downloader 你是否经常需要查阅学术文献或技术文档&#xff0c;却因为付费墙或下…...

一个Bug引发血案:AI服务恢复后为何还在报错?——双重缓存污染的排查与治理

写在前面某个周四下午&#xff0c;运维同学告诉我Python AI服务因为网络波动短暂不可用&#xff0c;几分钟后恢复了。但诡异的事情发生了——用户继续提问&#xff0c;系统却依然返回“AI服务暂时不可用”&#xff0c;而且是毫秒级返回。我第一反应是服务没恢复&#xff0c;检查…...

超自动化:RPA+AI Agent 深度融合

超自动化&#xff1a;RPAAI Agent 深度融合 &#x1f4dd; 本章学习目标&#xff1a;本章展望未来趋势&#xff0c;帮助读者把握AI Agent发展方向。通过本章学习&#xff0c;你将全面掌握"超自动化&#xff1a;RPAAI Agent 深度融合"这一核心主题。 一、引言&#xf…...

Flask会话管理:SessionFactory 与 Flask-SQLAlchemy 的生命周期管理

更多内容请见: 《Python Web项目集锦》 - 专栏介绍和目录 文章目录 第一章:解剖底层——原生 SQLAlchemy 的三驾马车 1.1 Engine(引擎):物理连接的工厂 1.2 SessionFactory(会话工厂):会话的流水线 1.3 Session(会话):对象的生命周期容器 第二章:化繁为简——Flask…...

终极指南:深入解析JetBrains IDE评估重置器的架构设计与实现原理

终极指南&#xff1a;深入解析JetBrains IDE评估重置器的架构设计与实现原理 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter JetBrains IDE评估重置器&#xff08;ide-eval-resetter&#xff09;是一款用于重置Je…...

Locale-Emulator终极指南:三步解决Windows程序语言乱码问题

Locale-Emulator终极指南&#xff1a;三步解决Windows程序语言乱码问题 【免费下载链接】Locale-Emulator Yet Another System Region and Language Simulator 项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator 你是否遇到过这样的情况&#xff1a;下载了一…...

OpenWrt 23.05版本解析:路由器与嵌入式系统升级

1. OpenWrt 23.05版本深度解析&#xff1a;从路由器到嵌入式系统的全面升级作为一名长期使用OpenWrt的网络工程师&#xff0c;每次新版本发布都像拆盲盒一样充满期待。这次23.05版本的更新幅度之大&#xff0c;让我不得不连夜刷机测试。这个专为路由器和资源受限设备打造的Linu…...