Oracle与SQL SERVER概念--d_第1页
Oracle与SQL SERVER概念--d_第2页
Oracle与SQL SERVER概念--d_第3页
Oracle与SQL SERVER概念--d_第4页
Oracle与SQL SERVER概念--d_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle 与SQL SERVER概念 - ·Oracle的服务和数据库 相当于 MS SQL的数据库服务; ·Oracle的服务= 后台进程+相关内存 ·数据库= 数据文件的集合 Oracle的服务完全可以与数据库文件脱离开来;Oracle中的Schema与MS SQL中的数据库。 Schema“方案”是一个用户所拥有所有对象的集合。 “对象”包括表、视图、实例化视图、序列、过程、函数、程序包、同义词。 Oracle类似于MSSQL的数据库大致过程如下: ·建立数据库表空间(相当于MSSQL的数据库的数据文件) ·建立临时表空间(相单于MS

2、SQL的数据库的事务日志文件) ·建立用户,它的缺省空间和临时表空间是刚建立的两个表空间 ·给用户授权,最起码得角色权限是Connect的角色 ·以该用户登陆,创建自己的表、视图、实例化视图、序列、过程、函数、程序包、同义词等。 关于Oracle Manager Server与MS SQL的Enterprise manager - DBA Studio工具提供了与MS SQL的Enterprise manager同样的功用,但应该说两者有很大的区别。 对于一般是用来说,DBA Studio工具已经足够了。但这里有必要对Oracle Manager Server解释

3、一下: 它是Oracle管理分布式数据库的服务,注意她是服务。 它缺省并不安装 它需要有自己管理所需要的资料库。在某个数据库中需要建立相应的用户 它的登陆需要身份验证,注意这里的身份验证,与管理所需要的资料库的用户不是一个概念,也不是数据库中的SYS,system; 它的默认用户是oem_temp sysman > 使用她,在管理端要启动Manager Server服务和智能代理服务(OracleAgent),被管理的数据库服务器要启动智能代理服务(oracleagent). 关于Oracle的SYS,system的用户与MSSQL的Master比较 - MSSQL的Master数据库储

4、存了当前数据库服务的一些配置信息,如数据库设备、字符集、数据文件、登陆帐号、拥有的数据库、整个服务参数配置等信息。 Oracle的sys存储了Oracle服务或者实例的信息及所有用户的数据字典信息。 Oracle的system用户拥有数据字典是视图信息,有了这些视图,我们查询数据库的信息就特别方便。缺省情况下,system用户拥有DBA系统角色权限, 而sys不仅拥有DBA的权限还拥有sysdba的权限。 DBASYSDBA系统角色的区别: 首先说明一下oracle服务的创建过程:创建实例、启动实例、创建数据库(SYSTEM表空间是必需的) 其次启动过程:实例启动、装载数据库、打开数据库 Or

5、acle中新的数据库对象:实例化视图、快照、序列、程序包、同义词、抽象的数据类型 - ·实例化视图又称显形图:实例化说明它有自己的存储空间;视图:说明它的数据源于其他表数据。 ·实例化视图中的数据,设置为隔一段时间更新数据,更新的模式可以定义为完全更新和增量更新。 ·快照基本上同实例化视图,只不过数据来源不同,快照数据来源于远程数据库,而实例化视图来源于本地数据表 ·序列,相当于MSSQL中的identify列,它是一个数字顺序列表 ·程序包:它是过程、函数、全局变量的集合;它封装了私有变量、私有过程和私有函数。如:DBMS_OUT包 

6、3;同义词:是对数据库中的对象的别名,同义词可以是全局的也可以是私有的(属于某个用户的)如:tab,col等 ·抽象的数据类型:类似于C中的结构体或Pascal记录类型。 Oracle数据库连接和 Mssql远程连接 - 两者都是为了实现分布式数据库的操作,两者都能实现分布式事务 Oracle回滚断和MSSQL的数据库事物日志文件 - 回滚段提供了事务回滚需要使用的数据变化以前的映象,这些映象是按条目储存的,如果这些条目过少,一个事务等待另一个事务的几率 增大,就会影响数据库的性能。缺省安装时,提供一个系统回滚段它在system表空间。 为了提高性能,system表空间不应储存有任何

7、数据字典信息以外的信息。 MSSQL数据库事务日志文件功能类同于回滚段,只不过它是同特定的数据库密切相关的。 关于数据表的管理 - 超大型数据表的管理: oracle和MsSQL都提供了一种“把数据文件及其索引存放在一个特定的数据文件或表空间里”方法 Oracle将表及索引分区储存,即按字段值的范围进行分区存储。 ·Oracle索引组织表和Sqlserver簇索引表 :两者的数据存放顺序都是按照索引值的顺序存放的 ·无事务回滚概念的表,对这种表的操作不存在事务的概念;ORacle提供了建表参数nologging,使对该表的操作不参与事务的回滚。 ·索引:oracl

