你搞懂 ORACLESQLSERVER MYSQL与DB2的区别了吗 - DB2 -- 电脑知识与技术互动沟通平台.docx

上传人:安*** 文档编号:19267810 上传时间:2022-06-05 格式:DOCX 页数:29 大小:27.47KB
返回 下载 相关 举报
你搞懂 ORACLESQLSERVER MYSQL与DB2的区别了吗 - DB2 -- 电脑知识与技术互动沟通平台.docx_第1页
第1页 / 共29页
你搞懂 ORACLESQLSERVER MYSQL与DB2的区别了吗 - DB2 -- 电脑知识与技术互动沟通平台.docx_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《你搞懂 ORACLESQLSERVER MYSQL与DB2的区别了吗 - DB2 -- 电脑知识与技术互动沟通平台.docx》由会员分享,可在线阅读,更多相关《你搞懂 ORACLESQLSERVER MYSQL与DB2的区别了吗 - DB2 -- 电脑知识与技术互动沟通平台.docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、你搞懂ORACLESQLSERVERMYSQL与DB2的区别了吗-DB2-次元立方网-电脑知识与技术互动沟通平台Oracle、MYSQL与DB2可在所有主流平台上运行;SQLServer只能在Windows下运行;-安全性:Oracle的安全认证获得最高认证级别的ISO标准认证,而SQLServer并没有获得什么安全认证;这方面证实了Oracle的安全性是高于SQLServer的;-数据类型、函数、sql语句:oracle中有复合数据类型,sqlserver中没有;总之:ORACLE大型,完善,安全;SQLSERVER简单,界面友好,WINDOWS平台下的好选择,SqlServer后与SYBA

2、SE也比拟接近的;MYSQL免费,功能不错,合适个人网站及一些小企业的网站应用;DB2超大型,与ORACLE类似,数据仓库和数据挖掘相当的不错,十分是集群技术能够使DB2的可扩性能到达极致。全称为IBMDB2。是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX包括IBM自家的AIX、Linux、IBMi旧称OS/400、z/OS,以及Windows服务器版本。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下。DB2提供了高层次的数据利用性、完好性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具

3、有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序能够访问大型机数据,并使数据库本地化及远程连接透明化。DB2以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。DB2具有很好的网络支持能力,每个子系统能够连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。SQLServer与Oracle数据库两者一个最大的区别,就是其应用平台的差异。如今SQLServer数据库只能够部署在微软的操作系统上。而Oracle数据库其不但能够支持微

4、软的操作系统,而且还能够支持开源的操作系统,如Linux等等。感觉最大区别是在锁机制上,一个是页级锁,一个是行级锁,效能相差很大体系机构好似不同,ORACLE是一个数据库多用户多个表空间,SQL是多个数据库。不知对不对。oracleforwindows和oracleforlinux区别还是很大的,很显然,一个是以线程为主的,一个是以进程为主的。至于Oracleforwindows和SQLserver,妈的,价格有区别啊!SQLserver便宜,oracle贵,您要回扣我们就买oracle.oracle国内销售作的火,大多数企业,事业使用sqlserver中小型数据库的首选mysql免费,配合p

5、hp,perl一般作网站的数据库db2对大型分布式应用系统尤为适用。开放性:SQLServer只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是特别重要的。Windows9X系列产品是侧重于桌面应用,NTserver只合适中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据量的关键业务时.Oracle能在所有主流平台上运行包括windows。完全支持所有的工业标准。采用完全开放策略。能够使客户选择最合适的解决方案。对开发商全力支持。DB2能在所有主流平台上运行包括windows。最适于海量数据。DB2在

6、企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%.可伸缩性,并行性SQLserver:并行施行和共存模型并不成熟。很难处理日益增加的用户数和数据卷。伸缩性有限。Oracle平行服务器通过使一组结点分享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。假如windowsNT不能知足需要,用户能够把数据库移到UNIX中。DB:2DB2具有很好的并行性。DB2把数据库管理扩大到了并行的、多节点的环境,数据库分区是数据库的一部分,包含本人的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点或数据库节点

