0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

三大主流数据库对比 哪个更有优势

电子工程师 来源:网络整理 作者:工程师李察 2018-09-08 09:37 次阅读

Oracle

Oracle 能在所有主流平台上运行(包括Windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持,Oracle并行服务器通过使一组结点共享同一簇中的工作来扩展Windows NT的能力,提供高可用性和高伸缩性的簇的解决方案。如果Windows NT不能满足需要,用户可以把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。Oracle获得最高认证级别的ISO标准认证.Oracle性能最高,保持开放平台下的TPC-D和TPC-C的世界记录Oracle多层次网络计 算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接。

Oracle 在兼容性、可移植性、可联结性、高生产率上、开放性也存在优点。Oracle产品采用标准SQL,并经过美国国家标准技术所(NIST)测试。与 IBM SQL/DS,DB2,INGRES,IDMS/R等兼容。Oracle的产品可运行于很宽范围的硬件操作系统平台上。可以安装在70种以上 不同的大、中、小型机上;可在VMS、DOS、UNIX、WINDOWS等多种操作系统下工作。能与多种通讯网络相连,支持各种协议(TCP/IP、 DECnet、LU6.2等)。提供了多种开发工具,能极大的方便用户进行进一步的开发。Oracle良好的兼容性、可移植性、可连接性和高生产率是 Oracle RDBMS具有良好的开放性。

Oracle价格是比较昂贵的。据说一套正版的Oracle软件早在2006年年底的时候在市场上的价格已经达到了6位数。所以如果你的项目不是那种超级大的项目,还是放弃Oracle吧。

SQL Server

SQL Server 是 Microsoft推出一套产品,它具有使用方便、可伸缩性好、与相关软件集成程度高等优点,逐渐成为Windows平台下进行数据库应用开发较为理想的 选择之一。SQLServer是目前流行的数据库之一,它已广泛应用于金融、保险、电力、行政管理等与数据库有关的行业。而且,由于其易操作性及友好的界 面,赢得了广大用户的青睐,尤其是SQLServer与其它数据库,如Access、FoxPro、Excel等有良好的ODBC接口,可以把上述数据库 转成SQLServer的数据库,因此目前越来越多的读者正在使用SQLServer。

SQL Server由于是微软的产品,又有着如此强大的功能,所以他的影响力是几种数据库系统中比较大,用户也是比较多的。它一般是和同是微软产品的.net平台一起搭配使用。当然其他的各种开发平台,都提供了与它相关的数据库连接方式。因此,开发软件用SQL Server做数据库是一个正确的选择。

MySQL

MySQL不支持事务处理,没有视图,没有存储过程和触发器,没有数据库端的用户自定义函数,不能完全使用标准的SQL语法。

从数据库行家听说的第一件事就是MySQL缺乏transactions,rollbacks, 和subselects的功能。如果你计划使用MySQL写一个关于银行、会计的应用程序,或者计划维护一些随时需要线性递增的不同类的计数器,你将缺乏transactions功能。在现有的发布版本的 MySQL下,请不要有任何的这些想法。(请注意,MySQL的测试版3.23.x系列现在已经支持transactions了)。

在非常必要的情况下,MySQL的局限性可以通过一部分开发者的努力得到克服。在MySQL中你失去的主要功能是subselect语句,而这正是其它的所有数据库都具有的。换而言之,这个失去的功能是一个痛苦。

MySQL没法处理复杂的关联性数据库功能,例如,子查询(subqueries),虽然大多数的子查询都可以改写成join 另一个MySQL没有提供支持的功能是事务处理(transaction)以及事务的提交(commit)/撤销(rollback)。一个事务指的是被当作一个单位来共同执行的一群或一套命令。如果一个事务没法完成,那么整个事务里面没有一个指令是真正执行下去的。对于必须处理线上订单的商业网站来说,MySQL没有支持这项功能,的确让人觉得很失望。但是可以用MaxSQL,一个分开的服务器,它能通过外挂的表格来支持事务功能。

外键(foreignkey)以及参考完整性限制(referentialintegrity)可以让你制定表格中资料间的约束,然后将约束 (constraint)加到你所规定的资料里面。这些MySQL没有的功能表示一个有赖复杂的资料关系的应用程序并不适合使用MySQL。当我们说 MySQL不支持外键时,我们指的就是数据库的参考完整性限制--MySQL并没有支持外键的规则,当然更没有支持连锁删除(cascadingdelete)的功能。简短的说,如果你的工作需要使用复杂的资料关联,那你还是用原来的Access吧。

你在MySQL中也不会找到存储进程(storedprocedure)以及触发器(trigger)。(针对这些功能,在Access提供了相对的事件进程(eventprocedure)。

MySQL+php+apache三者被软件开发者称为“php黄金组合”。

Oracle和MySQL的主要区别

Oracle:客户端和命令窗口,都是由用户决定内容-> conn user_name/password;

MySQL:客户端和命令窗口,都是由数据库决定内容-> use datebase;

都可以创建多数据库多用户,个人倾向于Oracle一个数据库中多个用户的形式,MySQL多个数据库多个用户形式(最好每个数据库对应一个用户)

Oracle是大型数据库而MySQL是中小型数据库,Oracle市场占有率达40%,MySQL只有20%左右,同时MySQL是开源的而Oracle价格非常高。

Oracle支持大并发,大访问量,是OLTP(On-Line Transaction Processing联机事务处理系统)最好的工具。

安装所用的空间差别也是很大的,MySQL安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。

Oracle也与MySQL操作上的一些区别

组函数用法规则

MySQL中组函数在select语句中可以随意使用,但在Oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错

eg:

select name,count(money) from user;这个放在MySQL中没有问题在Oracle中就有问题了。

自动增长的数据类型处理

MySQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。Oracle没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。

CREATE SEQUENCE序列号的名称(最好是表名+序列号标记)INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;

其中最大的值按字段的长度来定,如果定义的自动增长的序列号NUMBER(6),最大值为999999

INSERT语句插入这个字段值为:序列号的名称.NEXTVAL

单引号的处理

MySQL里可以用双引号包起字符串,Oracle里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。

翻页的SQL语句的处理

MySQL处理翻页的SQL语句比较简单,用LIMIT开始位置,记录个数;PHP里还可以用SEEK定位到结果集的位置。Oracle处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80。

以下是经过分析后较好的两种Oracle翻页SQL语句(ID是唯一关键字的字段名):

语句一:

SELECTID,[FIELD_NAME,...]FROMTABLE_NAMEWHEREIDIN(SELECTIDFROM(SELECTROWNUMASNUMROW,IDFROMTABLE_NAMEWHERE条件1ORDERBY条件2)WHERENUMROW>80ANDNUMROW< 100 ) ORDER BY 条件3; 

语句二:

SELECT*FROM((SELECTROWNUMASNUMROW,c.*from(SELECT[FIELD_NAME,...]FROMTABLE_NAMEWHERE条件1ORDERBY条件2)c)WHERENUMROW>80ANDNUMROW< 100 ) ORDER BY 条件3; 

长字符串的处理

长字符串的处理Oracle也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节,如果要插入更长的字符串,请考虑字段用CLOB类型,方法借用Oracle里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。

日期字段的处理

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

空字符的处理

MySQL的非空字段也有空的内容,Oracle里定义了非空字段就不容许有空的内容。按MySQL的NOT NULL来定义Oracle表结构,导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。

字符串的模糊比较

MySQL里用字段名like%'字符串%',Oracle里也可以用字段名like%'字符串%'但这种方法不能使用索引,速度不快,用字符串比较函数instr(字段名,'字符串')>0会得到更精确的查找结果。

程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。

主键

MySQL一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,MySQL将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    760

    浏览量

    44080
  • 数据库
    +关注

    关注

    7

    文章

    3767

    浏览量

    64279
  • Oracle
    +关注

    关注

    2

    文章

    288

    浏览量

    35101
  • MySQL
    +关注

    关注

    1

    文章

    802

    浏览量

    26448
收藏 人收藏

    评论

    相关推荐

    什么是时序数据库

    本文根据演讲视频以及PPT整理而成。本文将主要围绕以下四个方面进行分享:时序数据与时序数据库时序数据库的演变时序数据库对比总结一、时序
    发表于 07-12 08:35

    Amazon RDS云数据库优势

    。Amazon RDS 通过管理耗时的数据库管理任务(包括备份、软件修补、监控、扩展和复制),让您能专注于应用程序。 优势 易于管理 Amazon RDS for MariaDB 可以自动执行设置
    发表于 10-13 16:51 0次下载

    数据库教程之如何进行数据库设计

    本文档的主要内容详细介绍的是数据库教程之如何进行数据库设计内容包括了:1 数据库设计概述 ,2 数据库需求分析 ,3 数据库结构设计 ,4
    发表于 10-19 10:41 21次下载
    <b class='flag-5'>数据库</b>教程之如何进行<b class='flag-5'>数据库</b>设计

    数据库应用系统的优势

    数据库应用系统是由数据库系统、应用程序系统、用户组成的,具体包括:数据库数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件、应用界
    的头像 发表于 02-28 15:50 6494次阅读

    数据库之战下半场,腾讯云数据库打的更有侵略性

    文/老鱼 云数据库上半场,是线上市场(公有云)之争,目前大局已定,阿里云以绝对优势领跑。如今,云数据库之战逐步进行到下半场,即线下市场(混合云、私有云)之争,而下半场将是影响整个中国数据库
    的头像 发表于 01-10 21:50 1853次阅读
    云<b class='flag-5'>数据库</b>之战下半场,腾讯云<b class='flag-5'>数据库</b>打的<b class='flag-5'>更有</b>侵略性

    内存数据库的应用优势是怎样的

    想了解内存数据库的应用优势,举个具体的例子来说明应该会更直观生动。 拿运营商来举例,某家运营商的云能力中心现在用的是基于磁盘架构数据库(如MySQL),但是随着业务的不断发展,出现了数据
    的头像 发表于 06-20 18:13 904次阅读

    对比传统自建数据库,华为云数据库 RDS for MySQL优势明显

      对于数据库,想必大家都已经不再陌生,但若要解释它是什么,当下市场上的数据库又有着怎样的不同,相信不少小伙伴都处于一知半解的懵逼状态。今天,就让我们来系统的认识一下数据库。   简单来说,
    的头像 发表于 10-20 18:05 614次阅读

    没有对比就没有伤害,华为云数据库比自建数据库强在哪?

    下,云数据库和自建数据库谁更好?好在哪?今天我们就来详细讲解一下吧。 就拿如今应用最为广泛和广受企业客户喜爱的华为云数据库MySQL来讲,它是全球最受欢迎的开源性数据库之一,在
    的头像 发表于 10-22 12:57 854次阅读
    没有<b class='flag-5'>对比</b>就没有伤害,华为云<b class='flag-5'>数据库</b>比自建<b class='flag-5'>数据库</b>强在哪?

    数据库上云已成趋势,华为云数据库与传统数据库对比解析

    如今参与信息化的企业大多离不开数据库,但很多人对什么是数据库并没有一个清晰的认识。那么数据库到底是什么?传统数据库是根据某种数据类型组织起来
    的头像 发表于 12-27 16:52 1020次阅读
    <b class='flag-5'>数据库</b>上云已成趋势,华为云<b class='flag-5'>数据库</b>与传统<b class='flag-5'>数据库</b><b class='flag-5'>对比</b>解析

    数据库的特性及其优势

    本文介绍了图数据库的历史由来、特性及其优势,并说明了图数据库解决的是什么样的问题,阐述了图数据库的应用场景,并对其发展做了展望
    的头像 发表于 03-29 13:35 1924次阅读
    图<b class='flag-5'>数据库</b>的特性及其<b class='flag-5'>优势</b>

    PetaExpress云数据库 MongoDB(mongodb数据库)优势

    MongoDB(mongodb数据库)优势: 轻松部署文档数据库MongoDB 控制台可以创建数据库,文档数据库MongoDB 例子可以在
    的头像 发表于 07-14 10:06 541次阅读

    数据库和普通数据库区别?|PetaExpress云端数据库

    和持久性有四个特点。 云数据库和普通数据库相比都具备哪些优势? 1)安全稳定 云端数据库服务,能够帮助用户将危险的操作收缩起来,避免数据库
    的头像 发表于 08-01 17:13 1071次阅读

    python读取数据库数据 python查询数据库 python数据库连接

    使用第,包括MySQLDB、sqlite3、psycopg2等。其中MySQLDB是Python连接MySQL数据库的一个重要
    的头像 发表于 08-28 17:09 1759次阅读

    什么是JSON数据库

    如何理解JSON数据库?作为NoSQL数据库的一种类型,JSON数据库有哪些优势呢?JSON数据库如何运作,它为应用程序开发者带来了哪些价值
    的头像 发表于 12-02 08:04 830次阅读
    什么是JSON<b class='flag-5'>数据库</b>

    关于JSON数据库

    如何理解JSON数据库?作为NoSQL数据库的一种类型,JSON数据库有哪些优势呢?JSON数据库如何运作,它为应用程序开发者带来了哪些价值
    的头像 发表于 12-06 13:46 840次阅读
    关于JSON<b class='flag-5'>数据库</b>