MySQL和Oracle开发差异
1) 数据类型差异
|
Oracle |
MySQL |
注释 |
|
单独创建序列来实现 |
自动增长的数据类型 |
|
|
varchar2 |
varchar |
|
|
number |
tinyint,smallint,mediumint,int,bigint float,double |
|
|
clob |
text,mediumtext,longtext |
|
|
date |
datetime |
|
|
无 |
enum |
|
|
raw |
binary(n),varbinary(n) |
|
|
无 |
bit(n) |
|
|
blob |
blob,mediumblob,longblob |
2) 内建函数差异
|
Oracle |
MySQL |
注释 |
|
length |
char_length |
|
|
substr |
substring |
|
|
nvl |
ifnull |
|
|
decode |
case |
|
|
to_char |
date_format,time_format |
|
|
to_date |
str_to_date |
|
|
trunc |
cast |
|
|
to_number |
cast |
|
|
date+/-n |
date_add |
|
|
date1-date2 |
datediff |
3) SQL语句差异
|
操作 |
Oracle |
MySQL |
|
创表指定表空间 |
create table…tablespace x |
没有表空间,使用默认存储引擎 |
|
CTAS建表 |
create table…as select…不能新增字段和改变字段属性 |
create table t1(a int,b int) as select a,b,a,b from t2可以选择新的字段和字段属性 |
|
表结构复制 |
create table t1 as select * from t2 where 1=0,只复制字段定义,不包括约束 |
create table t1 like t2,复制包括约束 |
|
全局分区索引 |
create index…global partition by |
无 |
|
重命名列 |
alter table t1 rename c1 to c2 |
alter table t1 change c1 c2 |
|
修改列类型 |
alter table t1 modify c1 integer |
alter table t1 change c1 c1 int |
|
修改列缺省值 |
alter table t1 modify c1 default 0 |
alter table t1 change c1 c1 int default 0 |
|
修改列非空 |
alter table t1 modify c1 not null |
alter table t1 change c1 c1 int not null |
|
重命名表 |
rename t1 to t2 |
alter table t1 rename t2 rename table t1 to t2 |
|
删除索引 |
drop index idx1 |
alter table t1 drop index idx1 drop index idx1 on t1 |
|
重命名索引 |
alter index idx1 rename to idx2 |
删除重建 |
|
重建索引 |
alter index idx1 rebuild |
无 |
|
禁用索引 |
alter index idx1 unusable |
无 |
|
删除表 |
drop table t1,如果表不存在报错 |
drop table if exists t1,判断表是否存在,存在删除,不存在不报错 |
|
重命名视图 |
rename v1 to v2 |
rename view v1 to v2 |
|
左右连接 |
select * from t1,t2 where t1.c1=t2.c2(+); select * from t1,t2 where t1.c1(+)=t2.c2; |
select * from t1 left join t2 on t1.c1=t2.c2; select * from t1 right join t2 on t1.c1=t2.c2; |
|
交集 |
select intersect select |
select inner join select;使用inner join代替 |
|
差集 |
Select minus select |
select left join where,使用left join where代替 |
|
获取固定值 |
select 1 from dual |
select 1 |
|
字段连接 |
select c1||c2 from t1 |
select concant(c1,c2) from t1 |
|
结果子查询 |
select * from (select * from t) |
select * from (select * from t) t1 结果集需要有别名 |
|
Merge |
merge into |
replace into |
|
行号 |
rownum |
无,需要使用用户变量来实现 |
|
分析函数 |
max() over() min() over() …… |
无,需要自行实现 |
|
位图索引 |
create bitmap index |
无 |
|
Top查询 |
select * from (select rownum from t1 order by c1) where rownum>=1 and rownum<=5 |
select * from t1 order by c1 limit 5 |
|
语句内部临时表 |
with as |
无 |
|
创建存储过程/ |
create or replace procedure |
create procecure |
|
创建函数 |
create or replace function |
create function |
|
创建视图 |
create or replace view |
create view |
|
创建触发器 |
create or replace trigger |
create trigger |
|
创建包 |
create or replace package |
无 |
|
创建用户 |
create user u1 identified by p1 default tablespace x temporary tablespace y |
create user u1 identified by p1 |
|
修改密码 |
alter user u1 identified by p2 |
mysqladmin -u u1 -p p1 password p2 |
|
大小写 |
不区分 |
缺省数据库、表名区分大小写,列名不区分; 可以设置lower_case_table_names=1都不分区 |
3) 子程序差异
Oracle中创建的匿名PL/SQL块、PL/SQL函数和存储过程,MySQL需要全部重新实现
MySQL和Oracle开发差异的更多相关文章
- mybatis中mysql和oracle的差异
1.applicationContext.xml中的配置差异: 在applicationContext.xml的数据源dataSource的配置中,mysql数据库需要心跳包的配置,而oracle中不 ...
- SQLServer、MySQL、Oracle语法差异小集锦
一.差异集锦 在建表的时候,只有自增的语法不同. 下面给出3种数据库通用的建表与初始化测试语句: CREATE TABLE Country( Id int PRIMARY KEY, Name ) ); ...
- MySQL,Oracle,PostgreSQL通过web方式管理维护, 提高开发及运维效率
在开发及项目运维中,对数据库的操作大家目前都是使用客户端工具进行操作,例如MySQL的客户端工具navicat,Oracle的客户端工具 PL/SQL Developer, MSSQL的客户端工具查询 ...
- 开发中mysql和oracle的区别
首先就不描述mysql与oracle在整个数据库系统上的区别了,仅从程序员开发的角度来说: 1.主键: mysql一般会用到一个自增的属性,例如设置一个id字段,类型设置为auto increment ...
- MySQL,Oracle,PostgreSQL,mongoDB 通过web方式管理维护, 提高开发及运维效率
在开发及项目运维中,对数据库的操作大家目前都是使用客户端工具进行操作,例如MySQL的客户端工具navicat,Oracle的客户端工具 PL/SQL Developer, MSSQL的客户端工具查询 ...
- 谈谈 mysql和oracle的使用感受 -- 差异
之前一直使用mysql作为存储数据库,虽然中间偶尔使用sqlite作为本地数据库存储,但没有感觉多少差别. 后来遇上了oracle,且以其作为主要存储,这下就不得不好好了解其东西了.oracle作为商 ...
- MySQL与Oracle 差异比较之四条件循环语句
循环语句 编号 类别 ORACLE MYSQL 注释 1 IF语句使用不同 IF iv_weekly_day = 'MON' THEN ii_weekly_day := 'MON';ELS ...
- 【无私分享:ASP.NET CORE 项目实战(第十二章)】添加对SqlServer、MySql、Oracle的支持
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 增加对多数据库的支持,并不是意味着同时对多种数据库操作,当然,后面,我们会尝试同时对多种数据库操作,这可能需要多个上下文,暂且 ...
- qlserver、Mysql、Oracle三种数据库的优缺点总结
这篇文章主要介绍了sqlserver.Mysql.Oracle三种数据库的优缺点总结,需要的朋友可以参考下 一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能 ...
随机推荐
- 联系人数据库设计之AbstractContactsProvider
个人见解,欢迎交流. 联系人数据库设计,源代码下载请自行去android官网下载. package com.android.providers.contacts; import android.con ...
- OpenJDK1.8.0 源码解析————HashMap的实现(二)
上一篇文章介绍了HashMap的一部分的知识,算是为下面HashMap的进一步学习做准备吧. 然后写的时候一直在思考的一个问题是,这方面的知识网上的资料也是一抓一大把,即使是这样我为什么还要花费时间去 ...
- 在浏览器中通过bartender,调用条码打印机的active控件代码的实现
系统中须要在浏览器,直接调用条码打印机,打印出产品条码. 现实中的条码打印机,品种繁多,非常难在一个程序中实现, 于是我们用已经支持全部条码打印机的bartender软件 调用它的api ,来实如今浏 ...
- JSCapture实现屏幕捕捉
JSCapture 是用纯 JavaScript 和 HTML5 实现的屏幕捕捉库. 能够随意在浏览器或者桌面视频进行截图, JSCapture 使用 getUserMedia 来实现屏幕捕获. 当前 ...
- ABAP 中 Table Control例子
实现了Table Control的主要的一些功能,可以作为例子参考,实现的功能有是否可编辑切换,选择某一条记录点击按钮显示详细信息,新增记录,删除记录,选择所有记录,选择光标所有记录,取消选择所有,排 ...
- ThinkPHP 的模型使用对数据库增删改查(五)
原文:ThinkPHP 的模型使用对数据库增删改查(五) ThinkPHP 的模型使用 // 直接连接数据库,但是得先去配置文件中配置下才行 class IndexAction extends Act ...
- HP MSA2312 ERROR
司在用的hp MAS2312存储其中一台每天都会报一个错误 EVENT:Vdisk verification failed. Command failed. (error code: 1) 2 err ...
- 上Https 和 http 差分
HTTPS 和 HTTP 差协议 超文本传输协定HTTP 对于web 浏览器和现场服务之间传递消息,HTTP 以纯文本协议 发送内容 无论不提供数据加密方法 假设拦截攻击web 浏览器和网站serve ...
- Python的经典问题——中文乱码
关键字:Python UTF-8 GBK 中文 乱码 估计入门时都会遇到的.我是在windows下用的Python25自带的IDLE编辑运行的,发现运行脚本得出的结果有一些中文显示是乱码,但有一些是正 ...
- JavaScript 中的事件类型1(读书笔记思维导图)
Web 浏览器中可能发生的事件有很多类型.如前所述,不同的事件类型具有不同的信息,而“ DOM3级事件”规定了以下几类事件. UI(User Interface,用户界面)事件:当用户与页面上的元素交 ...