7、安全性SQLserver:没有获得任何安全证书。Oracl获得最高认证级别的ISO标准认证。DB2:获得最高认证级别的ISO标准认证。性能SQLServer:多用户时性能不佳Oracle:性能最高,保持windowsNT下的TPC-D和TPC-C的世界记录。DB2:适用于数据仓库和在线事物处理性能较高。客户端支持及应用形式SQLServer:C/S构造,只支持windows客户,能够用ADO,DAO,OLEDB,ODBC连接.Oracle多层次网络计算,支持多种工业标准,能够用ODBC,JDBC,OCI等网络客户连接DB2跨平台,多层构造,支持ODBC,JDBC等客户操作简便SQLServer

8、操作简单,但只要图形界面.Oracle较复杂,同时提供GUI和命令行,在windowsNT和unix下操作一样DB2操作简单,同时提供GUI和命令行,在windowsNT和unix下操作一样使用风险SQLserver完全重写的代码,经历了长期的测试,不断延迟,很多功能需要时间来证实。并不特别兼容早期产品。使用需要冒一定风险。Oracle长时间的开发经历,完全向下兼容。得到广泛的应用。完全没有风险。DB2在巨型企业得到广泛的应用,向下兼容性好。风险小。1.ORACLEoracle能在所有主流平台上运行包括windows。完全支持所有的工业标准。采用完全开放策略。能够使客户选择最合适的解决方案。对

9、开发商全力支持.oracle并行服务器通过使一组结点分享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。假如windowsNT不能知足需要,用户能够把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。oracle获得最高认证级别的ISO标准认证.oracle性能最高,保持开放平台下的TPC-D和TPC-C的世界记录oracle多层次网络计算,支持多种工业标准,能够用ODBC、JDBC、OCI等网络客户连接。长时间的开发经历,完全向下兼容。得到广泛的应用。完全没有风险。Oracle在兼容性、可移植性、可联合性、高生产

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

11、rosoft推出一套产品,它具有使用方便、可伸缩性好、与相关软件集成程度高等优点,逐步成为Windows平台下进行数据库应用开发较为理想的选择之一。SQLServer是目前流行的数据库之一,它已广泛应用于金融,保险,电力,行政管理等与数据库有关的行业.而且,由于其易操作性及友好的界面,博得了广大用户的青睐,尤其是SQLServer与其它数据库,如Access,FoxPro,Excel等有良好的ODBC接口,能够把上述数据库转成SQLServer的数据库,因而目前越来越多的读者正在使用SQLServer.3.MYSQLMySQL是开源的,支持事务处理,有视图,有存储经过和触发器,有数据库端的用户

12、自定义函数,不能完全使用标准的SQL语法。从数据库行家听讲的第一件事就是MySQL缺乏transactions,rollbacks,和subselects的功能。假如你计划使用MySQL写一个关于银行、会计的应用程序,或者计划维护一些随时需要线性递增的不同类的计数器,你将缺乏transactions功能。在现有的发布版本的MySQL下,请不要有任何的这些想法。在非常必要的情况下,MySQL的局限性能够通过一部分开发者的努力得到克制。在MySQL中你失去的主要功能是subselect语句,而这正是其它的所有数据库都具有的。换而言之,这个失去的功能是一个痛苦。MySQL没法处理复杂的关联性数据库功

13、能,例如,子查询subqueries,固然大多数的子查询都能够改写成join另一个MySQL没有提供支持的功能是事务处理transaction以及事务的提交commit/撤销rollback。一个事务指的是被当作一个单位来共同执行的一群或一套命令。假如一个事务没法完成,那么整个事务里面没有一个指令是真正执行下去的。对于必须处理线上订单的商业网站来讲,MySQL没有支持这项功能,确实让人觉得很失望。但是能够用MaxSQL,一个分开的服务器,它能通过外挂的表格来支持事务功能。外键foreignkey以及参考完好性限制referentialintegrity能够让你制定表格中资料间的约束,然后将约束

14、constraint加到你所规定的资料里面。这些MYSQL没有的功能表示一个有赖复杂的资料关系的应用程序并不合适使用MySQL。当我们讲MySQL不支持外键时,我们指的就是数据库的参考完好性限制-MySQL并没有支持外键的规则,不过有Innodb只要在创立表类型时,TYPE=INNODB就能够进行外键的约束。当然更没有支持连锁删除cascadingdelete的功能。简短的讲,假如你的工作需要使用复杂的资料关联,那你还是用原来的Access吧。SQLServer和oracle的区别首先一点,这三个数据库不是同一个公司的产品;二、其所对应的使用对象也不一样,oracle是主流的大型数据库,大多数

