达梦SQL语法兼容笔记

1. DDL工具语法

查看库和表列表

# 查看所有数据库
select distinct object_name  from all_objects where object_type='SCH';
# 查看所有可见的表名:
SELECT table_name FROM all_tables;
# 查看用户可见的所有表
SELECT table_name FROM all_tables WHERE owner = 'schema_name';
# 查看当前连接的数据库名
SELECT sys_context('USERENV', 'DB_NAME') FROM dual;

查询环境参数:

# 查询字符集
SELECT value FROM v$nls_parameters WHERE parameter = 'NLS_CHARACTERSET';
# 查询达梦超时时间
SELECT profile_name, idle_time/60 AS idle_minutes FROM dmdba.dm_user_profiles WHERE profile_name = 'DEFAULT';
# 查看DM版本
select BUILD_VERSION from SYS.V$INSTANCE;
# 查询关键字
select * from V$RESERVED_WORDS;
# 查询页大小。除大字段外,一条记录大小不能超过一页
select page();
# 是否从服务器中取出大字段数据(disql)
SET LOBCOMPLETE <OFF(缺省值) | ON>

表结构:

# 类似于mysql中的show columns、show create table 语句
describe table_name
# 查询表的创建语句:
SELECT DBMS_METADATA.GET_DDL('TABLE', 'meet_conference', 'pc3') AS CREATE_STATEMENT FROM DUAL;
# 变更表结构:
ALTER TABLE meet_conference ADD (node INTEGER, parentConfId VARCHAR(255));

索引信息:

# 查询某张表的唯一索引
SELECT ui.index_name, uic.column_name FROM user_indexes ui JOIN user_ind_columns uic ON ui.index_name = uic.index_name WHERE ui.table_name = 'webcal_live_info' AND ui.uniqueness = 'UNIQUE';
# 联表查询某个用户的所有索引信息
select cc.*, c.* from dba_constraints c, dba_cons_columns cc where c.constraint_name = cc.constraint_name and c.owner = 'uc_uniform' and cc.table_name = 'uc_uniform';# 查询一个表的所有索引条件信息
select * from dba_constraints where table_name = 'conf_summary';
# 查询一个表的所有索引列字段信息
select * from dba_cons_columns where table_name = 'conf_summary';# 查询一个具体约束包含的列字段
select * from dba_cons_columns where constraint_name = 'CONS134225131';
# 查询一个具体约束的条件信息
select * from dba_constraints where constraint_name = 'CONS134225131';

2. 支持自增列插入值

方法:通过设置数据库参数IDENTITY_INSERT来实现。
示例:

SET IDENTITY_INSERT  ums.tang_ums_product ON WITH REPLACE NULL;   
INSERT INTO ums.tang_ums_product (id, name, url, "type") VALUES ('60000', '云会议', 'MeetNow', '0'); 
SET IDENTITY_INSERT  ums.tang_ums_product OFF;

3. 支持大字段比较

方法:修改数据库参数 ENABLE_BLOB_CMP_FLAG 为 1

ENABLE_BLOB_CMP_FLAG:是否支持大字段类型的比较。

  • 0:不支持;
  • 1:支持。

设置为 1 后支持 DISTINCT、ORDER BY、分析函数和集函数支持对大字段进行处理。

注意:该参数并不能支持 GROUP BY 对大字段进行处理。

4. 标识符的MySQL兼容

达梦中采用双引号来作为定界标识符,用双引号括起来时标识符体可以包含任意字符。定界标识符的例子:"table","A","!@#$"

在兼容 MYSQL 的模式下,定界标识符的标识符体除用双引号括起来外,还支持使用反引号进行定界或关键字的转义。如下面所示:

`TABLE_NAME``test`

MySQL的兼容模式可以通过修改dm.ini中数据库兼容参数解决:

COMPATIBLE_MODE=4

查看下数据库这个兼容性参数param_value的值:

select * from v$dm_ini where para_name='COMPATIBLE_MODE'

对于通过MySQL兼容模式来支持反引号这个功能,只有在8.1.3.37之后的版本中才支持,之前的版本只能去掉或者通过双引号。

