Oracle与MySQL的SQL语句区别
2 表
2.1 创建表(同)
create table tableName(

columnName1 int,

columnName2 int

)

2.2 删除表(异)
MySQL:

drop table if exists tableName

Oracle:

drop table tableName

注:Oracle没有if exists关键字,也没用类似if exists的SQL语法。

3 列
3.1 添加列(异)
MySQL:

A. alter table tableName add column columnName1 int;

B. alter table tableName add column columnName1 int, add column columnName2 int;

注:其中关键字column可有可无。

Oracle:

A. alter table tableName add columnName1 int;

B. alter table tableName add (columnName1 int);

C. alter table tableName add (columnName1 int, columnName2 int);

注:对于A,只有添加单列的时候才可使用,对于添加多列时需要使用C,不能像MySQL那样重复使用add column关键字。

3.2 删除列(异)
MySQL:

A. alter table tableName drop column columnName1

B. alter table tableName drop column columnName1, drop column columnName2

注:其中关键字column可有可无。

Oracle:

A. alter table tableName drop column columnName2

B. alter table tableName drop (columnName1)

C. alter table tableName drop (columnName1,columnName2)

注:对于A,只有删除单列的时候才可使用,对于删除多列时需要使用C,不能像MySQL那样重复使用drop column关键字。

3.3 修改列名(异)
MySQL:

alter table tableName change column columnNameOld columnNameNew columnType;

Oracle:

alter table tableName rename column columnNameOld to columnNameNew;

3.4 修改列类型(说明)
Oracle中,在列有数据的时候,无法修改列类型;没有数据时可以。

MySQL中,无论列是否有数据都可以修改列类型。

但是当有数据是,直接修改列类型都可能对数据造成丢失等,所以一般需要结合具体的业务来对列数据做处理后,再修改列类型类型。所以修改列的类型并非使用SQL语句进行一步到位的修改,而是通过以下流程:

A. 添加临时列

B. 将需要更改的列的值经过类型转换的验证后,赋值给临时列

C. 删除原有列

D. 将临时列的列名修改为原有列列名

4 索引
在整个数据库内,MySQL的索引可以同名,也就是说MySQL的索引是表级别的;但是Oracle索引不可以同名,也就是说Oracle的索引是数据库级别的。

4.1 创建索引(同)
create index indexName on tableName (columnName);

4.2 删除索引(异)
MySQL:

alter table tableName drop index indexName

Oracle:

drop index indexName

4.3 查询表的索引(异)
MySQL:

show index from tableName

Oracle:

select index_name, table_name, column_name from user_ind_columns where table_name=' tableName '

5 空字符串问题
Oracle中空字符串''就是null(也就是说,只有null,没有空字符),而MySQL是区分null和''的。

对于使用语句:select * from table1 where user_name <> ''来查询列user_name不为空(不为null且不为空字符)时,Oracle会查不出任何结果,而MySQL可以正常运行。这里MySQL之所以可以得到正确结果,还因为比较符号<>会先将列为null的内容进行过滤,然后再比较内容是否为空字符串。

这就要求一方面,以后在编写代码的时候,尽量保证不会往数据库插入空字符串''这样的值,要么保持有数据,要么保持为null。另外,对于MySQL中已经同时存在Null和''时,所有判断是否为null或者''的地方改为判断列的长度是否为0。

6 分页 语句不同
(1)MySql的Limit m,n语句

Limit后的两个参数中,参数m是起始下标,它从0开始;参数n是返回的记录数。我们需要分页的话指定这两个值即可

(2)Oracle数据库的rownum

在Oracle数据库中,分页方式没有MySql这样简单,它需要依靠rownum来实现.
Rownum表示一条记录的行号,值得注意的是它在获取每一行后才赋予.因此,想指定rownum的区间来取得分页数据在一层查询语句中是无法做到的,要分页还要进行一次查询.

