达梦(DM) SQL数据及字符串操作

达梦DM SQL数据及字符串操作


这里继续讲解DM数据库的操作,主要涉及插入、更新、删除操作。

数据操作

插入数据,不指定具体列的话就需要插入除自增列外的其他列,当然自增列也可以直接指定插入

INSERT INTO SYS_USER VALUES(110,'test002','test002','00',null,'13522266688',0,null,'dfhgjhsfjg','12323',0,0,null,null,'test002','2023-10-23 10:11:11',null,null,null);

执行成功后查看数据
在这里插入图片描述
插入多行,比如创建测试表

CREATE TABLE test

AS

   SELECT user_id,

          user_name,

          login_name,

          phonenumber,

          dept_id

     FROM sys_user

WHERE 1 = 2;

创建成功后查询可以看到表创建成功,带WHERE 1 = 2条件的话,实测是只创建指定字段表结构,不带WHERE条件的话会携带对应字段的数据
在这里插入图片描述

CREATE TABLE test1

AS

   SELECT user_id,

          user_name,

          login_name,

          phonenumber,

          dept_id

     FROM sys_user;

执行结果
在这里插入图片描述
批量插入test表数据

insert into test VALUES (1,'test','test','13511122211',1),(2,'test1','test1','13511122222',1),(3,'test2','test2','13511122233',1);

执行成功后
在这里插入图片描述
可以按指定列插入行,未指定值的列上若定义了默认值,则插入默认值。没有指定默认值,为 NULL,则插入 NULL 值

insert into test (user_id,login_name) VALUES (4,'test3'),(5,'test4');

执行结果如图
在这里插入图片描述
如需快速复制表结构且不需要数据,如需表机构和数据的话 WHERE 1 = 1; 或者不要WHERE条件

CREATE TABLE test2 AS SELECT * FROM test WHERE 1 = 0;

查询表数据库看到
在这里插入图片描述
使用 SP_TABLEDEF 过程查看 test2 的结构,所有定义在 test 列上的约束均没有被新表继承。
为表语句添加约束条件

ALTER TABLE test  ADD PRIMARY KEY (user_id);
ALTER TABLE test  ALTER COLUMN user_name SET DEFAULT 'dm2020';
ALTER TABLE test  ALTER COLUMN login_name SET NOT NULL;
ALTER TABLE test  ALTER COLUMN phonenumber SET DEFAULT '13511122255';

使用 MERGE INTO 语法可合并 UPDATE 和 INSERT 语句,使用 MERGE 可以实现记录“存在则 update,不存在则 insert”的逻辑。
通过 group by + having 子句分组查询的方式,查找员工名称相同的记录

select user_name,count(*) FROM TEST group by USER_NAME HAVING count(*)>1;

查询结果如图
在这里插入图片描述
查询重复数据,通过 group by + rowid 的方式,查找员工名称重复的记录

select * from test where ROWID not in (select max(ROWID) from test group by user_name);

查找到重复记录后直接删除

delete from test where ROWID not in (select max(ROWID) from test group by user_name);

执行完再查询发现重复的1 2 3 4 已经删除了
在这里插入图片描述

字符串操作

使用函数 regexp_count、regexp_replace 或 translate 统计字符串个数
创建视图

CREATE OR REPLACE VIEW v AS SELECT 'STUDENT,TEACHER,TEAM' AS str FROM DUAL;
select * from V;

看到创建成功的视图
在这里插入图片描述
使用函数 regexp_count 统计子串个数

SELECT regexp_count(str,',')+1 as cnt FROM v;

执行结果如图
在这里插入图片描述
使用 regexp_replace 迂回求值统计子串个数

SELECT length(regexp_replace(str,'[^,]'))+1 as cnt FROM v;

使用 translate 统计子串个数

SELECT length(translate(str,',' || str,','))+1 AS cnt FROM v;

使用 translate 或者 regexp_replace 在某个字段中去掉不需要的字符,先创建视图

CREATE OR REPLACE VIEW v