5. disql命令行对引号的转义

以一个例子说明,如果密码是"aaaa"“aaaa”,则SQL语句中书写格式如下:
在这里插入图片描述

  • 最外层的三个双引号分别表示,将密码括起来的双引号,转移双引号,实际密码双引号;
  • 中间四个双引号分别表示转移双引号,第一个密码双引号,转移双引号,第二个密码双引号;

disql命令行连接数据的书写格式:
在这里插入图片描述

6. 引号转义规则

  • 如果是单引号,再加个单引号转义,用两个连续单引号转义成单引号
  • 如果是双引号,再加个双引号作转义,正规标识符不会包含双引号,有一种定界标识符可以有双引号(可以包含任意字符)
  • 其它特殊字符的转义与Mysql一致,例如:制表符、反斜杠、换行、回车
  • 单引号用来包裹字符串值(双引号不行),双引号用来包裹标识符,例如:字段名和表名。
  • Mysql的兼容:将’替换成’',将"替换成""
  • java的话,可以在驱动连接串加上?quoteReplace=1这个进行兼容

7. replace into语法转换

Mysql语法示例:

REPLACE INTO exchange_bindinfo (userId,resId,bindingData) 
values (1,"abcd","101003")

达梦语法示例:

MERGE INTO exchange_bindinfo t
USING dual
ON (t.userId = 1 AND t.resId = 'abcd')
WHEN MATCHED THENUPDATE SET t.bindingData = '101003'
WHEN NOT MATCHED THENINSERT (userId, resId, bindingData)VALUES (1, 'abcd', '101003');

8. 联表更新语句转换

Mysql语法

UPDATE TESTB LEFT JOIN TESTA 
ON TESTA.A = TESTB.A 
SET TESTB.B = TESTA.B;

达梦语法:

MERGE INTO TESTB 
USING TESTA 
ON (TESTA.A = TESTB.A)
WHEN MATCHED THEN UPDATE SET TESTB.B = TESTA.B

9. on duplicate key update语句转换

Mysql语法:

insert into webcal_live_info(cal_id,channelId,pullurl,password,extraInfo) values(634311,131722,'https://rlive1uat.rmeet.com.cn/activity/geeZWo3','','{"liveViewFlag":0,"livePlaybackFlag":0,"livePlaybackTime":0,"jointHostUrl":"https://stest.qsh1.cn/a/GVaZkX26ACE2"}') on duplicate key update password='', extraInfo='{"liveViewFlag":0,"livePlaybackFlag":0,"livePlaybackTime":0,"jointHostUrl":"https://stest.qsh1.cn/a/GVaZkX26ACE2"}'

达梦语法:

MERGE INTO webcal_live_info t
USING dual
ON (t.cal_id = 634311 AND t.channelId = 131722)
WHEN MATCHED THENUPDATE SET t.password = '', t.extraInfo = '{"liveViewFlag":0,"livePlaybackFlag":0,"livePlaybackTime":0,"jointHostUrl":"https://stest.qsh1.cn/a/GVaZkX26ACE2"}'
WHEN NOT MATCHED THENINSERT (cal_id, channelId, pullurl, password, extraInfo)VALUES (634311, 131722, NULL, '', '{"liveViewFlag":0,"livePlaybackFlag":0,"livePlaybackTime":0,"jointHostUrl":"https://stest.qsh1.cn/a/GVaZkX26ACE2"}');

10. 多条数据的on duplicate key update

Mysql语法:

INSERT INTO users (username, email, age)
VALUES ('user1', 'user1@example.com', 25),('user2', 'user2@example.com', 30),('user3', 'user3@example.com', 35)
ON DUPLICATE KEY UPDATEemail = VALUES(email),age = VALUES(age);

达梦语法:

MERGE INTO users u
USING (SELECT 'user1' AS username, 'user1@example.com' AS email, 25 AS age FROM dualUNION ALLSELECT 'user2', 'user2@example.com', 30 FROM dualUNION ALLSELECT 'user3', 'user3@example.com', 35 FROM dual
) d
ON (u.username = d.username)
WHEN MATCHED THENUPDATE SET u.email = d.email, u.age = d.age
WHEN NOT MATCHED THENINSERT (username, email, age) VALUES (d.username, d.email, d.age);