8、e提供了多种MSSQL没有的索引类型,如:位图索引等 外连接 =- ·MSSQL支持两种形式表之间连接 (1)从SYSBASE继承来的形式: 1)字段1*=字段2(左连接) 2)字段1=*字段2(右连接) 3)没有这种形式的全外连接语法 (2)标准的外连接语法: 1)leftouter join on 逻辑表达式 2)rightouter join on 逻辑表达式 3)fullouter jion (全外连接) on 逻辑表达式 ·Oracle不支持标准的外连接语法,也没有全外连接(这是他的缺陷)。 1)字段1=字段2(+)(左连接) 2)字段1(+)=字段2(右连接)

9、·使用外连接语句的用处 (1)不想因为表连接而使主表数据行丢失 (2)查找某条记录在表A存在,而在B表不存在,按常规做法用not in(select.查询语句)语法。 使用not in 最大的缺点就是速度慢,原因是每行都去做select查询语句;而使用如下语句则会更好: select tu_company.* from TU_company left join TU_Comp_agent on TU_company.id=tu_comp_pCode where TU_comp_agent.id is null; 触发器 = ·MSSQL仅有表的触发器,而且触发时机不够丰富,

10、如插入触发器不区分单条插入还是多条插入;也不区分插入前触发还是插入后触发。碰到 多条数据的插入,需要使用游标处理每条插入的数据。 ·Oracle提供的触发器不仅有基于表的触发器,而且还有其它类型的,例如数据库计的触发器:数据库的启动、数据库关闭。对于表级的触发器 区分单条插入还是多条插入,也区分插入前触发还是插入后触发 表数据复制 - ·库内数据复制 ·MSSQL Insert into 复制表名称 select 语句(复制表已经存在) select 字段列表 into 复制表名 from 表(复制表不存在) ·Oracle Insert into 复制

11、表名称 select 语句(复制表已经存在) create table 复制表名称 as select 语句(复制表不存在) ·文本文件转入,转出的批量处理 ·MSSQL BCP命令行程序 ·Oracle SQLLDR命令行程序 多表更新、删除 - 一条更新语句是不能更新多张表的,除非使用触发器隐含更新,这里的意思是说:根据其他表数据更新你要更新的表。 ·MSSQL update a set 字段1=B表子段表达式,字段2=B表子段表达式,。from B where 逻辑表达式 ·ORACLE update a set 字段1=(Select子

12、段表达式 from B where .),字段2=(Select子段表达式 from B where .),.from B where 逻辑表达式 就以上问题来看假如A需要多个子段更新,MSSQL更简练! 关于存储过程或函数中使用的临时表 - 两者都有这个功能。临时表最主要的好处是,操作不留任何痕迹、不产生日志,所以速度快。 ·MSSQL Create table #表名(.),或者select 字段表达式列表 INTo #表名称 FRom 表名称前加#,这些临时表都是旨在一个数据库连接会话期间有效。 ·ORACLE create global temporary tabl

13、e,加上global就是全局的临时表(所有数据库连接会话都是可见的),否则为私有(在一个数据库连接会话期间有效)。 动态执行SQL语句 - ·在存储过程中的参数中传递一个表名或者在过程体力动态生成一个SQL语句。 MSSQL: declare count int declare Sql nvarchar(200) set sql=N'select count(*) from sysobjects' exec sp_executesql sql,N'i int output',count output ORACLE: (1)程序包DBMS_SQL,执行一

14、个语句的过程: 打开游标(OPen_cursor,对于非查询语句,无此过程) 分析语句(parse) 绑定变量(bind_variable) 执行语句(execute) 关闭游标(close_cursor,对于排序查询语句,无此过程) (2)Execute immediate ls_SQL 数据库备份和恢复 - MSSQL: (1)数据库导入导出DTS工具,如果数据源和目的都是MSSQL则可以完全复制数据库的结构(表、视图、索引、触发器、规则、默认、存储过程、自定义函数、表数据等) (2)数据库备份和还原命令: BackUp database Restore database 导出的数据文件还可以压缩,数据库备份和还原方式可以是增量和完全的。 (3)数据库的附加attach 只要数据库的原始数据和日志文件没有破坏,就可以使用命令:SP_ADDACH_DB.这种情况有时候回出现问题:比方说你见了登陆帐号, 不是使用缺省的登陆帐号SA,由于登陆帐号的信息存放在master数据库中,所以使用原

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论