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

news2024/11/12 4:13:12

达梦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;

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1679568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024最新Kali Linux安装教程(非常详细)从零基础入门到精通(附安装包)!

什么是Kali Linux? Kali Linux是一个高级渗透测试和安全审计Linux发行版,其功能非常强大,能够进行信息取证、渗透测试、攻击WPA / WPA2保护的无线网络、离线破解哈希密码、将android、Java、C编写的程序反编译成代码等等,是黑客的…

iOS ------ 多线程基础

一,进程和线程 1,进程 定义: 进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专有的且受保护的内存进程是系统进行资源分配和调度的一个独立单位 补充:iOS系统是相对封闭的系统&a…

cdn引入vue的项目嵌入vue组件——http-vue-loader 的使用——技能提升

最近在写MVC的后台,看到全是jq的写法,但是对于用惯了vue的我,真是让我无从下手。。。 vue的双向绑定真的很好用。。。 为了能够在cdn引入的项目中嵌入vue组件,则可以使用http-vue-loader了 步骤1:下载http-vue-loader…

电子邮箱是什么?付费电子邮箱和免费电子邮箱有什么区别?

注册电子邮箱前,有付费电子邮箱和免费电子邮箱两类选择。付费的电子邮箱和免费的电子邮箱有什么区别呢?区别主要在于存储空间、功能丰富度和售后服务等方面,本文将为您详细介绍。 一、电子邮箱是什么? 电子邮箱就是线上的邮局&a…

详解绝对路径和相对路径的区别

绝对路径和相对路径是用于描述文件或目录在文件系统中位置的两种不同方式。 绝对路径(Absolute Path)是从文件系统的根目录开始的完整路径,可以唯一地确定一个文件或目录的位置。在不同的操作系统中,根目录的表示方式可能略有不同…

SQL注入漏洞常用绕过方法

SQL注入漏洞 漏洞描述 Web 程序代码中对于用户提交的参数未做过滤就直接放到 SQL 语句中执行,导致参数中的特殊字符打破了原有的SQL 语句逻辑,黑客可以利用该漏洞执行任意 SQL 语句,如查询数据、下载数据、写入webshell 、执行系统命令以及…

ADS FEM 仿真设置

1、EM Simulator 选择FEM。 2、在layout界面打开的EM功能,这里不需要操作。 3、Partitioning 不需要操作。 4、没有叠层的话需要新建,过孔可以在叠层处右键添加。 5、端口需要设置GND layer。 6、设置仿真频率。 7、Output plan。 8、Options 设置 介质…

【企业宣传片】拍摄思维提升,专业影视质感核心揭密,一课搞定

课程下载:【企业宣传片】拍摄-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载:关注我。 课程介绍 大量案例分析宣传片拍摄的痛点要点 根据案例告诉你解决方案,讲透概念 改变你对企业宣传片的思维层级与认知 归纳总结对比不同案…

【C -> Cpp】由C迈向Cpp (6):静态、友元和内部类

标题:【C -> Cpp】由C迈向Cpp (6):静态、友元和内部类 水墨不写bug (图片来源于网络) 目录 (一)静态成员 (二)友元 (三&#xff09…

GDPU 竞赛技能实践 天码行空 期末小测

1. 除法(原题) 👨‍🏫 实验二:1.简单枚举 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0&a…

【三家飞机制造商】

1.Boeing 波音 F-15战机 B-52轰炸机 阿帕奇攻击直升机 E-3 2 .Lockheed Martin 洛克希德马丁 F35 F22 F16 F117 C130 U2 3 Raytheon 雷神

基于微信小程序+JAVA Springboot 实现的【智慧乡村旅游服务平台】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称: 基于微信小程序的智慧乡村旅游服务平台的设计与实现 项目技术栈 该项目采用了以下核心技术栈: 后端框架/库: Java SSM框架数据库: MySQL前端技术: 微信开发者工具、uni-app其他技术&#xff1a…

迷宫游戏(c++)

我们来玩一个迷宫游戏,尝试走一下面的迷宫。 迷宫游戏 我们用一个二维的字符数组来表示前面画出的迷宫: S**. .... ***T 其中字符S表示起点,字符T表示终点,字符*表示墙壁,字符.表示平地。你需要从S出发走到T&#xf…

RALL-E: Robust Codec Language Modeling with Chain-of-Thought Prompting for TTS

demo pageDetai Xin, tanxu微软 & 东大 & 浙大 abstract 使用CoT的思路,和Valle的框架,先实现LLM预测音素级别pitch/duration,然后预测speech token。 methods Prosody tokens as chain-of-thought prompts 和Valle一…

面试前端随笔20240510

最近公司招聘前端开发人员有幸参与帮听,总结了三个有关vue的面试问题和答案,现在分享一下。 1.Vue2数据监听无法监听数组为啥?有啥解决方案?vue3中是如何处理这个问题? vue2的官方说明了defineProperty的一些限制&…

脉冲水路清洗机,全自动脉冲技术清除管道堵塞

邦注脉冲水路清洗机是一种高效的清洗设备,它利用全自动脉冲技术来清除管道内的堵塞和污垢。以下是对该设备的一些详细描述: 全自动脉冲技术:脉冲水路清洗机采用了全自动脉冲技术,这是一种先进的清洗方法。该技术通过产生高强度的…

3D Web轻量化引擎HOOPS Communicator如何处理DWG文件中的图纸?

在当今工程设计和建筑领域,数字化技术已经成为不可或缺的一部分。HOOPS Communicator作为一种强大的三维数据可视化工具,被广泛应用于处理各种CAD文件,其中包括AutoCAD的DWG格式。在这篇文章中,我们将探讨HOOPS Communicator是如何…

湖南大学OS-2018期末考试(不含解析)

前言 不知道哪里翻出来的一张,看着确实像期末考卷,暂且放一下。或许做过,或许没做过。 总之答案不记得了。做完可以评论区发一下或者找我发出来。 共6道大题。 一、(30%) 1. (6%) 进程间通信的两种方法分别是什么&…

GIN框架_请求参数

请求参数 1. Get请求参数 使用Get请求传参时,类似于这样 http://localhost:8080/user/save?id11&namezhangsan。 如何获取呢? 1.1 普通参数 request url: http://localhost:8080/user/save?id11&namezhangsan r.GET("/user/save&qu…

【Web】CTFSHOW 月饼杯 题解(全)

目录 web1_此夜圆 web2_故人心 web3_莫负婵娟 web1_此夜圆 拿到源码&#xff0c;一眼字符串逃逸 本地测一测&#xff0c;成功弹出计算器 <?phpclass a {public $uname;public $password;public function __wakeup(){system(calc);} }function filter($string){retur…