oracle与sql server的区别,SQL Server 和 Oracle 以及 MySQL 有哪些区别
oracle与sql server的区别,SQL Server 和 Oracle 以及 MySQL 有哪些区别详细介绍
本文目录一览: SQL Server 和 Oracle 以及 MySQL 有哪些区别
1、生产产家不同。
SQL Server 是微软公司开发的; Oracle 是甲骨文公司开发的;MySQL 是瑞典MySQL AB 公司开发的。
2、适配的操作系统不同。
SQL Server 只能在win下安装; Oracle 设计初针对linux和unix,后来也出品了win版;MySQL 有win版也有linux版。
3、应用目标不同。
SQL Server 和 Oracle 主要用于网络版与大型数据库应用;SQL Server也有单机版用于小型或单机数据库应用;单机版使用Oracle的极少;MySQL主要用于单机版或小型数据库的应用。
4、功能方面的差别。
SQL Server 和 Oracle 功能强大而全面,MySQL与前两者有质的差距。
5、语法方面的差别。
三者都使用SQL语言进行数据库的操作与管理,80%甚至更多的常用SQL语句都是相同的,但还有不少的语句的写法或用法是不同的,特别是一些特色功能、偏门的功能调用。所以它们之间基本上无法兼容。
6、友好度方面。
对多数 数据库编程或维护人员来说,SQL Server是最友好的,Oracle是最难掌握最不友好的。但SQL Server只能在win中使用,不能用于linux与unix。
7、接口驱动不同。
一般数据系统是处于后台的,前台与用户的交互需要编程人员编写实用应用或网站。三者开发者不同,底层规范不同,所以厂家提供的接口软件是不同的,联接字串也是不同的。
SQL Server 和 Oracle 以及 MySQL 有哪些区别
不同点:
1、SQL Server 是微软的数据库产品;
2、 Oracle 和MySQL是甲骨文公司的数据库产品;
3、三者的SQL语法绝大部分都是相同的,少量不一样;
相同点:
1、都是关系型数据库产品;
2、现在都支持大数据了;
3、世界数据库使用排名Oracle 、SQL Server、MySQL依次排第一、第二、第三。
SQL Server 和 Oracle 以及 MySQL 有哪些区别
区别如下:
1、Oracle和SQL Server是商业收费的,而MySql是开源免费的;
2、Oracle和MySql是甲骨文的产品,SQL Server是微软的产品;
3、Oracle和IBM DB2都是超大型关系数据库,SQL Server是大型关系数据库,而MySql是中型关系数据库;
4、Oracle比SQL Server的安全性高,而SQL Server又比MySql的安全性高。
SQL Server 和 Oracle 以及 MySQL 有哪些区别
--平台性:
Oracle、MYSQL与DB2可在所有主流平台上运行;
SQL Server只能在Windows下运行;
--安全性:
Oracle的安全认证获得最高认证级别的ISO标准认证,而SQL Server并没有获得什么安全认证;
这方面证明了Oracle的安全性是高于SQL Server的;
--数据类型、函数、sql语句:
oracle中有复合数据类型,sql server中没有;
总之:
ORACLE 大型,完善,安全;
SQLSERVER 简单,界面友好,WINDOWS平台下的好选择 ,SqlServer后与SYBASE也比较接近的;
MYSQL 免费,功能不错,适合个人网站及一些小企业的网站应用;
SQL Server 与 Oracle 数据库两者一个最大的区别,就是其应用平台的差异。现在SQL Server数据库只能够部署在微软的操作系统上。而Oracle数据库其不但可以支持微软的操作系统,而且还可以支持开源的操作系统,如Linux等等。
体系机构不同,ORACLE是一个数据库多用户多个表空间,SQL是多个数据库。
oracle for windows和 oracle for linux区别还是很大的,很显然,一个是以线程为主的,一个是以进程为主的。
SQL server便宜,oracle贵。
oracle 国内销售作的火,大多数企业,事业使用
sqlserver 中小型数据库的首选
mysql 免费,配合php,perl 一般作网站的数据库
开放性:
SQL Server
只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据量的关键业务时.
Oracle
能在所有主流平台上运行(包括windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。
可伸缩性,并行性
SQL server
并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限。
Oracle
平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果windowsNT不能满足需要,用户可以把数据库移到UNIX中。
数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点或数据库节点
安全性
SQL server
没有获得任何安全证书。
Oracle
获得最高认证级别的ISO标准认证。
性能
SQL Server
多用户时性能不佳
Oracle
性能最高,保持windowsNT下的TPC-D和TPC-C的世界记录。
客户端支持及应用模式
SQL Server
C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接.
Oracle
多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接
操作简便
SQL Server
操作简单,但只有图形界面.
Oracle
较复杂, 同时提供GUI和命令行,在windowsNT和unix下操作相同
使用风险
SQL server
完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容早期产品。使用需要冒一定风险。
Oracle
长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。
SQL Server 和 Oracle 以及 MySQL 有哪些区别
SQL Server 和 Oracle 以及 MySQL 有哪些区别
1,这三个数据库不是同一个公司的产品;
2、其所对应的使用对象也不一样,oracle是主流的大型数据库,大多数电信项目都是使用的oracle,而sqlserver与mysql主要是个人以及小型公司使用的的数据库,但是sqlserver需要收费,mysql不用;
3、如果按功能上来说,oracle最为强大,oracle支持递归查询,二后两者不支持;
4、三个数据库中,只有sqlserver有完整的图形化操作界面,而oracle与mysql都要借助于其他的第三方数据库图形操作界面,比如oracle用的大多都是plsql;
oracle数据库和sql server的区别
ORACLE与SQL SERVER的区别 ORACLE的文件体系结构为:
数据文件 .DBF (真实数据)
日志文件 .RDO
控制文件 .CTL
参数文件 .ORA
SQL SERVER的文件体系结构为:
.MDF (数据字典)
.NDF (数据文件)
.LDF (日志文件)
ORACLE存储结构: 在ORACLE里有两个块参数PCTFREE(填充因子)和PCTUSED(复用因子),可控制块确定块本身何时有,何时没有足够的空间接受新信息(对块的存储情况的分析机制) 这样可降低数据行连接与行迁移的可能性。块的大小可设置(OLTP块和DSS块)
在ORACLE中,将连续的块组成区,可动态分配区(区的分配可以是等额的也可以是自增长的)可减少空间分配次数。
在ORACLEl里表可以分为多个段,段由多个区组成,每个段可指定分配在哪个表空间里(段的类型分为:数据段、索引段、回滚段、临时段、CASH段。ORACLE里还可对表进行分区,可按照用户定义的业务规则、条件或规范,物理的分开磁盘上的数据。
这样大大降低了磁盘争用的可能性。
ORACLE有七个基本表空间:
·SYSTEM表空间(存放数据字典和数据管理自身所需的信息)
·RBS回滚表空间
·TEMP临时表空间
·TOOLS交互式表空间
·USERS用户默认表空间
·INDX索引表空间
·DBSYS福数据表空间
不同的数据分别放在不同的表空间(数据字典与真实数据分开存放),在ORACLE里基表(存储系统参数信息)是加密存储,任何人都无法访问。只能通过用户可视视图查看。
SQL SERVER 存储结构
以页为最小分配单位,每个页为8K(不可控制,缺乏对页的存储情况的分析机制),
可将8个连续的页的组成一个‘扩展’,以进一步减少分配时所耗用的资源。(分配缺乏灵活性),在SQL SERVER里数据以表的方式存放,而表是存放在数据库里。
SQL SERVER有五个基本数据库:
·master(数据字典)
·mode(存放样版)
·tempdb(临时数据库)
·msdb(存放调度信息和日志信息)
·pubs(示例数据库)
真实数据与数据字典存放在一起。对系统参数信息无安全机制。
ORACLE登入管理:
·SYSTEM/MANAGER (初始帐户)
·SYS/CHANGE_ON_NSTALL
·INSTALL/ORACLE(安装帐户)
·SCOTT/TIGER(示例数据库,测试用)
在ORACLE里默认只有三个系统用户,ORACLE是通过用户登入。
SQL SERVER登入管理:
·SQL SERVER身份验证
·WINDOWS 身份验证
在SQL SERVER里是通过WINDOWS用户帐户或是用SQL SERVER身份验证连接数据库的。
SQL不是一种语言,而是对ORACLE数据库传输指令的一种方式。
SQL中NULL既不是字符也不是数字,它是缺省数据。ORACLE提供了NVL函数来解决。
ORACLE中的字符串连接为 string1‖string2 ,SQL中为string1+string2.
集合操作:在SQL中只有UNION(并操作),ORACLE中包含MINUS(差操作)、 INTERECT(交操作)、UNION(并操作)。
索引:
SQL的索引分为聚集索引和非聚集索引,还包括全文索引;
ORACLE的索引包括:B+树索引,Bitmap位图索引,函数索引,反序索引, 主键索引,散列索引,本地索引。
ORACLE的数据类型比较复杂,有基本数据类型,衍生型,列对象型,表对象型,结构体型;
SQL中的数据比较简单,只有一些简单的基本数据类型无法提供事务操作。
sql server 与oracle的区别在哪?各自有什么优点和缺点(相比之下)?
一、开放性
1. SQL Server
只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据库。
2. Oracle
能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。
二、可伸缩性,并行性
1. SQL server
并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。
2. Oracle
并行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果windowsNT不能满足需要,用户可以把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。
四、性能
1. SQL Server
多用户时性能不佳
2. Oracle
性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。
五、客户端支持及应用模式
1. SQL Server
C/S结构,只支持windows客户,可以用ADO、DAO、OLEDB、ODBC连接。
2. Oracle
多层次网络计算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接。
六、操作简便
1. SQL Server
操作简单,但只有图形界面。
2. Oracle
较复杂,同时提供GUI和命令行,在windowsNT和unix下操作相同。
七、使用风险
1. SQL server
完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容。
2. Oracle
长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。
最后价格上 ORACLE贵过SQLSRVER
mysql和sql server和oracle的区别
一、并发性
并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。
mysql:
mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。
虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。
oracle:
oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以oracle对并发性的支持要好很多。
二、一致性
oracle:
oracle支持serializable的隔离级别,可以实现最高级别的读一致性。每个session提交后其他session才能看到提交的更改。oracle通过在undo表空间中构造多版本数据块来实现读一致性,
每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块。
mysql:
mysql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。
session更新数据时,要加上排它锁,其他session无法访问数据。
三、事务
oracle很早就完全支持事务。
mysql在innodb存储引擎的行级锁的情况下才支持事务。
四、数据持久性
oracle
保证提交的数据均可恢复,因为oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,
如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。
mysql:
默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。
五、提交方式
oracle默认不自动提交,需要用户手动提交。
mysql默认是自动提交。
六、逻辑备份
oracle逻辑备份时不锁定数据,且备份的数据是一致的。
mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用。
七、热备份
oracle有成熟的热备工具rman,热备时,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。
mysql:
myisam的引擎,用mysql自带的mysqlhostcopy热备时,需要给表加读锁,影响dml操作。
innodb的引擎,它会备份innodb的表和索引,但是不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其他用户使用数据库。但此工具是收费的。
innobackup是结合ibbackup使用的一个脚本,他会协助对.frm文件的备份。
八、sql语句的扩展和灵活性
mysql对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。
oracle在这方面感觉更加稳重传统一些。
九、复制
oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。
mysql:复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。
十、性能诊断
oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等
mysql的诊断调优方法较少,主要有慢查询日志。
十一、权限与安全
mysql的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。
oracle的权限与安全概念比较传统,中规中矩。
十二、分区表和分区索引
oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。
mysql的分区表还不太成熟稳定。
十三、管理工具
oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。
mysql管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。
简单的说来:Oracle是企业所用的大型数据库,特点是:兼容性好、性能高、安全性高,相对的操作要繁琐一些(纯输入代码);sql server是中小型数据库,只能在Windows系统上运行(兼容性差),性能和安全性要低一些,可视化操作(操作简单);mysql是一个开源的数据库,属于轻型数据库。mysql由于开源和占用资源少,被开发者广泛应用。我自己写JavaWeb的时候也会用mysql。mysql正在被开发者们接受,也许某一天mysql会代替Oracle。
oracle与sql server在架构处理上有何区别
1.部分SQL语句差异
(1)SQL:select top 10 * from table
ORA: select * from table where rownum<11
(2)SQL:Select * from t1 join t2 on t1.c1=t2.c1
ORA: select * from t1,t2 where t1.c1=t2.c1
(3)select * from t1 left join t2 on t1.c1=t2.c1
ORA: select * from t1,t2 where t1.c1=t2.c1(+)
(4)SQL:select * from t1 right join t2 on t1.c1=t2.c1
ORA: select * from t1,t2 where t1.c1(+)=t2.c1
2. 其他技术差异
GPRS技术可以应用的领域有:
◆在oracle中,delete语句中的from从句中不能涉及到多个表,要基于多个表进行删除记录只有使用子查询。;
◆在oracle中,update语句不能基于多个表进行修改数据,要基于多个表进行修改数据只有使用子查询;
◆在oracle中,存储过程不能返回记录集,如果要存储过程返回记录集,可以创建视图,可以单独执行select语句 (注意:并不是说在存储过程中不能使用select语句,但select只能用于以下情况:insert into table select * from t1 /select col1 into a from table where ……(a为一变量));
◆在oracle中insert 的语法是:insert into table values() 或insert into table select * from t1;;
◆Oracle中的日期型常量必须用to_date()函数得到。;
◆Dual表是一个虚拟表,专门用于测试的目的用,注意dual表的用法:
在sql server中,如果我们项测试某个函数,例如:select convert(int,’13’) ,在 oracle 中这种表示方法是错误的,应表示为:select to_number(‘13’) from dual;;
◆得到相差的天数:两个日期相减,再用ceil或floor函数取整得到相差的月数:months_between()
◆数据类型的转换;
◆ORACLE中对象名不能超过30个字符。ORACLE中界限符是“”(对应SQLSERVER中的[ ])(我的建议是:最好不要是用界限符,能避免实用系统的保留字就尽量避免);
◆ORACLE中空字符串被看成null;
◆ORACLE中字符的比较是区分大小写的;
◆视图中如果用了order by ,并且order by 从句中的字段名都是别名,那么,在显示视图时必须显示出order by 子句中的所有字段,例如,有下面这样一个视图:
create view v
as
select name as c1,address from t1 order by c1
那么在select 该视图时
select c1,address from v 是正确的, select address from v是错误的;
◆关于临时表的问题
在sqlserver中 create table #table1 (c int);
在oracle 中解决办法是:
create global temporary table table1(c int) on commit preserve rows
这个table1在数据库中是永久存在的,所以不要是用drop命令,在你的程序中在对这个表进行任何操作之前,先执行truncate table table1,切忌不要用drop命令删除此表。;
◆http://technet.oracle.com/doc/server815.htm这个网站有许多在线教程,但一定要先注册;
3. 数据类型转换
SQL SERVER ORACLE
bigint NUMBER (19 ,0)
binary (50) RAW (50)
bit NUMBER (1, 0)
char (10) CHAR (10)
datetime DATE
decimal (18 , 0) NUMBER (18, 0)
float FLOAT
image BLOB
int NUMBER (10, 0)
money NUMBER (19 ,4)
nchar (10) CHAR (20)
ntext CLOB
numeric (18 , 0) NUMBER (18 ,0)
nvarchar (50) VARCHAR2 (100)
real FLOAT
smalldatetime DATE
smallint NUMBER (5, 0)
smallmoney NUMBER (10, 4)
sql_variant LONG RAW
text CLOB
timestamp RAW (8) NOT
tinyint NUMBER (3 ,0)
uniqueidentifier LONG RAW
varbinary (50) RAW (50)
varchar (50) VARCHAR2 (50)
分类: 数据库
oracle的架构图如下:
sql server中是用户架构分离:架构不再等效于数据库用户;现在,每个架构都是独立于创建它的数据库用户存在的不同命名空间。也就是说,架构只是对象的容器。任何用户都可以拥有架构,并且架构所有权可以转移。
架构的所有权和架构范围内的安全对象可以转移。有关详细信息,请参阅 ALTER AUTHORIZATION (Transact-SQL)。
对象可以在架构之间移动。有关详细信息,请参阅 ALTER SCHEMA (Transact-SQL)。
单个架构可以包含由多个数据库用户拥有的对象。
多个数据库用户可以共享单个默认架构。
与早期版本相比,对架构及架构中包含的安全对象的权限的管理更加精细。有关详细信息,请参阅 GRANT 架构权限 (Transact-SQL) 和 GRANT 对象权限 (Transact-SQL)。
架构可以由任何数据库主体拥有。这包括角色和应用程序角色。
可以删除数据库用户而不删除相应架构中的对象。
如果为 SQL Server 早期版本编写的代码假定架构等效于数据库用户,这些代码可能会返回错误的结果。
为 SQL Server 早期版本设计的目录视图可能会返回错误的结果。这包括 sysobjects。
在创建数据库对象时,如果您将某一有效的域主体(用户或组)指定为对象所有者,则该域主体将作为架构添加到数据库中。这个新架构将为该域主体所拥有。