AS

   SELECT 'CLARK' ename FROM DUAL

   UNION ALL

   SELECT 'MILLER' FROM DUAL

   UNION ALL

   SELECT 'KING' FROM DUAL;

创建成功如图
在这里插入图片描述
去掉ename中的元音字母

SELECT ename,translate(ename,'1AEIOU','1') stripped1 FROM v;

可以看到元音字母已经去掉了
在这里插入图片描述
使用正则函数 regexp_replace [] 内列举的字符替换为空

SELECT ename,regexp_replace(ename,'[AEIOU]') AS stripped FROM v;

使用 regexp_replace 正则表达式实现字符串中字符与数字分离,创建测试视图

CREATE OR REPLACE VIEW v

AS

   SELECT 'CLARK10' data FROM DUAL

   UNION ALL

   SELECT 'MILLER20' FROM DUAL

   UNION ALL

   SELECT 'KING30' FROM DUAL;

查询结果如图
在这里插入图片描述
使用 regexp_replace 正则表达式

SELECT REGEXP_REPLACE (data, '[0-9]', '') dname,

       REGEXP_REPLACE (data, '[^0-9]', '') deptno

  FROM v;

执行结果如图
在这里插入图片描述
使用 regexp_like 实现查询只包含字母或者数字型的数据,创建测试视图

  CREATE OR REPLACE VIEW v

AS

   SELECT '123' AS data FROM DUAL

   UNION ALL

   SELECT 'abc' FROM DUAL

   UNION ALL

   SELECT '123abc' FROM DUAL

   UNION ALL

   SELECT 'abc123' FROM DUAL

   UNION ALL

   SELECT 'a1b2c3' FROM DUAL

   UNION ALL

   SELECT 'a1b2c3#' FROM DUAL

   UNION ALL

   SELECT '3$' FROM DUAL

   UNION ALL

   SELECT 'a 2' FROM DUAL;

查询执行结果如图
在这里插入图片描述
在上面的语句中,有些数据包含了空格、逗号、$ 等字符。现在要求只返回其中只有字母及数字的行,使用 regexp_like 语句

SELECT data FROM v WHERE REGEXP_LIKE (data, '^[0-9a-zA-Z]+$');

查询结果如图
在这里插入图片描述
注意下方内容
在这里插入图片描述
通过正则表达式或者 translate 函数实现按字符串中的数值排序,创建视图

CREATE OR REPLACE VIEW v

AS

   SELECT 'ACCOUNTING 10 NEW YORK' data FROM DUAL

   UNION ALL

   SELECT 'OPEARTINGS 40 BOSTON' FROM DUAL

   UNION ALL

   SELECT 'RESEARCH 20 DALLAS' FROM DUAL

   UNION ALL

   SELECT 'SALES 30 CHICAGO' FROM DUAL;

执行后查询结果如图
在这里插入图片描述
用正则表达式替换非数字字符

SELECT data, TO_NUMBER (REGEXP_REPLACE (data, '[^0-9]', '')) AS deptno FROM V ORDER BY 2;

执行结果如图
在这里插入图片描述
使用 translate 函数,直接替换掉非数字字符

SELECT data,TO_NUMBER (TRANSLATE (data, '0123456789' || data, '0123456789'))AS deptno FROM V ORDER BY 2;

通过 listagg 分析函数实现多行字段的合并显示,创建视图

CREATE OR REPLACE VIEW v

AS

   SELECT '10' deptno, 'CLARK' name, '800' sal FROM DUAL

   UNION ALL

   SELECT '10', 'KING', '900' FROM DUAL

   UNION ALL

   SELECT '20', 'JAMES', '1000' FROM DUAL

   UNION ALL

   SELECT '20', 'KATE', '2000' FROM DUAL

   UNION ALL

   SELECT '30', 'JONES', '1150' FROM DUAL;

执行结果如图
在这里插入图片描述
使用 listagg 分析函数实现合并显示

SELECT deptno,SUM (sal) AS total_sal,LISTAGG (name, ',') WITHIN GROUP (ORDER BY name) AS total_name FROM v GROUP BY deptno;

