对于刚从Oracle数据库转到达梦数据库,SQL语法的使用基本一致,有一些差别,下面总结的一些常用SQL语法差别。

文章目录

  • 1.导入数据
  • 2.返回查询数据的返回行
  • 3 外连接用法
  • 4.多列IN用法
  • 5.INSTEAD OF触发器
  • 6 数据类型的不同
  • 7.数据字典和动态性能视图

1.导入数据

Oracle

@ test.sql

达梦

start test.sql
` test.sql

2.返回查询数据的返回行

Oracle:rownum,不支持top,limit
查找第一行数据

select * from department where rownum=1;


查询第二行数据select * from department where rownum=2;是查不到的
可以通过子查询
select * from (select rownum no,DEPT_NO,DEPT_NAME from department)where no=2;

查询前n-1行数据

select * from department where rownum<6;


达梦:支持rownum,limit,top
在达梦中查询当前用户的非默认模式中的表时,需要指定模式

select * from dmhr.DEPARTMENT limit 5;

select top 3 * from dmhr.DEPARTMENT;

3 外连接用法

Oracle “ + ”加号放在哪边,哪边无论是否匹配返回所以数据
select a.DEPT_NO, b.EMP_NO
from department a,EMP_DEPT b
where a.DEPT_NO = b.DEPT_NO(+);

达梦:兼容“+”,还有left join,right join,full join

select a.EMPLOYEE_ID, a.EMPLOYEE_NAME, a.DEPARTMENT_ID, b.DEPARTMENT_NAME
from dmhr.employee a left outer join dmhr.department b
on a.DEPARTMENT_ID = b.DEPARTMENT_ID;

4.多列IN用法

Oracle
第一种方式

select dept_no,dept_name from department where (dept_no,dept_name)
in (('d001','Marketing'),('d002','Finance'));

in后面相当于一个二维表格

第二种方式

select dept_no,dept_name from department where (dept_no,dept_name)
in (select dept_no,dept_name from department);

in后面跟查询的两列返回的结果集,这里只是为了测试,实际情况可查找其他表.

达梦第一种方式,第二种方式都兼容

select department_id,department_name from dmhr.department where
(department_id,department_name)
in (('101','总经理办'),('102','行政部'));

5.INSTEAD OF触发器

Oracle
只适用于视图,不能作用在表上
不能指定before和after
必须包含for each row选项
在视图上创建触发器引起表的数据变化,从而让视图查询的结果变化
创建视图

create view view_dept
as
select * from dept;

创建触发器

CREATE OR REPLACE TRIGGER tr_instead_view_deptINSTEAD OF INSERT  ON view_deptFOR EACH ROW
BEGININSERT INTO dept (epno, ename,loc) VALUES (:new.epno, :new.ename,:new.loc);
END;

向视图插入数据时会触发视图的基表发生变化。

查看视图view_dept

向dept表插入数据

insert into view_dept values(4,'new1','new2');

查看视图view_dept

查看基表dept

可以看到基表数据也已经改变。

6 数据类型的不同

时间类型有一点不同,其余数据类型基本一致。
Oracle DATE TEMPSTAMP
DATE:固定长度(7字节)的日期型,时间也作为一部分存储其中。数据格式:YYYY/MM/DD HH24:MI:SS
TIMESTAMP:date类型的一个扩展,date类型会存储年月日时分秒信息,timestamp类型精度更高,会存储到微秒、纳秒。

达梦 DATE TIME TIMESTAMP
DATE:日期型,包括年、月、日信息。数据格式:date ‘1999-10-01’
TIME:时间型,包括时、分、秒信息。格式:time ’09:10:21’
TIMESTAMP:时间戳型,包括年月日时分秒信息。例如:timestamp ‘1999-07-13 10:11:22’
在Oracle数据库向达梦数据库数据迁移时需要设置参数数据库兼容模式:COMPATIBLE_MODE,设置为2即兼容Oracle
是否兼容其他数据库模式。
0:不兼容,
1:兼容 SQL92 标准,
2:部分兼容 ORACLE,
3:部 分兼容 MS SQL SERVER,
4:部分兼容 MYSQL,
5:兼容 DM6,
6:部分兼容 TERADATA

7.数据字典和动态性能视图

Oracle
数据字典:记录了数据库的最基本的信息。
数据字典包括数据字典基本表和数据字典视图
数据字典视图分为三种类型:USER_、ALL_、DBA_。
USER_类型的视图表示当前登录用户拥有的信息。
ALL_类型的视图表示当前登录用户有权限看到的信息。
DBA_类型的视图表示数据库管理员能够看到的信息,整个数据库范围内的信息。
Eg:查看当前用户下所有列
select * from user_tab_cols;

动态性能视图
v p a r a m e t e r 初始化参数文件中所有项的值 v parameter 初始化参数文件中所有项的值 v parameter初始化参数文件中所有项的值vprocess:当前进程的信息
v s e s s i o n : 有关会话的信息 v session:有关会话的信息 v session:有关会话的信息vsysstat:基于当前操作会话进行的系统统计
v l o g :从控制文件中提取有关重做日志组的信息 v log:从控制文件中提取有关重做日志组的信息 v log:从控制文件中提取有关重做日志组的信息vlogfile有关实例重置日志组文件名及其位置的信息
v l o c k :当前进程已获得的和正在请求的锁定信息 v lock:当前进程已获得的和正在请求的锁定信息 v lock:当前进程已获得的和正在请求的锁定信息vtransaction:数据库的事务信息
v$fixed_view_definition中记录了所有的动态性能视图的定义信息

oracle可以使用show parameter 参数名,达梦没有此用法。

达梦 数据字典和动态性能视图和oracle基本一致
select * from user_tables;

查询时数据字典和动态性能视图可以不指定模式。
select * from V$PARAMETER;

了解更多详情请访问达梦数据库-新一代大型通用关系型数据库

达梦数据库兼容Oracle之SQL语法(一)相关推荐

  1. 达梦数据库、oracle数据库如何判断指定表有没有建立索引?对应的表有没有索引查询方法

    sm_appmenuitem 这个演示表有 5 个索引. 我在不知道的情况下想知道这个表的索引有没有建成功,或者说我现在想知道这个表的索引有哪些,就要来查询了. 索引表查询方法如下,把对应的表放到括号 ...

  2. 达梦数据库和Oracle数据库的一些区别

    近期参加了达梦的dca考试培训,感觉达梦数据库和Oracle有很多相似之处,但又有些差异,以下为我在学习达梦数据库过程中总结的一些与Oracle不同的地方. 1.安装 Oracle 安装复杂,需要配置 ...

  3. 浅谈达梦数据库与ORACLE数据库差异点及常用SQL总结

    一.通过近一周的达梦DCA课程培训让我对达梦数据库有了大概的认识,因为原来用oracle较多,达梦数据库是对标oracle的,所以上手还算顺利.下面我就个人了解的情况浅谈下两者的区别. 1.在使用体验 ...

  4. 达梦数据库导入oracle数据_Java项目,从Oracle迁移到达梦数据库笔记

    达梦数据库是个国产数据库,据说对Oracle有很好的兼容,本人亲自从Oracle11g迁移到达梦6.0的数据库上来,遇到一些问题,以下是问题记录: 1.字段名错误 虽然达梦SQL可以兼容字段大小写,但 ...

  5. 达梦数据库迁移oracle数据乱码,oracle迁移到达梦数据库之存储过程中char类型的不同处理...

    oracle迁移到dm之存储过程中char类型的不同处理 1.问题描述: oracle迁移到dm后,oracle正常使用的存储过程,在dm中使用报错:字符串截断 2.查找原因: 2.1 对比oracl ...

  6. 达梦数据库兼容mysql_浅谈达梦数据库的兼容模式

    达梦数据库号称国产数据库第一品牌,在某些方面还是有它的优势的,作为IT攻城狮,我从事软件行业已经有10多年了,oracle.mysq.sqlserver都已经用的很熟了,这2年做了几个国产化相关的项目 ...

  7. 国产达梦数据库优势及常用Sql

    达梦数据库管理系统(DM8) 新一代大型通用关系型数据库,全面支持 ANSI SQL 标准和主流编程语言接口/开发框架.行列融合存储技术,在兼顾 OLAP 和 OLTP 的同时,满足 HTAP 混合应 ...

  8. 达梦数据库导入oracle数据_达梦数据库和oracle数据的一些区别

    近期我在考达梦的dca发现有一些和oracle不同的地方,由于我是oracleDBA在维护达梦数据库的时候有需要注意的地方,现在分享一下2个数据库的一些区别. 1.登陆的区别 oracle:如果sys ...

  9. 国产达梦数据库与Oracle数据库的区别

    1.登录的区别 oracle:如果sys的密码忘记可以用操作系统验证方式登录修改密码. dm:达梦数据库如果忘记了sysdba的密码则无法登录. 2.数据库的状态 oracle:oracle的状态有s ...

最新文章

  1. 软件测试培训分享:性能测试的目的是什么
  2. 融资 6 亿美元后,商汤发布 5 大 AI 产品
  3. DIV + CSS布局的一些知识汇总
  4. AOP动态代理的实现机制
  5. 分布式锁实现:Redis
  6. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
  7. php7安装event拓展
  8. 编程之美2.15 二维数组最大子数组的和(数组下标从(1,1)开始)
  9. 跟进table_cache参数
  10. 【边缘检测】RCF: Richer Convolutional Features for Edge Detection
  11. 连接mysql数据库2013_使用VS2013 + EF6 + .NET4.5 连接Mysql数据库
  12. integer 负数字符串比较_JAVA源码之Integer-1
  13. caffe SigmoidCrossEntropyLossLayer
  14. Bamboo基础概念
  15. html.dropdownlist 设置默认值,设置Html.DropDownList()的默认值
  16. c语言中清屏的作用是什么,清屏函数的使用
  17. thymeleaf菜鸟教程_Spring MVC应用程序中的Thymeleaf模板布局,无扩展
  18. 型机器人同人本子_唯美的人×机器人漫画《純情愛玩生化女友》
  19. 大数据基础课17 大数据环境下如何保护隐私
  20. 怎样采集百家论坛MP3讲座

热门文章

  1. SIM7600CE模块(GSM/GPRS)调试
  2. firefly rk3328学习笔记1-samba环境搭建
  3. Newoupui-pak配置失败怎么处理?
  4. python手机版下载-手机python下载
  5. 【计算机毕业设计】停车场管理系统
  6. Kubernetes权威指南(下)
  7. linux安装gfortran出现错误,Fortran gfortran linux中出现“Segmentation Fault(core dumped)”错误...
  8. Html网站页面实现黑白效果
  9. 【调剂】上海科技大学信息学院2023年硕士招生调剂公告
  10. android手机返回桌面后,点击app图标,app重启