在市场上有这么多数据库,思维战争已经开始,现在是了解市场上三个最重要的关系数据库之间的区别和重要性的正确时机 - microsoft sql server,oracle pl/sql和mysql。关系数据库管理系统目前已成为行业的支柱,由于有这么多选择,很难确定选择哪个。
关系数据库管理系统在1980年代被引入。本文重点探讨了行业中三个流行的rdbms的历史和特点:microsoft sql server,oracle和mysql。microsoft sql server和oracle是商业软件,而mysql是开源rdbms。
oracle是第一家在1980年代推出商业用途的rdbms的公司。在1990年代中期,微软以sql server作为对oracle的严肃竞争对手进入市场。另一方面,mysql最初是作为开源软件开发和分发的。mysql于1995年首次发布,windows版本于1998年发布。2008年,它被sun收购,随后被oracle收购。
语言 - 沟通的核心任何rdbms的支柱是用于执行查询的语言,这就是它们的性能和实现受到影响的方式。虽然这三个数据库管理系统都使用了一种名为结构化查询语言(sql)的版本。microsoft sql server使用transact-sql(t-sql),这是由sybase最初开发并由microsoft使用的sql扩展。而oracle则使用pl/sql(过程化语言/sql)。
两者都是sql的不同“风味”或方言,两种语言具有稍微不同的语法和功能。两种语言之间的主要区别在于它们如何处理变量、存储过程和内置函数。oracle中的pl/sql还可以将过程组合到包中,而在ms sql server中无法完成此操作。pl/sql可能会更复杂、更强大,而t-sql则更简单、更易于实现。
另一方面,mysql使用了轻量级的t-sql版本,并结合了与sql/psm密切相关的过程化语言。然而,mysql的存储代码对象接近ansi标准,但它们没有t-sql、microsoft和sybase的sql的广度和深度。
事务控制事务可以被视为作为单个单元执行的一组操作。例如,如果用户尝试执行一些sql查询,那么要么全部执行,要么全部不执行。这是oracle和ms sql server在事务控制方面的主要区别之一。
默认情况下,ms sql server将逐个执行和提交每个命令/任务,如果出现任何错误,将很难或不可能回滚更改。 begin transaction命令用于正确分组语句并声明事务的开始,可以在末尾使用commit语句。此commit语句将更改的数据写入磁盘并结束事务。在事务中,rollback将丢弃在事务块内进行的任何更改。发出commit后,无法再回滚任何更改,超过commit命令。
而在oracle中,每个新的数据库连接被视为一个新的事务。随着查询的执行和命令的发出,更改只在数据库的内存中进行,并保留在缓存中。除非明确给出commit语句,否则不会提交任何更改。在提交之后,发出的下一个命令实际上启动了一个新的事务,过程重新开始。这提供了更大的灵活性,也有助于错误控制,因为在明确执行commit命令之前,不会将任何更改提交到磁盘。
在mysql的情况下,事务的支持与innodb轻松兼容。innodb是mysql的存储引擎,默认情况下与mysql一起提供。它提供了标准的acid兼容事务功能,以及外键支持。
数据库对象的组织数据库对象的组织也是这3个数据库的一个重要区别。ms sql server通过数据库名称组织所有对象,如表、视图和过程。ms sql用户被分配给一个登录名,该登录名被授予对特定数据库及其对象的访问权限。在microsoft sql server中,每个数据库在服务器上有一个私有的、不共享的磁盘文件。
而在oracle中,所有数据库对象都按模式分组。模式实际上是数据库结构的子集集合,包含所有数据库对象。尽管它们是共享的,但每个用户的角色和权限都是定义好的,可以将其限制在特定的模式和表中。
简而言之,mysql、oracle和sql server都是强大的rdbms选项。虽然它们在“内部”工作和实现方式上存在许多其他差异,但它们可以以几乎相当的方式使用。每个都可以在不同的环境中以不同的目标使用。目的可能相同,但实现方式有所不同。
以上就是数据库战争:mssql server、oracle pl/sql 和 mysql的详细内容。
