‘壹’ 几大主流数据库对比
oracle,安全性比较高,性能稳定,但是价格相对来说较其他要贵,一般用来做安全性比较高的企业数据库,如银行,电信系统等
ms-sql,中文操作界面,安全性不如oracle,是一个免费的数据库,所以服务肯定是不如oracle的,ms-sql适合做厂矿企业的数据库,初学者比较容易上手
db2是IBM的数据库,没太用过,也就知道这些了
‘贰’ 数据库之间的区别
Oracle 适用于较大型系统,但上手比较困难,即便上手后也很难提高。需要有长期的实践和摸索,但确实比较适合大系统。备份与恢复比较完善,但必需很有经验才能做的比较好。数据量不超过1T,可以用它
SqlServer:个人认为MS平台下最好用的数据库。界面简单友好,操作方便,备份与恢复都比较容易学会。而且学会SqlServer后与SYBASE也比较接近的。
MYSQL以前学PHP用的,感觉比较简单,无论是上手还是其本身的功能。
DB2我在AS/400上和MS平台都用过,感觉就是非常严谨,必须有非常规范的操作。如果数据量超过百G,建议用它。
SQL Server微软的东西,用起来感觉还不错,但是因为不能使用在UNIX上,所以企业,电信,政府都不是很愿意用。如果不是做ERP最好不要用这个东西,否则产品可能会买不出去
‘叁’ 多种数据库的比较
Orcale数据库
美国Orcale公司研制的一种关系型数据库管理系统,是一个协调服务器和用于支持任务决定型应用程序的开放型RDBMS。它可以支持多种不同的硬件和操作系统平台,从台式机到大型和超级计算机,为各种硬件结构提供高度的可伸缩性,支持对称多处理器、群集多处理器、大规模处理器等,并提供广泛的国际语言支持。 Orcale是一个多用户系统,能自动从批处理或在线环境的系统故障中恢复运行。系统提供了一个完整的软件开发工具Developer2000,包括交互式应用程序生成器、报表打印软件、字处理软件以及集中式数据字典,用户可以利用这些工具生成自己的应用程序。Orcale以二维表的形式表示数据,并提供了SQL(结构式查询语言),可完成数据查询、操作、定义和控制等基本数据库管理功能。Orcale具有很好的可移植性,通过它的通信功能,微型计算机上的程序可以同小型乃至大型计算机上的Orcale,并且能相互传递数据。另外Orcale还具有与C语言的接电子表格、图形处理等软件。 Orcale属于大型数据库系统,主要适用于大、中小型应用系统,或作为客户机/服务器系统中服务器端的数据库系统。
DB2数据库
IBM公司研制的一种关系型数据库系统。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。 DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。 它以拥有一个非常完备的查询优化器而着称,其外部连接改善了查询性能,并支持多任务并行查询。 DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。
SQL Server数据库
美国Microsoft公司推出的一种关系型数据库系统。SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。
其主要特点如下:
(1)高性能设计,可充分利用WindowsNT的优势。
(2)系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
(3)强壮的事务处理功能,采用各种方法保证数据的完整性。
(4)支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。
Sybase数据库
美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。 Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。Sybase通常与SybaseSQLAnywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的PowerBuilder为开发工具,在我国大中型系统中具有广泛的应用。美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。 Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。Sybase通常与SybaseSQLAnywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的PowerBuilder为开发工具,在我国大中型系统中具有广泛的应用。
MySql
短小精悍,象access一样的文件型数据库,但比access强百倍,是真正多用户多任务的数据库系统,从Linux上移植过来的,安全性非常好,不过大部分操作是在dos下进行,虽然也有第三方开发的图形界面但并不好用。MySQL是跨多平台的数据库管理软件,可运行于LINUX、NT、UNIX等系统,可支持命令和图形化管理,对于一般的数据库足以应付了,占用系统资源较少,速度较快,而且是开源的。
‘肆’ 如何进行数据库对比
哦。最简单的办法是把数据库(应该是表吧),变成文本,然后找个版本比较工具,比如Visual Strudio里带的,或者是winmerge,将两个数据表合并,合并完了后,再重新导进数据库。这个方法最好。不需要编程。
如果你通过编程的方式做,那更简单了。先一个临时表,把另一个库里的表存进来,然后用一个SELECT就搞定。
‘伍’ 几种数据库软件的比较
四大主流数据库比较
一、开放性
1. SQL Server
只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据库。
2. Oracle
能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。
3. Sybase ASE
能在所有主流平台上运行(包括 windows)。 但由于早期Sybase与OS集成度不高,因此VERSION11.9.2以下版本需要较多OS和DB级补丁。在多平台的混合环境中,会有一定问题。
4. DB2
能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%。
二、可伸缩性,并行性
1. SQL server
并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。
2. Oracle
并行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果windowsNT不能满足需要,用户可以把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。
3. Sybase ASE
虽然有DB SWITCH来支持其并行服务器,但DB SWITCH在技术层面还未成熟,且只支持版本12.5以上的ASE SERVER。DB SWITCH技术需要一台服务器充当SWITCH,从而在硬件上带来一些麻烦。
4. DB2
具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点安全性。
三、安全认证
1. SQL server
没有获得任何安全证书。
2. Oracle Server
获得最高认证级别的ISO标准认证。
3. Sybase ASE
获得最高认证级别的ISO标准认证。
4. DB2
获得最高认证级别的ISO标准认证。
四、性能
1. SQL Server
多用户时性能不佳
2. Oracle
性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。
3. Sybase ASE
性能接近于SQL Server,但在UNIX平台下的并发性要优与 SQL Server。
4. DB2
性能较高适用于数据仓库和在线事物处理。
五、客户端支持及应用模式
1. SQL Server
C/S结构,只支持windows客户,可以用ADO、DAO、OLEDB、ODBC连接。
2. Oracle
多层次网络计算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接。
3. Sybase ASE
C/S结构,可以用ODBC、Jconnect、Ct-library等网络客户连接。
4. DB2
跨平台,多层结构,支持ODBC、JDBC等客户。
六、操作简便
1. SQL Server
操作简单,但只有图形界面。
2. Oracle
较复杂,同时提供GUI和命令行,在windowsNT和unix下操作相同。
3. Sybase ASE
较复杂,同时提供GUI和命令行。但GUI较差,常常无法及时状态,建议使用命令行。
4. DB2
操作简单,同时提供GUI和命令行,在windowsNT和unix下操作相同。
七、使用风险
1. SQL server
完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容。
2. Oracle
长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。
3. Sybase ASE
向下兼容, 但是ct-library 程序不益移植。
4. DB2
在巨型企业得到广泛的应用,向下兼容性好。风险小
‘陆’ 如何比较两个数据库的差异
比较数据库可以通过以下方式:
比较的数据库分别称为“源”和“目标”。说明:数据库项目不包含任何数据。因此,在数据比较中数据库项目不能作为源或目标。
比较数据时,会生成数据操作语言 (DML) 脚本,使用该脚本可以通过更新目标数据库中的某些或全部数据来同步不同的数据库。完成数据比较后,结果会出现在 Visual Studio 的“数据比较”窗口中。有关更多信息,请参见比较数据库数据概述。说明:还可以比较两个数据库的架构或同一数据库的两个版本的架构。
比较两个数据库的架构。比较数据库数据比较两个数据库的数据在“数据”菜单上指向“数据比较”,然后单击“新建数据比较”。将出现“数据比较”向导。而且,会打开“数据比较”窗口,并且 Visual Studio 会自动为其指定一个名称,如 DataCompare1。在“数据比较”向导中,确定源数据库和目标数据库。如果“源数据库”列表或“目标数据库”列表为空,请单击“新建连接”。在“连接属性”对话框中,确定数据库所驻留的服务器以及连接数据库时将要使用的身份验证类型。然后,单击“确定”关闭“连接属性”对话框并返回到“数据比较”向导。在“数据比较”向导的第一页上,验证每个数据库的信息均是正确的,指定要在结果中包括的记录,然后单击“下一页”。“数据比较”向导的第二页将出现并显示数据库中表和视图的层次结构列表。说明:表和视图必须满足两个条件才会出现在列表中。第一个条件是,源数据库对象和目标数据库对象的架构必须匹配。第二个条件是,该列表中仅显示具有主键或唯一键的表和视图。
还可以更新目标数据库中的部分或全部数据,以与源数据库中的数据匹配。有关更多信息,请参见如何:查看数据差异和如何:同步数据库数据。
‘柒’ 如何比较两个数据库的差异
构建两个临时表,将两个数据库结构信息导入。
create Table #t1
(
ID Int Identity(1,1) Not Null Primary Key,
tablename nvarchar(50) NULL,
columnName nvarchar(50) NULL,
columnIndex int null,
columnType nvarchar(50) NULL
)
use 数据库1
insert into #t1
create Table #t2
(
ID Int Identity(1,1) Not Null Primary Key,
tablename nvarchar(50) NULL,
columnName nvarchar(50) NULL,
columnIndex int null,
columnType nvarchar(50) NULL
)
//开始比较
use 数据库2
insert into #t2
SELECT
SO.name as '表名',
SC.name as '表列名',
SC.colid as '索引',
ST.name as '类型'
FROM
sysobjects SO, -- 对象表
syscolumns SC, -- 列名表
systypes ST -- 数据类型表
WHERE
SO.id = SC.id
AND SO.xtype = 'U' -- 类型U表示表,V表示视图
AND SO.status >= 0 --加一个条件:SO.status >= 0,否则会将系统的临时表显示出来
AND SC.xtype = ST.xusertype
ORDER BY
SO.name, SC.colorder
go
//查询出 在t1 里有, t2 里没有的字段,查询列出来。
select * from
(
select tablename,columnName,columnType from #t1 where tablename like '%EMS_%'
EXCEPT
select tablename,columnName,columnType from #t2 where tablename like '%EMS_%'
) as c
order by tablename
比较两个数据库中表和字段的差异
-- 比较两个数据库中表的差异
-- u表,p存储过程,v视图
-- INTFSIMSNEW新库,INTFSIMS旧库
SELECT NTABLE = A.NAME, OTABLE = B.NAME
FROM INTFSIMSNEW..SYSOBJECTS A
LEFT JOIN INTFSIMS..SYSOBJECTS B
ON A.NAME = B.NAME
WHERE ISNULL(B.NAME, '') = ''
AND A.XTYPE = 'U'
UNION ALL
SELECT NTABLE = B.NAME, OTABLE = A.NAME
FROM INTFSIMS..SYSOBJECTS A
LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
ON A.NAME = B.NAME
WHERE ISNULL(B.NAME, '') = ''
AND A.XTYPE = 'U'
ORDER BY 1, 2
-- 比较两个数据库中每个表字段的差异
SELECT
表名A = CASE WHEN ISNULL(A.TABLENAME, '') <> '' THEN A.TABLENAME ELSE B.TABLENAME END,
字段名A = A.FIELDNAME,
字段名B = B.FIELDNAME,
顺序= A.FIELDSNO,
说明= CASE WHEN A.FIELDTYPE <> B.FIELDTYPE THEN '类型: ' + A.FIELDTYPE + '-->' + B.FIELDTYPE
WHEN A.FIELDSNO <> B.FIELDSNO THEN '顺序: ' + str(A.FIELDSNO) + '-->' + str(B.FIELDSNO)
WHEN A.LENGTH <> B.LENGTH THEN '长度: ' + str(A.LENGTH) + '-->' + str(B.LENGTH)
WHEN A.LENSEC <> B.LENSEC THEN '小数位: ' + str(A.LENSEC) + '-->' + str(B.LENSEC)
WHEN A.ALLOWNULL <> B.ALLOWNULL THEN '允许空值: ' + str(A.ALLOWNULL) + '-->' + str(B.ALLOWNULL)
END
FROM (SELECT
TABLENAME = B.NAME,
FIELDNAME = A.NAME,
FIELDSNO = A.COLID,
FIELDTYPE = C.NAME,
LENGTH = A.LENGTH,
LENSEC = A.XSCALE,
ALLOWNULL = A.ISNULLABLE
FROM INTFSIMSNEW..SYSCOLUMNS A
LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
ON A.ID = B.ID
LEFT JOIN INTFSIMSNEW..SYSTYPES C
ON A.XUSERTYPE = C.XUSERTYPE
WHERE B.XTYPE = 'U') A
FULL JOIN (SELECT
TABLENAME = B.NAME,
FIELDNAME = A.NAME,
FIELDSNO = A.COLID,
FIELDTYPE = C.NAME,
LENGTH = A.LENGTH,
LENSEC = A.XSCALE,
ALLOWNULL = A.ISNULLABLE
FROM INTFSIMS..SYSCOLUMNS A
LEFT JOIN INTFSIMS..SYSOBJECTS B
ON A.ID = B.ID
LEFT JOIN INTFSIMS..SYSTYPES C
ON A.XUSERTYPE = C.XUSERTYPE
WHERE B.XTYPE = 'U') B
ON A.TABLENAME = B.TABLENAME
AND A.FIELDNAME = B.FIELDNAME
WHERE ISNULL(A.TABLENAME, '') = ''
OR ISNULL(B.TABLENAME, '') = ''
OR A.FIELDTYPE <> B.FIELDTYPE
OR A.FIELDSNO <> B.FIELDSNO
OR A.LENGTH <> B.LENGTH
OR A.LENSEC <> B.LENSEC
OR A.ALLOWNULL <> B.ALLOWNULL
ORDER by 1, 4
‘捌’ 几种轻量级的数据库对比
对PHP程序员来说,SQLite可以快速的搭建数据库开发环境,提供轻松、自容器、无配置、无独立服务的数据库环境,所有数据保存在一个文件里。当使用MySQL作为最终生产平台时,SQLite是不可替代的开发环境解决方案。但真的没有其他兼容性更好的选择了吗?好吧,仅举几个原因:MySQL的兼容性和支持哈希索引,还不止这些!
当我们寻找SQLite的替代方案时,有两个可选,分别是H2和MySQLEmbeded版本。我关注的是可像SQLite一样方便使用,但又必须兼容MySQL。
下面我们对三个数据库进行简单的比较:
看似H2管理最简单,因此我在PHP下体验了H2后发现的一些限制:Quercus的MySQL驱动无法和H2的MySQL兼容模式良好的工作,我必须使用Quercus的PDO驱动来替代。
MySQLEmbedded则是100%兼容MySQL,我还没有开始测试。但也有一些不确定的问题,我不清楚是否可以分发包含MySQLEmbedded的应用程序.
‘玖’ 如何:比较两个数据库的数据
比较的数据库分别称为“源”和“目标”。说明:数据库项目不包含任何数据。因此,在数据比较中数据库项目不能作为源或目标。比较数据时,会生成数据操作语言 (DML) 脚本,使用该脚本可以通过更新目标数据库中的某些或全部数据来同步不同的数据库。完成数据比较后,结果会出现在 Visual Studio 的“数据比较”窗口中。有关更多信息,请参见比较数据库数据概述。说明:还可以比较两个数据库的架构或同一数据库的两个版本的架构。有关更多信息,请参见如何:比较两个数据库的架构。比较数据库数据比较两个数据库的数据在“数据”菜单上指向“数据比较”,然后单击“新建数据比较”。将出现“数据比较”向导。而且,会打开“数据比较”窗口,并且 Visual Studio 会自动为其指定一个名称,如 DataCompare1。在“数据比较”向导中,确定源数据库和目标数据库。如果“源数据库”列表或“目标数据库”列表为空,请单击“新建连接”。在“连接属性”对话框中,确定数据库所驻留的服务器以及连接数据库时将要使用的身份验证类型。然后,单击“确定”关闭“连接属性”对话框并返回到“数据比较”向导。在“数据比较”向导的第一页上,验证每个数据库的信息均是正确的,指定要在结果中包括的记录,然后单击“下一页”。“数据比较”向导的第二页将出现并显示数据库中表和视图的层次结构列表。说明:表和视图必须满足两个条件才会出现在列表中。第一个条件是,源数据库对象和目标数据库对象的架构必须匹配。第二个条件是,该列表中仅显示具有主键或唯一键的表和视图。如果没有同时满足这两个条件的表或视图,则该列表将为空。选中要比较的表和视图所对应的复选框。或者可以展开数据库对象的节点,然后选中要比较的对象中的列所对应的复选框。说明:要比较的每个表或视图都必须定义匹配的主键、匹配的索引或唯一的键。否则,会从将比较的表的列表中将该表移除。对于一些对象而言,可以使用“比较键”列指定要作为数据比较依据的键。例如,可以指定使数据比较依据主键列还是依据其他(唯一可标识)键列。单击“完成”。比较开始。说明:通过打开“数据”菜单,单击“数据比较”,再单击“停止数据比较”,可以停止正在进行的数据比较操作。完成比较后,可以查看两个数据库之间的数据差异。还可以更新目标数据库中的部分或全部数据,以与源数据库中的数据匹配。有关更多信息,请参见如何:查看数据差异和如何:同步数据库数据。