DB2在查询语法上和Oracle、Mysql差异

DB2在查询语法上和Oracle、Mysql差异,第1张

Process - - - database - Object

Process - Server - User - Object

Process - database - User - Schema - Object

依次是Mysql、Oracle、Db2

没做过oracle多实例,db2也是刚刚接触,浅显的理解

Mysql这种方式很初级最容易被人想到,Database与User分开是跟其他两个的区别,用授权来关联用户和数据库

jdbc的连接地址里面,三者分别指定了Database、User、User(&Schema),Db2如果不单独创建Schema则形式是跟Oracle一样的。Db2的User只能是 *** 作系统的用户,数据库本身不能创建用户,这点好像不太好,对于不同的应用系统,Mysql是创建不同的Database,Oracle是创建不同的User,这时Db2有两种方法,一是创建不同的 *** 作系统用户,二是在User下创建不同的Schema,然后jdbc连接地址声明这个Schema。

就应用划分层面来说,三种数据库的Database、User、Schema在一个层面。Oracle相比Mysql可以新建多个实例,一个实例等同于Mysql的一个进程,我的理解Oracle的创建实例就是创建database,会新建出一个oracleserver。Db2的Database跟Oracle实例在一个层面,区别是Oracle创建实例比较麻烦,Db2一句话就执行完了。Oracle的两个实例之间独立,Db2也是。访问需要通过特定方式。

统一说来,

1:Oracle的实例与Db2的数据库是一回事,应该被统一称作实例比较合适,而Mysql便是单实例模式

2:应用划分层,三者分别是database、user、schema,统一称作database比较合适,真正的数据都在这一层。

从这里理解于是:用户名与密码的作用只是用来登陆,以及赋予对database的访问权限。

mysql中这两者是无关的。

oracle这里本没有database的概念,user就是database,可以理解为创建一个user时同时创建一个同名的database。有几个user就有几个database。

db2创建一个user会同时创建一个同名的database作为schema,另外还能再创建其他多个schema。

MYSQL 免费,功能不错,适合个人网站及一些小企业的网站应用;

DB2 超大型,与ORACLE类似,数据仓库和数据挖掘相当的不错,特别是集群技术可以使DB2的可扩性能达到极致。

3. 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)。

别人总结的, 供你参考


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7257585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存