oracle优点:
1、处理速度快,非常快
2、安全级别高。支持快闪以及完美的恢复,即使硬件坏了 也可以恢复到故障发前的1s
3、几台数据库做负载数据库,可以做到30s以内故障转移
4、网格控制,以及 数据仓库方面 也非常强大
oracle缺点:
1.不开源
2.收费高
至于mysql:
1.号称世界最快的数据库,连yahoo、google都用它,又免费,前途无量
2.但是,mysql没有事务的概念
Oracle数据库与MySQL数据库的主要区别如下:
0
.
组函数用法规则
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
条件
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
条件
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
天用
SUBDATE
(
NOW
(),
INTERVAL 7 DAY
)
ORACLE
找到离当前时间
7
天用
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
.
程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
来源:oschina
链接:https://my.oschina.net/u/1394041/blog/176619