执行结果如图
在这里插入图片描述
同 sum 一样,listagg 函数也起到汇总结果作用。sum 将数值结果累计求和,而 listagg 是把字符串的结果连在一起。
通过 regexp_substr 实现第 n 个子串的分割,创建测试视图

CREATE OR REPLACE VIEW v AS SELECT 'CLARK,KATE,JAMES''CLARK,KATE,JAMES' AS name;

执行结果如图
在这里插入图片描述
使用 regexp_substr 分割子串

SELECT REGEXP_SUBSTR (v.name,'[^,]+',1,2) AS 子串 FROM v;

执行结果如图
在这里插入图片描述
说明:
参数 1:“^”在方括号里表示否的意思,+ 表示匹配 1 次以上。第二个参数表示匹配不包含逗号的多个字符。
参数 2:“1”表示从第一个字符开始。
参数 3:“2”表示第二个能匹配目标的字符串,也就是 KATE。

使用 regexp_substr 实现字符串拆分。比如将 IP 地址“192.168.1.111”中的各段取出来

SELECT REGEXP_SUBSTR (v.ip,'[^.]+',1,1)a,

       REGEXP_SUBSTR (v.ip,'[^.]+',1,2)b,

       REGEXP_SUBSTR (v.ip,'[^.]+',1,3)c,

       REGEXP_SUBSTR (v.ip,'[^.]+',1,4)d

FROM (SELECT '192.168.1.111' AS ip FROM DUAL) v;

执行结果如图
在这里插入图片描述
到这里数据新增,修改,删除的操作以及字符串的相关操作就介绍完了。

