达梦数据库兼容Oracle之SQL语法(一)
对于刚从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语法(一)相关推荐
- 达梦数据库、oracle数据库如何判断指定表有没有建立索引?对应的表有没有索引查询方法
sm_appmenuitem 这个演示表有 5 个索引. 我在不知道的情况下想知道这个表的索引有没有建成功,或者说我现在想知道这个表的索引有哪些,就要来查询了. 索引表查询方法如下,把对应的表放到括号 ...
- 达梦数据库和Oracle数据库的一些区别
近期参加了达梦的dca考试培训,感觉达梦数据库和Oracle有很多相似之处,但又有些差异,以下为我在学习达梦数据库过程中总结的一些与Oracle不同的地方. 1.安装 Oracle 安装复杂,需要配置 ...
- 浅谈达梦数据库与ORACLE数据库差异点及常用SQL总结
一.通过近一周的达梦DCA课程培训让我对达梦数据库有了大概的认识,因为原来用oracle较多,达梦数据库是对标oracle的,所以上手还算顺利.下面我就个人了解的情况浅谈下两者的区别. 1.在使用体验 ...
- 达梦数据库导入oracle数据_Java项目,从Oracle迁移到达梦数据库笔记
达梦数据库是个国产数据库,据说对Oracle有很好的兼容,本人亲自从Oracle11g迁移到达梦6.0的数据库上来,遇到一些问题,以下是问题记录: 1.字段名错误 虽然达梦SQL可以兼容字段大小写,但 ...
- 达梦数据库迁移oracle数据乱码,oracle迁移到达梦数据库之存储过程中char类型的不同处理...
oracle迁移到dm之存储过程中char类型的不同处理 1.问题描述: oracle迁移到dm后,oracle正常使用的存储过程,在dm中使用报错:字符串截断 2.查找原因: 2.1 对比oracl ...
- 达梦数据库兼容mysql_浅谈达梦数据库的兼容模式
达梦数据库号称国产数据库第一品牌,在某些方面还是有它的优势的,作为IT攻城狮,我从事软件行业已经有10多年了,oracle.mysq.sqlserver都已经用的很熟了,这2年做了几个国产化相关的项目 ...
- 国产达梦数据库优势及常用Sql
达梦数据库管理系统(DM8) 新一代大型通用关系型数据库,全面支持 ANSI SQL 标准和主流编程语言接口/开发框架.行列融合存储技术,在兼顾 OLAP 和 OLTP 的同时,满足 HTAP 混合应 ...
- 达梦数据库导入oracle数据_达梦数据库和oracle数据的一些区别
近期我在考达梦的dca发现有一些和oracle不同的地方,由于我是oracleDBA在维护达梦数据库的时候有需要注意的地方,现在分享一下2个数据库的一些区别. 1.登陆的区别 oracle:如果sys ...
- 国产达梦数据库与Oracle数据库的区别
1.登录的区别 oracle:如果sys的密码忘记可以用操作系统验证方式登录修改密码. dm:达梦数据库如果忘记了sysdba的密码则无法登录. 2.数据库的状态 oracle:oracle的状态有s ...
最新文章
- 软件测试培训分享:性能测试的目的是什么
- 融资 6 亿美元后,商汤发布 5 大 AI 产品
- DIV + CSS布局的一些知识汇总
- AOP动态代理的实现机制
- 分布式锁实现:Redis
- [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
- php7安装event拓展
- 编程之美2.15 二维数组最大子数组的和(数组下标从(1,1)开始)
- 跟进table_cache参数
- 【边缘检测】RCF: Richer Convolutional Features for Edge Detection
- 连接mysql数据库2013_使用VS2013 + EF6 + .NET4.5 连接Mysql数据库
- integer 负数字符串比较_JAVA源码之Integer-1
- caffe SigmoidCrossEntropyLossLayer
- Bamboo基础概念
- html.dropdownlist 设置默认值,设置Html.DropDownList()的默认值
- c语言中清屏的作用是什么,清屏函数的使用
- thymeleaf菜鸟教程_Spring MVC应用程序中的Thymeleaf模板布局,无扩展
- 型机器人同人本子_唯美的人×机器人漫画《純情愛玩生化女友》
- 大数据基础课17 大数据环境下如何保护隐私
- 怎样采集百家论坛MP3讲座
热门文章
- SIM7600CE模块(GSM/GPRS)调试
- firefly rk3328学习笔记1-samba环境搭建
- Newoupui-pak配置失败怎么处理?
- python手机版下载-手机python下载
- 【计算机毕业设计】停车场管理系统
- Kubernetes权威指南(下)
- linux安装gfortran出现错误,Fortran gfortran linux中出现“Segmentation Fault(core dumped)”错误...
- Html网站页面实现黑白效果
- 【调剂】上海科技大学信息学院2023年硕士招生调剂公告
- android手机返回桌面后,点击app图标,app重启