注意事项
- 基于Oracle 10G(03年发布版本)、Mysql 5.5.32(10年以后发布)
- 仅涉及部分SQL
- 此处以oracle的emp表为例
表结构如下

数据如下

#1. 引号的区别
oracle的引号
1.1 列别名存在空格或其他特殊字符,用单引号报错,需要用双引号


1.2 列值的筛选,用双引号报错,需要用单引号


mysql的引号 ###1.3 列别名,单引号和双引号都可以

1.4 列值的筛选,用双引号、单引号都可以


#2. 时间字段的区别
oracle中to_date ###2.1
mysql中的时间字段 ###2.2 mysql对时间字段直接比较,不需要函数
#3. 数据限定
oracle中的rownum
3.1 取薪资最大的5个人
select * from
(select rownum rn,ename,sal,job
from emp
order by sal desc) where rownum<=5

3.2 取薪资最大的第5-10名
select * from (select rownum rn1,ename,sal,job,mgr,comm from (select * from emp order by sal desc) )where rn1 between 5 and 10

mysql中的limit
3.3 取薪资最大的5个人
limit 5

3.4 取薪资最大的第5-10名
SELECT *
FROM emp
ORDER BY sal DESC LIMIT 4,6
#4数据行的下标,而6是偏移量
#数据库的第一行是0,第二行是1,类似于数组的第一个数据
#所以4,6表示的第五行,6表示一共6行数据。

写在最后的话
还有很多区别,比如空值处理,dual表等等,特别是应用层面,太多不一样了。此处仅说明三点比较明显的,有空再说别的。

