DB2数据库操作日常记录

IBIM的数据库

1、DB2 修改列属性 设置默认值

1.更改类型(设置为主键的列不能更改类型)

ALTER TABLE "SCHEMA"."TABLENAME" ALTER COLUMN "COL" SET DATA TYPE VARCHAR(32);  

2.更改默认值

ALTER TABLE "SCHEMA"."TABLENAME" ALTER COLUMN "COL" SET DEFAULT 'ABC';  

系统默认值:

ALTER TABLE "SCHEMA"."TABLENAME" ALTER COLUMN "COL" SET DEFAULT; --设置默认值  
ALTER TABLE "SCHEMA"."TABLENAME" ALTER COLUMN "COL" DROP DEFAULT; --删除默认

3.更改是否允许空值

ALTER TABLE "SCHEMA"."TABLENAME" ALTER COLUMN "COL" SET NOT NULL;  
ALTER TABLE "SCHEMA"."TABLENAME" ALTER COLUMN "COL" DROP NOT NULL;  

更改列类型,是否允许空值后,需要执行REORG TABLE “TABLENAME”;
更改默认值后,通常需要执行

UPDATE "SCHEMA"."TABLENAME" SET "COL" = DEFAULT WHERE "COL" IS NULL; 

4.sum

SELECT MANUFACTORY_ID as "manuFactoryId",
       DEVICE_ID       as "deviceId",
       DEVICE_NAME     as "deviceName",
       SUM(QTYD_01)    as "qtyd01",
       SUM(QTYD_02)    as "qtyd02",

  group by MANUFACTORY_ID,DEVICE_ID,DEVICE_NAME;

5.decimal

官网

    decimal(SUM(QTYD_01),2)    as  "qtyd01",

6.版本查看

-- 查看版本
 SELECT service_level, fixpack_num FROM TABLE(sysproc.env_get_inst_info()) as INSTANCEINFO

7.CASE WHEN

CASE WHEN QTYD_01  = 0 THEN 1 END


8.格式化字符日期格式

-- START_DATE = YYYYMMDDHH24
to_date(START_DATE, 'YYYY-MM-DD HH24')

9字符串转DB2日期格式

  TIMESTAMP_FORMAT(START_DATE, 'YYYYMMDDHH24')
  -- 日期格式可以直接加减日期值
START_DATE + 1 DAY - HOUR(START_DATE) HOURS

10.时间格式只保留日期

 DATE (START_DATE) as START_DATE,  
 --   2023-11-01 00:00:00.000000 转为2023-11-01

11. substr的不同

substr是没有为0的下标的,是从1开始的
在这里插入图片描述

12. 拼接两个字段并添加中间字符 || 运算符

也可以添加

    PACKING_TYPE || '_' ||PACKING_SPECIFICATION as "packageType"
SELECT CONCAT(field1, ' ', field2) as combinedField
FROM yourTable;

13.字符串日期加减 (这个月的某一天,上个月的一天等等)

 -- 上个月最后一天
SELECT  TO_CHAR(LAST_DAY(TIMESTAMP_FORMAT('202401','YYYYMM') - 1 MONTHS),'yyyyMMdd') as a FROM    
-- 上个月第一天
SELECT  TO_CHAR(LAST_DAY(TIMESTAMP_FORMAT('202401','YYYYMM') - 2 MONTHS)+1 DAY ,'yyyyMMdd') as a FROM   
-- 这个月第一天
SELECT  TO_CHAR(LAST_DAY(TIMESTAMP_FORMAT('202401','YYYYMM') - 1 MONTHS)+1 DAY ,'yyyyMMdd') as a FROM  
-- 这个月最后一天
SELECT  TO_CHAR(LAST_DAY(TIMESTAMP_FORMAT('202401','YYYYMM'))-1 DAY ,'yyyyMMdd') as a FROM

在这里插入图片描述

14、查看存储过程

-- 查看所有存储过程
SELECT ROUTINENAME, TEXT
FROM SYSCAT.ROUTINES
WHERE ROUTINETYPE = 'P'   and ROUTINESCHEMA = 'schema' ;

15、删除存储过程

-- 删除存储过程

DROP PROCEDURE   名称;

16、创建临时表

    DECLARE GLOBAL TEMPORARY TABLE session.表名 (
        MANUFACTORY_ID VARCHAR(40),
        PLAN_VERSION VARCHAR(40)
    ) ON COMMIT PRESERVE ROWS;

ON COMMIT PRESERVE ROWS
事务提交后保留临时表
ON COMMIT DELETE ROWS;
提交后结束

17、存储过程

CREATE OR REPLACE PROCEDURE GENERATEANDQUERYMONTHSERIES()
BEGIN
end;
end;

18,创建视图(名称备注等)

CREATE VIEW 视图名称 AS 查询sql

CREATE VIEW employee_view AS

SELECT id, name
FROM employee
WHERE department = 'Sales';

给视图设置备注和普通表设置备注一样

参考文章

个人笔记,不同意见,望有交流
直接可以点击跳转连接

作者: RyanDYJ

参考文章

个人笔记,不同意见,望有交流
直接可以点击跳转连接

作者

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Network porter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值