db2增删改查

---------------DB2数据库常用语句---------------
所有SQL语句,不区分大小写,分号可加可不加;多条语句执行时必须加上。
写作顺序
select -> from -> where -> group by -> having -> order by
执行顺序
from -> where -> group by ->having -> select -> order by
建表语句
创建table(table_name=professor)
create table professor(
khdxdh integer,
hydh varchar(12),
hymc varchar(100))
in TBS_PAS --表结构所在表空间
index in TBS_IDX --索引所在表空间
;
create unique index xpkprofessor on professor
(
khdxdh asc
);
查询
select * from professor fetch first 5 rows only
聚合函数
计数count: 计算所有行数:count(*)
计算null以外行数:count(<列名>)
计算去除重复数据后的行数:count(distinct <列名>)
求和 sum
求平均 avg
求最值 max/min
–在SQL语句中实现换行
select ‘中国’||chr(10)||‘你好!!’ from pas_vt
插入数据
基本语法:insert into professor(khdxdh,hydh,hymc) values (1,‘001’,‘zhangsan’);
从其他表复制数据:insert into professor(khdxdh,hydh,hymc) select khdxdh,hydh,hymc from khdx_hy where hydh in (‘0001’,‘0002’);
修改语句
UPDATE PROFESSOR SET KHDXDH=2 WHERE KHDXDH=261;
删除语句
delete FROM 表名称 WHERE 列名称 = 值
–删除整个表(包括表结构)
DROP TABLE 表名称
–删除表中的索引
DROP INDEX index_name ON table_name
表中添加列
ALTER TABLE table_name ADD column_name datatype
表中删除列
ALTER TABLE table_name DROP COLUMN column_name
修改表中列的数据类型
ALTER TABLE table_name ALTER COLUMN column_name set data type datatype;
修改表名
rename table testtable to testtable1
修改表字段名称
ALTER TABLE TEST16 RENAME COLUMN ZJZRR TO ZJZRR1
复制一张表结构
create table jxdx_ckzh_bf as(select * from jxdx_ckzh) definition only
创建表时,声明自增长字段
CREATE TABLE sd_text (
xh INTEGER NOT NULL GENERATED BY
DEFAULT AS IDENTITY(
START WITH 1,
INCREMENT BY 1,
CACHE 20000) ,
name varchar(10),
age INTEGER NOT NULL,
sal DECIMAL(25,4)
)
IN TBS_JXDX
INDEX IN TBS_IDX
;
CREATE UNIQUE INDEX XPKsd_text ON sd_text
(
xh ASC
);
特殊语法类(暂不做详细说明)
–GROUPING ——如果列中的值来自事实数据,则grouping函数返回 0;如果列中的值是 rollup 操作所生成的 null,则返回 1 。
–ROLLUP ——生成的结果集显示了所选列中值的某一层次结构的聚合。
SELECT
CASE WHEN GROUPING (zx.name)='1’AND GROUPING(qy.name)=‘1’ AND GROUPING(yg.ygxm)=‘1’ THEN ‘全公司合计’ ELSE zx.name END AS szxmc
,CASE WHEN GROUPING (zx.name)='0’AND GROUPING(qy.name)=‘1’ AND GROUPING(yg.ygxm)=‘1’ THEN ‘合计’ ELSE qy.name END AS qymc
,CASE WHEN GROUPING (zx.name)='0’AND GROUPING(qy.name)=‘0’ AND GROUPING(yg.ygxm)=‘1’ THEN ‘小计’ ELSE yg.ygxm END AS ygxm
,SUM(gz.YGGZ) gz
FROM tw_yggzb gz
INNER JOIN tw_ygxxb yg ON gz.ygid=yg.ygid
iNNER JOIN tw_project pr oN pr.id=yg.xmid
INNER JOIN tw_project qy ON qy.id =pr.parentid
INNER JOIN tw_project Zx ON Zx.id =qy.parentid
GROUP BY ROLLUP( zx.name,qy.name,yg.ygxm)
ORDER BY ZX.name,qy.name,yg.ygxm

--------------------函数:--------------------
1)case when then else end
2)去空格函数 trim()
3)decimal(a*3.1415+0.005,8,2)–decimal函数本身不具备”四舍五入“功能,而是将在保留的小数位数后的值直接”截断”。语句中的0.005起到了”四舍五入“的结果
4)substr(string,start,length)–表示取出字符串string的第start位开始的长度为length的字符串。
5)select locate(‘123’,‘123456’) from pas_vt ; 返回值为1
locate(‘a’,‘b’),如果a包含于b,则返回1;不包含则返回0。
6)算数函数 abs()-绝对值
mod()-求余
round()-四舍五入
7)字符串函数 concat(a,b,c) 拼接
upper()或lower()大小写转换
length()计算字符长度
replace(str,from_str,to_str)替换字符串中的部分字符
substr(str,start_position,char_num) 截取字符串中的一部分
8)日期函数 current_date 获取当前日期
current_time 获取当前时间
current_timestamp 获取当前日期和时间
extract(<year/month/day/hour/minute> from <日期>) 截取日期元素
9)转换函数 coalesce(a,b) 返回左侧开始第一个不是null的值
cast(hy.hydh as decimal(25,4)) 强制类型转换
10)位置:POSSTR(EXP1,EXP2),LOCATE(ARG1,ARG2,) 函数,POSSTR函数返回EXP2在EXP1中的位置。LOCATE函数在ARG2中查找ARG1第一次出现的位置,如果指定POS,则从ARG2的POS处开始查找ARG1第一次出现的位置。

  • 0
    点赞
  • 5
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

暴走的鸡汤

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值