参考阅读

  • dm8 password转义:https://eco.dameng.com/community/question/276215ad690cd0310ce60ab368f48c0f
  • 达梦与mysql的引号兼容:https://eco.dameng.com/community/question/45ea31056858e8d877eb6395882e652f

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

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

相关文章

磁盘空间占用巨大的meta.db-wal文件缓存(tracker-miner-fs索引服务)彻底清除办法

磁盘命令参考本博客linux磁盘空间满了怎么办. 问题: 磁盘空间被盗 今天瞄了一下我的Ubuntu系统盘&#xff0c; nftdiggernftdigger-Ubuntu:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 16G 0 16G 0% /dev tmpfs 3.2G 1.9…

VUE获取当前日期的周日和周六

<template><div><div click"handleLast()">上一周</div><div click"handleNext()">下一周</div><el-calendarref"monChild"v-model"value":first-day-of-week"7":range"[sta…

2023.11.8 hadoop学习-概述,hdfs dfs的shell命令

目录 1.分布式和集群 2.Hadoop框架 3.版本更新 4.hadoop架构详解 5.页面访问端口 6.Hadoop-HDFS HDFS架构 HDFS副本 7.SHELL命令 8.启动hive服务 1.分布式和集群 分布式: 多台服务器协同配合完成同一个大任务(每个服务器都只完成大任务拆分出来的单独1个子任务)集 群:…

怎样在iOS手机上进行自动化测试

Airtest支持iOS自动化测试&#xff0c;在Mac上为iOS手机部署iOS-Tagent之后&#xff0c;就可以使用AirtestIDE连接设备&#xff0c;像连接安卓设备一样&#xff0c;实时投影、控制手机。iOS测试不仅限于真机测试&#xff0c;iOS模拟器也可以进行。Mac端上部署完成后还可以提供给…

设计模式之组合模式-创建层次化的对象结构

目录 概述概念主要角色应用场景 组合模式的实现类图NS图基本代码组合模式的精髓意外收获&#xff08;❀❀&#xff09; 应用示例-公司组织架构管理需求结构图代码 组合模式的优缺点优点缺点 总结 概述 概念 组合模式是一种结构型设计模式&#xff0c;它允许将对象组合成树形结…

【Linux】 reboot 命令使用

reboot 命令用于用来重新启动计算机。 语法 reboot [参数] 命令选项及作用 执行令 man --reboot 执行命令结果 参数 -n : 在重开机前不做将记忆体资料写回硬盘的动作-w : 并不会真的重开机&#xff0c;只是把记录写到 /var/log/wtmp 档案里-d : 不把记录写到 /var/log…

拓世科技集团打造数字人营销解决方案,为车企提供新的“增长担当”

汽车&#xff0c;已经渐渐融入了现代人的日常生活&#xff0c;从高端的身份标志转变为普罗大众的出行选择&#xff0c;它驶入了千家万户&#xff0c;成为了我们日常出行的可靠伙伴&#xff0c;见证着人们的生活故事和时代的变迁。 中国汽车市场的蓬勃发展引起了业内外的广泛关…

解决Jenkins执行git脚本时报错:No such device or address问题

问题现象&#xff1a; Jenkins执行BeanShell脚本时&#xff0c;报错&#xff1a;jenkins fatal: could not read Username for http://112.11.120.1: No such device or address 解决方案&#xff1a; 解决服务器拉取git仓库的代码权限&#xff0c;使用高级子模块克隆功能。…

深入解析 Redis 分布式锁原理

一、实现原理 1.1 基本原理 JDK 原生的锁可以让不同线程之间以互斥的方式来访问共享资源&#xff0c;但如果想要在不同进程之间以互斥的方式来访问共享资源&#xff0c;JDK 原生的锁就无能为力了。此时可以使用 Redis 来实现分布式锁。 Redis 实现分布式锁的核心命令如下&am…

投票助手图文音视频礼物打赏流量主小程序开源版开发

