百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

浅谈Oracle和mysql数据语法的区别

yuyutoo 2024-12-18 17:59 8 浏览 0 评论

Oracle数据和Mysql数据库都是十分常见的数据库,使用都很广泛,使用过的人会发现在写sql语句时两者之间大多数语法是相通的,但是也有一些地方语法不一样,今天我们一起来浅聊一下它们的区别吧。

通过查阅资料和自身的经验我一共整理了10点区别,具体如下。

1.oracle中select语句后边的from是不能省略的,如果没有实际的表,可以用dual作为from的目的表,mysql中from则是可以省略的,例如查看系统当前日期,oracle中语法为:select sysdate from dual;mysql中为select CURRENT_DATE;

2.orcle支持全连接语法,通过full join关键字实现,mysql则没有全连接对应的关键字,只能通过union取左外连接和右外连接的合集来实现全连接。

例如:查看所有员工对应的部门,以及所有部门下边的员工。Oracle中语法为:

Select * from emp full join dept on emp.deptno=dept.deptno;

Mysql中语法为:

Select * from emp left join dept on emp.deptno=dept.deptno union Select * from emp right join dept on emp.deptno=dept.deptno;

3.oracle中分组语句如果某列名不作为分组依据,及没有出现在group by后,则该列名是不允许放到select后边的,mysql则没有此限制。

4. Oracle左连接,右连接可以使用(+)来实现. MySQL只能使用left join ,right join等关键字。例如:

oracle右连接

select * from a,b where a.id(+)=b.id;

左连接:

select * from a,b where a.a2=b.b2(+);

mysql右连接:

select * from a right join b on a.id=b.id;

左连接:

select * from a left join b on a.a2=b.b2;

5.Orcle可以使用||将多列连接到一起,mysql需要使用函数才可以。例如:查找员工的工资,在oracle中可以这样:

select name||’’s’||’ sallry’||’ is ’||sal from emp;

在mysql中只能

select CONCAT(ename,"'s"," sallary"," is ",sal) from emp;

6.Oracle可通过rownum获取前n条记录,MySQL通过limit来获取前n条记录,但二者的写法略有不同,在Oracle中rownum作为where条件的一部分,而MySQL中limit不是where条件的一部分。

rownum语法如下:

SELECT * FROM XJ_STUDENT WHERE ROWNUM = 1; -- 查询第一条数据
SELECT * FROM XJ_STUDENT WHERE ROWNUM <= 10; -- 获取前10条数据

但rownum不支持查询后几条或第n(n>1)条数据,例如以下sql是不支持的

SELECT * FROM XJ_STUDENT WHERE ROWNUM > 2;
SELECT * FROM XJ_STUDENT WHERE ROWNUM = 3;

limit 语法如下:

SELECT * from fw_department limit 3; -- 查询前3条数据
SELECT * from fw_department limit 2, 4; -- 从第2(序号从0开始)条开始,查4条记录

7. Oracle 中可用with来构建一个临时表,但MySQL不支持with,对应临时表,MySQL可通过小括号的方式来处理,但构建的临时表必须设置临时表名。

-- Oracle with使用

WITH TMPTAB AS (SELECT A.DEPID FROM FW_DEPARTMENT A);
SELECT DEPID FROM TMPTAB;

-- MySQL 构建临时表使用(此处必须给括号中的临时表设置表名)

select b.depid from (select depid from fw_department) b;

8. ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。

9. ORACLE里只可以用单引号包起字符串,MYSQL里可以用双引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。

10.oracle中空值只有null,mysql中空值有两种形态一种是null,另一种是‘’。过滤null时只能使用is null,过滤‘’时要使用=‘’。

以上就是oracle和mysql最常见的几点语法区别,当然实际区别远远不止这些。

相关推荐

墨尔本一华裔男子与亚裔男子分别失踪数日 警方寻人

中新网5月15日电据澳洲新快网报道,据澳大利亚维州警察局网站消息,22岁的华裔男子邓跃(Yue‘Peter’Deng,音译)失踪已6天,维州警方于当地时间13日发布寻人通告,寻求公众协助寻找邓跃。华...