第1章结构化查询语言DM_SQL简介 ................................................................................................. 1 1.1 DM_SQL语言的特点 ................................................................................................................. 1 1.2 保留字与标识符 ........................................................................................................................ 2 1.3 DM_SQL语言的功能及语句 ..................................................................................................... 2 1.4 DM_SQL所支持的数据类型 ..................................................................................................... 3 1.4.1 常规数据类型 .................................................................................................................... 3 1.4.2 日期时间数据类型 ............................................................................................................ 6 1.4.3 多媒体数据类型 ................................................................................................................ 9 1.4.4 数据类型别名 .................................................................................................................... 9 1.5 DM_SQL语言支持的表达式 ..................................................................................................... 9 1.5.1 数值表达式 ...................................................................................................................... 10 1.5.2 字符串表达式 .................................................................................................................. 11 1.5.3 时间值表达式 .................................................................................................................. 12 1.5.4 时间间隔值表达式 .......................................................................................................... 13 1.5.5 运算符的优先级 .............................................................................................................. 14 1.6 DM_SQL语言支持的数据库模式 ........................................................................................... 15 第2章本手册中的实例说明 ............................................................................................................... 16 2.1 实例库说明 .............................................................................................................................. 16 2.2 参考脚本 ................................................................................................................................. 24 第3章数据定义语句 ........................................................................................................................... 42 3.1 数据库定义语句 ...................................................................................................................... 42 3.2 数据库修改语句 ...................................................................................................................... 44 3.3 数据库删除语句 ...................................................................................................................... 46 3.4 设置当前数据库语句 .............................................................................................................. 46 3.5 登录定义语句 .......................................................................................................................... 47 3.6 登录修改语句 .......................................................................................................................... 51 3.7 登录删除语句 .......................................................................................................................... 53 3.8 用户定义语句 .......................................................................................................................... 53 3.9 用户修改语句 .......................................................................................................................... 54 3.10 用户删除语句 ........................................................................................................................ 54 3.11 模式定义语句 ........................................................................................................................ 55 3.12 设置当前模式语句 ................................................................................................................ 56 3.13 模式删除语句 ........................................................................................................................ 57 3.14 基表定义语句 ........................................................................................................................ 57 3.15 基表修改语句 ........................................................................................................................ 68 3.16 基表删除语句 ..................................................................................................................... 74 3.17 全表删除语句 ........................................................................................................................ 75 3.18 索引定义语句 ........................................................................................................................ 76 3.19 索引删除语句 ........................................................................................................................ 78 3.20 序列定义语句 ........................................................................................................................ 79 3.21 序列删除语句 ........................................................................................................................ 80 3.22 全文索引定义语句 ................................................................................................................ 81 3.23 全文索引修改语句 ................................................................................................................ 81 3.24 全文索引删除语句 ................................................................................................................ 82 II 3.25 数据库快照定义语句 ............................................................................................................ 83 3.26 数据库快照删除语句 ............................................................................................................ 84 第4章数据查询语句和全文检索语句 ............................................................................................... 85 4.1 单表查询 ................................................................................................................................. 91 4.1.1 简单查询 .......................................................................................................................... 91 4.1.2 带条件查询 ...................................................................................................................... 92 4.1.3 集函数 .............................................................................................................................. 94 4.1.4 情况表达式 ...................................................................................................................... 96 4.2 连接查询 ................................................................................................................................. 98 4.3 子查询 ................................................................................................................................... 105 4.3.1 标量子查询 .................................................................................................................... 106 4.3.2 表子查询 ........................................................................................................................ 107 4.3.3 派生表子查询 ................................................................................................................ 109 4.3.4 定量比较 ........................................................................................................................ 110 4.3.5 带EXISTS谓词的子查询 ............................................................................................... 111 4.3.6 多列表子查询 ................................................................................................................ 112 4.4 查询结果的合并 .....................................................................................................................113 4.5 GROUP BY和HAVING子句 ...................................................................................................114 4.5.1 GROUP BY子句的使用 ................................................................................................. 114 4.5.2 HAVING子句的使用 ...................................................................................................... 115 4.6 ORDER BY子句 ......................................................................................................................116 4.7 选取前几条数据 .....................................................................................................................117 4.8 选取其中几条数据 .................................................................................................................117 4.9 全文检索 ................................................................................................................................118 4.10 层次查询 .............................................................................................................................. 120 4.10.1 层次查询子句 .............................................................................................................. 120 4.10.2 层次查询相关伪列 ...................................................................................................... 121 4.10.3 层次查询相关操作符 .................................................................................................. 121 4.10.4 层次查询相关函数 ...................................................................................................... 121 4.11 查看执行计划 ...................................................................................................................... 125 第5章数据的插入、删除和修改 ..................................................................................................... 126 5.1 数据插入语句 ........................................................................................................................ 126 5.2 数据修改语句 ........................................................................................................................ 129 5.3 数据删除语句 ........................................................................................................................ 130 5.4 伪列的使用 ............................................................................................................................ 131 5.4.1 ROWID ........................................................................................................................... 131 5.4.2 UID和USER .................................................................................................................... 132 5.4.3 ROWNUM ...................................................................................................................... 132 5.5 DM自增列的使用 ................................................................................................................... 132 5.5.1 DM自增列定义 ............................................................................................................... 132 5.5.2 SET IDENTITY_INSERT 属性 ..................................................................................... 133 第6章视图 ........................................................................................................................................ 136 6.1 视图的作用 .......................................................................................................................... 136 6.2 视图的定义 ............................................................................................................................ 137 6.3 视图的删除 ............................................................................................................................ 139 6.4 视图的查询 ............................................................................................................................ 140 III 6.5 视图数据的更新 .................................................................................................................... 141 第7章嵌入式SQL ............................................................................................................................. 143 7.1 SQL前缀和终结符 ................................................................................................................. 143 7.2 宿主变量 ............................................................................................................................... 143 7.2.1 输入和输出变量 ............................................................................................................ 144 7.2.2 指示符变量 .................................................................................................................... 145 7.3 服务器登录与退出 ................................................................................................................ 145 7.3.1 登录服务器 .................................................................................................................... 145 7.3.2 退出服务器 .................................................................................................................... 146 7.4 游标的定义与操纵 ................................................................................................................ 146 7.4.1 定义游标语句 ................................................................................................................ 147 7.4.2 打开游标语句 ................................................................................................................ 147 7.4.3 拨动游标语句 ................................................................................................................ 148 7.4.4 关闭游标语句 ................................................................................................................ 150 7.4.5 关于可更新游标 ............................................................................................................ 150 7.4.6 游标定位删除语句 ........................................................................................................ 150 7.4.7 游标定位修改语句 ........................................................................................................ 151 7.5 单元组查询语句 .................................................................................................................... 152 7.6 动态SQL ............................................................................................................................... 153 7.6.1 EXECUTE IMMEDIATE立即执行语句 ........................................................................ 154 7.6.2 PREPARE准备语句 ........................................................................................................ 155 7.6.3 EXCUTE执行语句 ......................................................................................................... 155 7.7 异常处理 ............................................................................................................................... 156 第8章函数 ........................................................................................................................................ 157 8.1 数值函数 ............................................................................................................................... 166 8.2 字符串函数 ............................................................................................................................ 173 8.3 日期时间函数 ........................................................................................................................ 184 8.4 空值判断函数 ........................................................................................................................ 193 8.5 类型转换函数 ........................................................................................................................ 194 8.6 杂类函数 ............................................................................................................................... 195 8.7 系统函数 ............................................................................................................................... 196 8.8 存储加密函数 ........................................................................................................................ 215 8.9 标记处理函数 ........................................................................................................................ 222 8.10 备份恢复函数 ...................................................................................................................... 223 8.11 附加分离数据库 .................................................................................................................. 230 第9章一致性和并发性 ..................................................................................................................... 233 9.1 DM事务相关语句 ................................................................................................................... 233 9.1.1 事务的开始 .................................................................................................................... 233 9.1.2 事务的结束 .................................................................................................................... 233 9.1.3 保存点相关语句 ............................................................................................................ 234 9.1.4 设置事务隔离级及读写特性 ........................................................................................ 235 9.2 DM手动上锁语句 ................................................................................................................... 236 第10章存储模块 ............................................................................................................................... 238 10.1 存储模块的定义 .................................................................................................................. 238 10.2 存储模块的删除 .................................................................................................................. 246 10.3 存储模块的控制语句 .......................................................................................................... 247 IV 10.3.1 语句块 .......................................................................................................................... 247 10.3.2 赋值语句 ...................................................................................................................... 249 10.3.3 条件语句 ...................................................................................................................... 249 10.3.4 循环语句 ...................................................................................................................... 250 10.3.5 EXIT语句 ...................................................................................................................... 252 10.3.6 调用语句 ...................................................................................................................... 253 10.3.7 RETURN语句 ............................................................................................................... 255 10.3.8 NULL语句 .................................................................................................................... 255 10.3.9 GOTO语句 .................................................................................................................... 255 10.3.10 RAISE语句 ................................................................................................................. 256 10.3.11 打印语句 .................................................................................................................... 256 10.4 存储模块的异常处理 .......................................................................................................... 256 10.4.1 异常变量的说明 .......................................................................................................... 257 10.4.2 异常的抛出 .................................................................................................................. 257 10.4.3 异常处理器 .................................................................................................................. 257 10.4.4 异常处理用法举例 ...................................................................................................... 257 10.5 存储模块的SQL语句 .......................................................................................................... 259 10.5.1 游标 .............................................................................................................................. 259 10.5.2 动态SQL ...................................................................................................................... 260 10.5.3 游标变量 ...................................................................................................................... 261 10.5.4 返回查询结果集 .......................................................................................................... 261 10.5.5 SQL语句应用举例 ........................................................................................................ 261 10.6 客户端存储模块 .................................................................................................................. 264 10.7 子过程、子函数 .................................................................................................................. 265 10.7.1 子过程 .......................................................................................................................... 265 10.7.2 子函数 .......................................................................................................................... 266 10.8 %TYPE、%ROWTYPE ....................................................................................................... 266 10.8.1 %TYPE .......................................................................................................................... 266 10.8.2 %ROWTYPE ................................................................................................................ 267 10.9 记录类型 .............................................................................................................................. 267 10.9.1 记录类型定义 .............................................................................................................. 267 10.9.2 记录赋值 ...................................................................................................................... 268 第11章触发器 .................................................................................................................................. 270 11.1 触发器的定义 ...................................................................................................................... 270 11.1.1 触发器类型 .................................................................................................................. 277 11.1.2 触发器激发顺序 .......................................................................................................... 279 11.1.3 新、旧行值的引用 ...................................................................................................... 280 11.1.4 触发器谓词 .................................................................................................................. 281 11.1.5 变异表 .......................................................................................................................... 282 11.1.6 设计触发器的原则 ...................................................................................................... 283 11.2 触发器的删除 ...................................................................................................................... 284 11.3 禁止和允许触发器 .............................................................................................................. 284 11.4 触发器应用举例 .................................................................................................................. 286 11.4.1 使用触发器实现审计功能 .......................................................................................... 286 11.4.2 使用触发器维护数据完整性 ...................................................................................... 286 11.4.3 使用触发器保障数据安全性 ...................................................................................... 287 V 11.4.4 使用触发器派生字段值 .............................................................................................. 288 第12章DM安全管理 ..................................................................................................................... 289 12.1 创建角色语句 ...................................................................................................................... 289 12.2 删除角色语句 ...................................................................................................................... 290 12.3 授权语句(数据库权限) ....................................................................................................... 290 12.4 授权语句(对象权限) ........................................................................................................... 291 12.5 授权语句(角色权限) ........................................................................................................... 295 12.6 回收权限语句(数据库权限) ............................................................................................... 295 12.7 回收权限语句(对象权限) ................................................................................................... 297 12.8 回收权限语句(角色权限) ................................................................................................... 299 12.9 策略与标记管理 .................................................................................................................. 300 12.9.1 创建策略 ...................................................................................................................... 300 12.9.2 修改策略 ...................................................................................................................... 300 12.9.3 删除策略 ...................................................................................................................... 302 12.9.4 安全标记 ...................................................................................................................... 302 12.9.5 用户标记设置语句 ...................................................................................................... 303 12.9.6 表标记设置语句 .......................................................................................................... 306 12.10 审计设置语句 .................................................................................................................... 308 12.11 审计取消语句 .................................................................................................................... 312 12.12 审计信息查阅语句 ............................................................................................................ 314 12.13 审计分析 ............................................................................................................................ 314 12.13.1 创建审计分析规则 .................................................................................................... 314 12.13.2 删除审计分析规则 .................................................................................................... 316 12.14加密引擎 ............................................................................................................................. 316 12.14.1 创建加密引擎 ............................................................................................................ 316 12.14.2 修改加密引擎 ............................................................................................................ 317 12.14.3 删除加密引擎 ............................................................................................................ 320 第13章外部链接 ............................................................................................................................... 321 13.1 创建外部链接 ...................................................................................................................... 321 13.2 删除外部链接 ...................................................................................................................... 322 13.3 使用外部连接进行远程对象操作 ...................................................................................... 322 第14章DM备份还原 ......................................................................................................................... 324 14.1 备份数据库 .......................................................................................................................... 324 14.2 还原数据库 .......................................................................................................................... 325 第15章包 ......................................................................................................................................... 327 15.1 创建包 ................................................................................................................................. 327 15.1.1 创建包规范 .................................................................................................................. 327 15.1.2 创建包主体 .................................................................................................................. 327 15.2 删除包 ................................................................................................................................. 328 15.2.1 删除包规范 .................................................................................................................. 328 15.2.2 删除包主体 .................................................................................................................. 329 15.3 应用实例 .............................................................................................................................. 329 第16章同义词 .................................................................................................................................. 332 16.1 创建同义词 .......................................................................................................................... 332 16.2 删除同义词 .......................................................................................................................... 332 附录1 关键字和保留字 ...................................................................................................................... 334 VI 附录2 SQL语法描述说明 ................................................................................................................... 338 附录3 SQL命令参考 ........................................................................................................................... 341 附录4系统存储过程和函数 ............................................................................................................... 343 附录5 DM技术支持 ............................................................................................................................ 387
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

csdn565973850

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

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

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

打赏作者

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

抵扣说明:

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

余额充值