投票助手图文音视频礼物打赏流量主小程序开源版开发 图文投票&#xff1a;用户可以发布图文投票&#xff0c;选择相应的选项进行投票。 音视频投票&#xff1a;用户可以发布音视频投票&#xff0c;观看音视频后选择相应的选项进行投票。 礼物打赏&#xff1a;用户可以在投票过…

cpu 支持内存带宽与内存最大长度的关系《鸟哥的 Linux 私房菜》

鸟哥的 Linux 私房菜 -- 计算机概论 -- 計算机&#xff1a;辅助人脑的好工具 同理&#xff0c;64 位 cpu 一次接受内存传递的 64bit 数据&#xff0c;内存字节地址用 64 位记录&#xff0c;最多能记录2^64个字节2^64Bytes2^34GB17179869184GB2^24TB&#xff0c;理论上&#xff…

Java后端开发——JDBC入门实验

JDBC&#xff08;Java Database Connectivity&#xff09;是Java编程语言中用于与数据库建立连接并进行数据库操作的API&#xff08;应用程序编程接口&#xff09;。JDBC允许开发人员连接到数据库&#xff0c;执行各种操作&#xff08;如插入、更新、删除和查询数据&#xff09…

计算机考研408有多难?25考研经验贴,开个好头很有必要

前言 大家好&#xff0c;我是陈橘又青&#xff0c;相信关注我的各位小伙伴们中&#xff0c;大多都是在计算机专业的大学生吧&#xff01; 每天都有许多人在后台私信我&#xff0c;问我要不要考研&#xff0c;我想说这个东西是因人而异的&#xff0c;像我本人就选择了就业&…

基于公共业务提取的架构演进——外部依赖防腐篇

1.背景 有了前两篇的帐号权限提取和功能设置提取的架构演进后&#xff0c;有一个问题就紧接着诞生了&#xff0c;对于诸多业务方来说&#xff0c;关键数据源的迁移如何在各个产品落地&#xff1f; 要知道这些数据都很关键&#xff1a; 对于帐号&#xff0c;获取不到帐号信息是…

如何像专家一样高效使用搜索引擎?适用于百度Baidu、谷歌Google

你几乎可以在互联网上搜索到任何内容,而Google是大多数人选择搜索信息的主要途径之一。 尽管频繁地使用Google,但是大部分互联网用户都不知道如何快速和高效地使用Google搜索。 可以说使用Google是一门艺术。 想要获得正确的答案,你需要提出正确的问题。想要快速地获得正…

【ElasticSearch系列-07】ES的开发场景和索引分片的设置及优化

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…

简单好看个人引导页毛玻璃页面 HTML 源码

毛玻璃个人引导页源码&#xff0c;界面简洁&#xff0c;已测可完美搭建&#xff0c;UI非常不错的&#xff0c;有兴趣的自行去安装体验吧&#xff0c;其它就没什么好介绍的了。 学习资料源代码&#xff1a;百度网盘 请输入提取码&#xff1a;ig8c

读程序员的制胜技笔记08_死磕优化(上)

1. 过早的优化是万恶之源 1.1. 著名的计算机科学家高德纳(Donald Knuth)的一句名言 1.2. 原话是&#xff1a;“对于约97%的微小优化点&#xff0c;我们应该忽略它们&#xff1a;过早的优化是万恶之源。而对于剩下的关键的3%&#xff0c;我们则不能放弃优化的机会。” 2. 过早…

适合汽车音频系统的ADAU1977WBCPZ、ADAU1978WBCPZ、ADAU1979WBCPZ四通道 ADC,24-bit,音频

一、ADAU1977WBCPZ 集成诊断功能的四通道ADC&#xff0c;音频 24 b 192k IC&#xff0c;SPI 40LFCSP ADAU1977集成4个高性能模数转换器(ADC)&#xff0c;其直接耦合输入具有10 V rms性能。该ADC采用多位Σ-Δ架构&#xff0c;其连续时间前端能够实现低EMI性能。它可以直接连接…

11.9存储器实验总结(单ram,双ram,FIFO)

实验设计 单端口RAM实现 双端口RAM实现 FIFO实现 文件结构为