15、电信项目都是使用的oracle,而sqlserver与mysql主要是个人以及小型公司使用的的数据库,但是sqlserver需要收费,mysql不用;三、假如按功能上来讲,oracle最为强大,oracle支持递归查询,二后两者不支持;四、三个数据库中,只要sqlserver有完好的图形化操作界面,而oracle与mysql都要借助于其他的第三方数据库图形操作界面,比方oracle用的大多都是plsql;一、开放性1.SQLServer只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是特别重要的。Windows9X系列产品是侧重于桌面应用,NTserver只合适中小型

16、企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据库。2.Oracle能在所有主流平台上运行包括windows。完全支持所有的工业标准。采用完全开放策略。能够使客户选择最合适的解决方案。对开发商全力支持。二、可伸缩性,并行性1.SQLserver并行施行和共存模型并不成熟,很难处理日益增加的用户数和数据卷,伸缩性有限。2.Oracle并行服务器通过使一组结点分享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。假如windowsNT不能知足需要,用户能够把数据库移到UNIX中。Oracle的并行服务器

17、对各种UNIX平台的集群机制都有着相当高的集成度。1.SQLServer多用户时性能不佳2.Oracle性能最高,保持开放平台下的TPC-D和TPC-C的世界记录。四、客户端支持及应用形式1.SQLServerC/S构造,只支持windows客户,能够用ADO、DAO、OLEDB、ODBC连接。2.Oracle多层次网络计算,支持多种工业标准,能够用ODBC、JDBC、OCI等网络客户连接。五、操作简便1.SQLServer操作简单,但只要图形界面。2.Oracle较复杂,同时提供GUI和命令行,在windowsNT和unix下操作一样。六、使用风险1.SQLserver完全重写的代码,经历了

18、长期的测试,不断延迟,很多功能需要时间来证实。并不特别兼容。2.Oracle长时间的开发经历,完全向下兼容。得到广泛的应用。完全没有风险。最后价格上ORACLE贵过SQLSRVERORACLE,MYSQL和SQLSERVER之区别MySql数据库:优点:1.支持5000万条记录的数据仓库2.适应于所有的平台3.是开源软件,版本更新较快4.性能很出色。纯粹就性能而言,MySQL是相当出色的,由于它包含一个缺省桌面格式MyISAM。MyISAM数据库与磁盘非常地兼容而不占用太多的CPU和内存。MySQL能够运行于Windows系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更好。你还能够通

19、过使用64位处理器来获取额外的一些性能。由于MySQL在内部里很多时候都使用64位的整数处理。5.价格便宜缺点:缺乏一些存储程序的功能,比方MyISAM引擎联支持交换功能MsSqlserver数据库:优点:1.真正的客户机/服务器体系构造2.图形化的用户界面,使系统管理和数据库管理愈加直观、简单3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地4.与WinNT完全集成,利用了NT的很多功能,如发送和接受消息,管理登录安全性等,SQLServer可以以很好地与MicrosoftBackOffice产品集成。5.有很好的伸缩性,能够跨平台使用。6.提供数据仓库功能,这个功能只在Orac

20、le和其他昂贵的DBMS中才有。Oracle数据库:优点:1.Oracle的稳定性要比Sqlserver好。2.Oracle在导数据工具sqlload.exe功能比Sqlserver的Bcp功能强大,Oracle能够根据条件把文本文件数据导入.3.Oracle的安全机制比Sqlserver好。4.Sqlserver的易用性和友好性方面要比Oracle好。5.在处理大数据方面Oracle会更稳定一些。6.SqlServer在数据导出方面功能更强一些。7.处理速度方面比Oracle快一些,和两者的协议有关.缺点:价格昂贵MySQL与Oracle的语法区别具体比照Oracle和mysql的一些简单命