网络交友须谨慎!美国犹他州一男子因涉嫌杀害女网友被捕

伊森·洪克斯克(图源网络,侵删)据美国广播公司(ABC)25日报道,美国犹他州一名男子于24日因涉嫌谋杀被捕。警方表示,这名男子主动告知警局,称其杀害了一名在网络交友软件上认识的25岁女子。雷顿警...

一课译词:来龙去脉(来龙去脉 的意思解释)

Mountainranges[Photo/SIPA]“来龙去脉”,汉语成语,本指山脉的走势和去向,现比喻一件事的前因后果(causeandeffectofanevent),可以翻译为“i...

高考重要考点:range(range高考用法)

range可以用作动词,也可以用作名词,含义特别多,在阅读理解中出现的频率很高,还经常作为完形填空的选项,而且在作文中使用是非常好的高级词汇。...

C++20 Ranges:现代范围操作(现代c++白皮书)

1.引言:C++20Ranges库简介C++20引入的Ranges库是C++标准库的重要更新,旨在提供更现代化、表达力更强的方式来处理数据序列(范围,range)。Ranges库基于...

学习VBA,报表做到飞 第二章 数组 2.4 Filter函数

第二章数组2.4Filter函数Filter函数功能与autofilter函数类似,它对一个一维数组进行筛选,返回一个从0开始的数组。...

VBA学习笔记:数组:数组相关函数—Split,Join

Split拆分字符串函数,语法Split(expression,字符,Limit,compare),第1参数为必写,后面3个参数都是可选项。Expression为需要拆分的数据,“字符”就是以哪个字...

VBA如何自定义序列,学会这些方法,让你工作更轻松

No.1在Excel中,自定义序列是一种快速填表机制,如何有效地利用这个方法,可以大大增加工作效率。通常在操作工作表的时候,可能会输入一些很有序的序列,如果一一录入就显得十分笨拙。Excel给出了一种...

Excel VBA入门教程1.3 数组基础(vba数组详解)

1.3数组使用数组和对象时,也要声明,这里说下数组的声明:'确定范围的数组,可以存储b-a+1个数,a、b为整数Dim数组名称(aTob)As数据类型Dimarr...

远程网络调试工具百宝箱-MobaXterm

MobaXterm是一个功能强大的远程网络工具百宝箱,它将所有重要的远程网络工具(SSH、Telnet、X11、RDP、VNC、FTP、MOSH、Serial等)和Unix命令(bash、ls、cat...

AREX:携程新一代自动化回归测试工具的设计与实现

一、背景随着携程机票BU业务规模的不断提高,业务系统日趋复杂,各种问题和挑战也随之而来。对于研发测试团队,面临着各种效能困境,包括业务复杂度高、数据构造工作量大、回归测试全量回归、沟通成本高、测试用例...

Windows、Android、IOS、Web自动化工具选择策略

Windows平台中应用UI自动化测试解决方案AutoIT是开源工具,该工具识别windows的标准控件效果不错,但是当它遇到应用中非标准控件定义的UI元素时往往就无能为力了,这个时候选择silkte...

python自动化工具:pywinauto(python快速上手 自动化)

简介Pywinauto是完全由Python构建的一个模块,可以用于自动化Windows上的GUI应用程序。同时,它支持鼠标、键盘操作,在元素控件树较复杂的界面,可以辅助我们完成自动化操作。我在...

时下最火的 Airtest 如何测试手机 APP?

引言Airtest是网易出品的一款基于图像识别的自动化测试工具,主要应用在手机APP和游戏的测试。一旦使用了这个工具进行APP的自动化,你就会发现自动化测试原来是如此简单!!连接手机要进行...

【推荐】7个最强Appium替代工具,移动App自动化测试必备!

在移动应用开发日益火爆的今天,自动化测试成为了确保应用质量和用户体验的关键环节。Appium作为一款广泛应用的移动应用自动化测试工具,为测试人员所熟知。然而,在不同的测试场景和需求下,还有许多其他优...

取消回复欢迎 发表评论: