- 浏览: 189944 次
- 性别:
- 来自: 上海
文章分类
最新评论
Oracle数据库与MySQL数据库的区别是本文我们主要介绍的内容,希望能够对您有所帮助。
1.组函数用法规则
mysql中组函数在select语句中可以随意使用,但在oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错
eg:
select name,count(money) from user;这个放在mysql中没有问题在oracle中就有问题了。
2.自动增长的数据类型处理
MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
CREATE SEQUENCE序列号的名称(最好是表名+序列号标记)INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的长度来定,如果定义的自动增长的序列号NUMBER(6),最大值为999999
INSERT语句插入这个字段值为:序列号的名称.NEXTVAL
3.单引号的处理
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
4.翻页的SQL语句的处理
MYSQL处理翻页的SQL语句比较简单,用LIMIT开始位置,记录个数;PHP里还可以用SEEK定位到结果集的位置。ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80。
以下是经过分析后较好的两种ORACLE翻页SQL语句(ID是唯一关键字的字段名):
语句一:
SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
语句二:
SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
5.长字符串的处理
长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节,如果要插入更长的字符串,请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。
6.日期字段的处理
MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE,精确到秒,或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)年-月-日24小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式,可以参看ORACLE DOC.日期型字段转换成字符串函数TO_CHAR(‘2001-08-01’,’YYYY-MM-DD HH24:MI:SS’)
日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE - 7;
MYSQL中插入当前时间的几个函数是:NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。例:insert into tablename (fieldname) values (now())
而oracle中当前时间是sysdate
7.空字符的处理
MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构,导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
8.字符串的模糊比较
MYSQL里用字段名like%‘字符串%’,ORACLE里也可以用字段名like%‘字符串%’但这种方法不能使用索引,速度不快,用字符串比较函数instr(字段名,‘字符串’)>0会得到更精确的查找结果。
9.程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
转自http://www.csdn.net/article/1970-01-01/308040
1.组函数用法规则
mysql中组函数在select语句中可以随意使用,但在oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错
eg:
select name,count(money) from user;这个放在mysql中没有问题在oracle中就有问题了。
2.自动增长的数据类型处理
MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
CREATE SEQUENCE序列号的名称(最好是表名+序列号标记)INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的长度来定,如果定义的自动增长的序列号NUMBER(6),最大值为999999
INSERT语句插入这个字段值为:序列号的名称.NEXTVAL
3.单引号的处理
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
4.翻页的SQL语句的处理
MYSQL处理翻页的SQL语句比较简单,用LIMIT开始位置,记录个数;PHP里还可以用SEEK定位到结果集的位置。ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80。
以下是经过分析后较好的两种ORACLE翻页SQL语句(ID是唯一关键字的字段名):
语句一:
SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
语句二:
SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
5.长字符串的处理
长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节,如果要插入更长的字符串,请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。
6.日期字段的处理
MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE,精确到秒,或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)年-月-日24小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式,可以参看ORACLE DOC.日期型字段转换成字符串函数TO_CHAR(‘2001-08-01’,’YYYY-MM-DD HH24:MI:SS’)
日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE - 7;
MYSQL中插入当前时间的几个函数是:NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。例:insert into tablename (fieldname) values (now())
而oracle中当前时间是sysdate
7.空字符的处理
MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构,导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
8.字符串的模糊比较
MYSQL里用字段名like%‘字符串%’,ORACLE里也可以用字段名like%‘字符串%’但这种方法不能使用索引,速度不快,用字符串比较函数instr(字段名,‘字符串’)>0会得到更精确的查找结果。
9.程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
转自http://www.csdn.net/article/1970-01-01/308040
发表评论
文章已被作者锁定,不允许评论。
-
oracle 查看执行计划的方式
2016-12-20 18:16 388一、通过PL/SQL Dev工具 1、直接File- ... -
pl/sql 乱码解决
2016-08-25 16:25 332select userenv('language') from ... -
使用MySQL Proxy解决MySQL主从同步延迟
2016-08-15 16:26 539使用MySQL Proxy解决MySQL主从同步延迟 ... -
分库分表
2016-07-03 12:30 538第1章 引言 随着互联网 ... -
select for update
2016-03-30 17:45 631xjr80C7HA3olbVr3y6H3t5--AcosrkB ... -
数据库超时
2016-03-07 10:37 479 -
oracle merge into
2016-03-04 16:16 424/*Merge into 详细介绍 MERGE语句是Oracl ... -
oracle 分区表
2016-03-02 14:59 430(1) 表空间及分区表的 ... -
一些注意的sql写法
2016-01-20 14:07 764Dashboard > 流程空间 > home ... -
oracle 组合索引使用
2016-01-14 20:33 894在Oracle中可以创建组合索引,即同时包含两个或两个以上列的 ... -
oracle 索引
2016-01-14 20:24 652一、 ROWID的概念 存储了row在数据文件中的具体位置: ... -
oracle 查看sql执行计划
2016-01-14 14:06 392如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划 ... -
oracle sql调优 执行计划固化 排序等 SQL Plan Baseline
2015-11-14 16:13 14261.对查询进行优化,应 ... -
oracle 字段类型 收录
2015-11-02 19:52 774字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符 ... -
oracle trunc 函数
2015-08-25 17:57 571Oracle trunc()函数的用法 --Oracle t ... -
oracle 分析函数
2015-08-03 12:49 611oracle分析函数--SQL*PLUS环 ... -
跨数据库事务研究
2015-05-12 11:16 871两种方案: 1、分布式 ... -
Oracle的悲观锁和乐观锁
2015-04-22 13:27 456为了得到最大的性能, ... -
MySQL数据库MyISAM和InnoDB存储引擎的比较
2015-04-21 13:49 493MySQL有多种存储引擎,MyISAM和InnoDB是其中常用 ... -
nosql学习
2015-04-20 09:56 5601、NoSQL数据库概念 NoSQL ...
相关推荐
### Oracle与MySQL的区别 在数据库管理系统领域,Oracle与MySQL因其各自独特的优势被广泛应用于不同的业务场景之中。本文将从几个具体的技术角度出发,探讨这两款数据库之间的差异。 #### 1. 分组查询(Group By)...
- 在 MySQL 中,组函数(如 COUNT、SUM 等)可以在 SELECT 语句中与非聚合列一起使用,但 Oracle 要求如果使用了组函数,其他列要么也使用组函数处理,要么出现在 GROUP BY 子句中。例如,`SELECT name, COUNT...
Oracle 和 MySQL 是两种广泛应用的关系型数据库管理系统(RDBMS),它们在很多方面有着显著的不同。以下将详细讨论这些差异: 1. **组函数使用规则**: Oracle 对于使用组函数(如 COUNT、SUM 等)有严格的规定。...
1. **表结构映射**:MySQL与Oracle的表结构可能存在差异,如字段类型、主键约束等。工具应能自动或手动进行这些字段的映射,确保数据的正确导入。 2. **数据迁移**:工具需要能够读取MySQL中的数据,并将其按照...
"Oracle2MySQL"软件的使用步骤一般包括以下几点: 1. **环境准备**:确保你已经安装了Oracle客户端和MySQL服务器,并且拥有足够的权限进行数据操作。 2. **连接设置**:配置Oracle和MySQL的连接参数,包括数据库...
2. 在Oracle中创建与MySQL主键类型匹配的列和序列。 3. 编写脚本或程序,读取MySQL数据,根据MySQL的主键值生成Oracle的序列号。 4. 插入数据到Oracle,并确保主键值的连续性。 总的来说,MySQL到Oracle的数据同步...
在进行Oracle到MySQL的转换时,需要注意以下几点: 1. **数据类型映射**:确保Oracle的数据类型被正确地映射到MySQL对应的类型,如NUMBER到DECIMAL,DATE到DATETIME等。 2. **字符集**:Oracle和MySQL支持的字符集...
在进行Oracle迁移至MySQL的过程中,需要关注几个关键步骤:首先是使用迁移工具如MetaDB工具完成数据库对象的转换与迁移;接着是通过Navicat等工具进行数据导入;最后是对迁移过程中可能出现的问题进行排查与解决。 ...
在进行转换时,需要注意以下几点: - **数据量限制**:检查Oracle和MySQL对BLOB字段的大小限制,确保数据不会超出范围。Oracle的BLOB最大可存储4GB,而MySQL的LONGBLOB同样可存储4GB。 - **性能考虑**:大量BLOB...
在IT领域,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,例如从Oracle迁移到Mysql。本文主要讨论了如何利用PHP来实现这个过程的技术要领。 首先,迁移的原因通常是经济性和技术性能的考虑。Mysql...
在转换过程中,需要注意以下几点: (1)表结构的更改:在转换过程中,可能需要手动更改表结构,以适应Mysql数据库的要求。 (2)数据长度的限制:在转换过程中,需要注意数据长度的限制,以免出现数据截断或溢出...
该工具的核心功能可能包括以下几点: 1. **数据迁移**:工具能够自动扫描MySQL数据库中的表、视图、存储过程等对象,并将其转换为Oracle兼容的格式。这涉及到数据类型映射,因为MySQL和Oracle支持的数据类型有所...
### Oracle与MySQL DBA面试知识点详解 #### MySQL数据库优化和配置 - **MySQL调优**:调优MySQL一般涉及到修改配置文件,例如`***f`或`my.ini`,包括设置缓冲池大小、最大连接数、查询缓存、线程缓存、InnoDB的表...
在实际开发中,还需要注意以下几点: - 错误处理:使用try-catch-finally结构处理可能的异常,确保在发生错误时能够正确关闭资源。 - 连接池管理:在大型项目中,通常会使用连接池(如C3P0、HikariCP等)来管理...
在对比MySQL与Oracle数据库性能的讨论中,我们通常会从几个关键方面进行分析,包括但不限于事务处理(INSERT、UPDATE、DELETE)、查询效率(SELECT)、硬件资源利用、SQL语法及优化、存储引擎和架构差异等方面。...
在使用"ora2mysqcn.exe" 进行迁移前,有几点需要注意: 1. 数据库版本兼容性:确保Oracle和MySQL的版本能够相互配合,以保证迁移的成功。 2. 空间规划:预估目标MySQL数据库需要的存储空间,确保有足够的空间接收...
标签“oracle”、“mysql”和“工具”分别代表了这个软件的主要关注点:Oracle数据库系统、MySQL数据库系统以及它作为两者之间数据转换的实用工具。 在压缩包的文件名列表中,我们可以看到以下几个关键文件: 1. *...