21、令比照1)SQLselectto_char(sysdate,yyyy-mm-dd)fromdual;SQLselectto_char(sysdate,hh44-mi-ss)fromdual;mysqlselectdate_format(now(),%Y-%m-%dmysqlselecttime_format(now(),%H-%i-%S日期函数增加一个月:SQLselectto_char(add_months(to_date(20000101,yyyymmdd),1),yyyy-mm-dd)fromdual;结果:2000-02-01SQLselectto_char(add_months(to

22、_date(20000101,yyyymmdd),5),yyyy-mm-dd)fromdual;结果:2000-06-01mysqlselectdate_add(2000-01-01,interval1month);结果:2000-02-01mysqlselectdate_add(2000-01-01,interval5month);结果:2000-06-01截取字符串:SQLselectsubstr(abcdefg,1,5)fromdual;SQLselectsubstrb(abcdefg,1,5)fromdual;结果:abcdemysqlselectsubstring(abcdefg,2

23、,3);结果:bcdmysqlselectmid(abcdefg,2,3);结果:bcdmysqlselectsubstring(abcdefg,2);结果:bcdefgmysqlselectsubstring(abcdefgfrom2);结果:bcdefg2)在MySQL中from后的表假如是(select.)这种,那么后面必须有别名3)连接字符串在Oracle中用|,SqlServer中用+,MySQL中用concat(a,b,c)4)在SqlServer中的写法:declareidvarchar(50);setid=4028e4962c3df257012c3df3b4850001sele

24、ct*fromsims_sample_detectwhereID=id;在MySQL中的写法:seta=189;select*frombc_articlewhereid=a/不用declare在Orcale中的写法:5)MySQL存储经过:DELIMITER$DROPPROCEDUREIFEXISTSSIMS.transaction_delSampleInfo$CREATEDEFINER=root%PROCEDUREtransaction_delSampleInfo(insampleInfoIdvarchar(50)BEGINstarttransaction;updatesims_sample

25、_infosetdel=1whereID=sampleInfoId;updatesims_sample_detectsetdel=1whereSAMPLE_ID_PARENT=sampleInfoId;updatesims_sample_detect_infosetdel=1whereDETECT_IDin(selectIDfromsims_sample_detectwhereSAMPLE_ID_PARENT=sampleInfoIdcommit;END$DELIMITER;变量名不能跟列名一样,否则效果为1=1,且MySQL不区分大小写。6mysql游标mysql没有像orcale的动态游标

26、,只要显示游标,例子如下:DELIMITER$DROPPROCEDUREIFEXISTStest.liyukun$CREATEDEFINER=idslocalhostPROCEDUREliyukun(outzint)BEGINdeclarecount1int;DECLAREdoneINTDEFAULT0;declarev_haomavarchar(50);declarev_yingyetingvarchar(100);DECLAREcur1CURSORFORselecthaoma,yingyetingfromeryuewhereidDECLARECONTINUEHANDLERFORNOTFOU

27、NDSETdone=1;/这里和oracle有区别,Oracle的PL/SQL的指针有个隐性变量%notfound,Mysql是通过一个Errorhandler的声明来进行判定的OPENcur1;cur1:LOOPFETCHcur1INTOv_haoma,v_yingyeting;IFdone=1THEN/假如没有数据了,则离开LEAVEcur1;ELSEselectcount(*)intocount1fromyear2021wherehaoma=v_haoma;if(count1=0)theninsertintoyear2021(haoma,yingyeting)values(v_haoma

28、,v_yingyeting);elsesetz=z+1;updateyear2021seteryue=100wherehaoma=v_haoma;endif;ENDIF;ENDLOOPcur1;CLOSEcur1;END$DELIMITER;执行:callliyukun(a);selecta;7)mysql的groupby语句能够select没有被分组的字段,如selectid,name,agefromAgroupbyage这样但是在orcale和sqlserver中是会报错的。这个取出的id,name所在的行是每个分组中的第一行数据。8)orcale用decode()来转换数据,mysql,