SELECT FROM
(
SELECT A.
, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21

其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。

7 Oracle 不是开源 的 mysql 是开源的 (有源码等于无限可能)

8 大厂使用Oracle 都是收费的, 小公司 很多不爱交

9 mysql 丰富的中间件
1 Cobar (不维护了),
2 360 Atlas

    较为活跃,Atlas 是由 360 Web平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用 Atlas 运行的 MySQL 务,每天承载的读写请求数达几十亿条。主要功能:1. 读写分离2. 从库负载均衡3. IP过滤4. SQL语句黑白名单5. 自动分表

3Mycat 等等 有机会再介绍

参考资料 https://www.cnblogs.com/xuelu/p/3770738.html

转载于:https://blog.51cto.com/13873074/2147446

mysql Oracle 的区别 你不能不知道的事相关推荐

  1. ES6 你可能不知道的事 – 基础篇

    ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES ...

  2. java你可能不知道的事(2)--堆和栈

    为什么80%的码农都做不了架构师?>>>    在java语言的学习和使用当中你可能已经了解或者知道堆和栈,但是你可能没有完全的理解它们.今天我们就一起来学习堆.栈的特点以及它们的区 ...

  3. group by(mysql oracle的区别) 的基本用法

    group by做为分组来使用,后面为条件,可以有多个条件,条件相同的为一组,配合聚合函数进行相关统计.在不同数据库中用法稍有不同,这里只测试mysql和oracle. 1.准备好一张数据表:     ...

  4. 祝贺!屠呦呦再获国际大奖!一文读懂:神药青蒿素那些我们不知道的事

    又有好消息传来!总部位于法国巴黎的联合国教科文组织10月22日公布2019年度联合国教科文组织-赤道几内亚国际生命科学研究奖获奖名单,共3人获奖,其中包括来自中国的屠呦呦. 此前,屠呦呦先后拿下多项大 ...

  5. mysql oracle sql区别吗_mysql数据库的SQL语句和oracle的有什么区别?详细点

    匿名用户 1级 2017-08-20 回答 区别如下: 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Or ...

  6. sql server,mysql,oracle的区别

    Oracle Oracle 能在所有主流平台上运行(包括Windows).完全支持所有的工业标准.采用完全开放策略.可以使客户选择最适合的解决方案.对开发商全力支持,Oracle并行服务器通过使一组结 ...

  7. MySQL中关于JSON你不得不知道的那些事!

    csdn这个makedown编辑有点问题,这篇文章格式好一点,传送门:http://blog.csdn.net/sheldon761642718/article/details/72677156 My ...

  8. oracle最新版本是多少_运维日记|关于Oracle的补丁你需要知道的事

    各位新朋友-记得先点蓝字关注我哦- 之前一起熟悉了Oracle数据库的软件版本,服务周期,今天我们一起来了解下,Oracle发布的基础版本之上,常说的补丁到底是什么,有什么分类,经历了怎样的迭代. c ...

  9. 运维不得不知道的事 数据中心断电如何做

    数据中心最不愿意见到的事情莫过于断电,这将会给运维人员带来很多的麻烦,所以很多数据机房都很乐意接受UPS电源,尤其是在线式UPS电源.近来,不少公司因为数据中心的电力中断而备受困扰,比如美国达美航空公 ...

最新文章

  1. Service Manger的初始化分析
  2. MySQL FLOAT、DOUBLE、DECIMAL(小数类型)
  3. oracle数据库的医院信息系统数据库升级方案,医院信息系统数据库从Oracle8i到10gR2升级的实现...
  4. jquery datatable搜索框添加按钮,改变keypress搜索为点击按钮搜索
  5. ***经验谈之SA权限***的感悟
  6. Spring 注解教程
  7. 字符串在Java中_字符和字符串在Java中的旅程
  8. 杂笔,Objective-C的认知
  9. WeX5和BeX5的区别
  10. 存储过程实现创建修改表及其数据
  11. Linux如何切换字符或者图形界面
  12. Vue中使用axio跨域请求外部WebService接口
  13. 清除计算机网络mac高速缓存,mac怎么清理缓存 mac缓存清理教程
  14. 分类问题的评价指标(Precision、Recall、Accuracy、F1-Score、Micro-F1、Macro-F1)以及混淆矩阵、ROC曲线
  15. 网络历史之金融投资三剑客01
  16. 凌晨!科比因坠机离世, 球迷泪崩:凌晨4点,我的青春没了
  17. 本地策略和组策略,更改安全设置和用户权限分配兼容性问题
  18. unity photon中技能效果网络同步
  19. line-height 和 height 区别
  20. python学习 day013打卡 内置函数

热门文章

  1. 使用uwolfer gerrit-rest-java-client获取Gerrit信息
  2. 刚看的一个暴笑的笑话
  3. excel如何做字符串拼接
  4. [ Linux ] CentOS 8下使用 chrony 进行服务器网络时间同步
  5. Docker容器技术介绍(六)--- 端口映射和容器间互访问
  6. 副本 K8S中的Service的存在理由,android高级面试题及答案
  7. java编一个漏斗_在java中编一个可以输出星号金字形状的程序,挂上详解!重谢...
  8. win10下pycharm永久激活
  9. 从懂到用(2):讲一些别人不细讲的BN关键点
  10. Java之抽象类接口