29、sqlserver用casewhen:caset.DETECT_RESULTwhen2402thent.SAMPLEIDend(必须有end)9)mysql:两个select出的数据相减: (COUNT(distinct(t.SAMPLEID)-CONVERT(COUNT(distinct(caset.DETECT_RESULTwhen2402thent.SAMPLEIDend),SIGNED)ASNEGATIVEFROMview_sims_for_reportt10convert,cast用法mysql将varchar转为intconvert(字段名,SIGNED)字符集转换:CONVERT

30、(xxxUSINGgb2312)类型转换和SQLServer一样,就是类型参数有点不同:CAST(xxxAS类型),CONVERT(xxx,类型)可用的类型二进制,同带binary前缀的效果:BINARY字符型,可带参数:CHAR()日期:DATE时间:TIME日期时间型:DATETIME浮点数:DECIMAL整数:SIGNED无符号整数:UNSIGNED11)假如从mysql数据库中取的时候没有乱码,而在Java的List中得到的是乱码的话,那么可能是SQL语句中的有字段不是varchar的数据类型,这时需要转换convert(字段名,类型)转换一下,Orcale则用ToChar函数12)O

31、rcale的大字段用clob,图像用blob,clob字段在Hibernate的映射文件中用String就能够13)mysql,orcale,sqlserver语句执行顺序开场-FROM子句-WHERE子句-GROUPBY子句-HAVING子句-ORDERBY子句-SELECT子句-LIMIT子句-最终结果每个子句执行后都会产生一个中间结果,供接下来的子句使用,假如不存在某个子句,就跳过。14)LPAD函数1在oracle的数据库里有个函数LPAD(Stringa,intlength,StringaddString).2作用:把addString添加到a的左边,length是返回值的长度。3例

32、子A:SQLselectlpad(test,8,0)fromdual;LPAD(TEST,8,0)-0000testB:selectlpad(test,8)fromdual;LPAD(TEST,8)-test注:不写最后一个参数,函数会默认在返回值左边加一个空格。C:SQLselectlpad(test,2,0)fromdual;LPAD(TEST,2,0)-D:SQLselectlpad(test,3)fromdual;LPAD(TEST,3)-tes15)Orcale中没有TOP,是通过select*from(select*fromAorderbyiddesc)whererownum=1注

33、:不能直接写select*fromAwhererownum=1orderbyiddesc由于语句执行的顺序是先where再orderby,假如这样写就无法按id的排序来取第一个了。不能写rownum=2或rownum1这样,由于Orcale默认必须包含第一条。假如非要取第二条的话,能够写成:select*from(selectid,rownumasrow_numfromlws_q_bl_resultrwherer.sample_id=B10226072)whererow_num=216)Orcale,MySqlwhile循环比拟Orcale:whilenum10loopstr:=to_char

34、(num);num:=num+1;endloop;可以以:fornumin1.10-这样的缺陷是无法间隔取值loopstr:=to_char(num);endloop;mysql:whilenum10str:=to_char(num);num:=num+1;endwhile;17)orcale生成唯一序列是selectsys.guid()fromdual,mysql是selectuuid()fromdual18)MySql和Orcale的ID自增MySql由于是在数据库中实现ID自增,所以假如想返回插入一条序列的该条ID,只能用如下方法:publicintinsertSign(finalSpa

35、ceSignsign)throwsExceptiontryKeyHolderkeyHolder=newGeneratedKeyHolder();finalStringsql=insertintospace_sign(userId,userName,nickName,contentText,contentHtml,isPublic,commentCount,userIp,status,insertTime)+values(?,?,?,?,?,?,?,?,?,?)template.update(newPreparedStatementCreator()publicPreparedStatement

36、createPreparedStatement(Connectionconnection)throwsSQLExceptionPreparedStatementps=connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);ps.setInt(1,sign.getUserId();ps.setString(2,sign.getUserName();ps.setString(3,sign.getNickName();ps.setString(4,sign.getContentText();ps.setString(5,sig

37、n.getContentHtml();ps.setInt(6,sign.getIsPublic();ps.setInt(7,sign.getCommnetCount();ps.setString(8,sign.getUserIp();ps.setInt(9,sign.getStatus();ps.setTimestamp(10,newjava.sql.Timestamp(sign.getInsertTime().getTime();returnps;,keyHolder);LonggeneratedId=keyHolder.getKey().longValue();returngeneratedId.intValue();catch(Exceptione)/TODOAuto-generatedcatchblocke.printStackTrace();thrownewSQLException(失败,e);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