sql怎样跨数据库查询oracle

sql怎样跨数据库查询oracle,第1张

假定您现在拥有一个以MicrosoftNET为架构的网络订购系统,但是品管维护系统却仍然使用一套旧式的Oracle数据应用程序。当您的顾客在产品保固期间下了产品更换之类的订单,则该笔订单将不收取任何费用。此时您需要从Oracle数据库得到实时的查询结果。借着建立连结服务器的方式(linkedServer),您将可以从SQLServer实时查询出位于Oracle数据库的顾客资料,找出谁是您既有的客户。

当您的资料分散在不同的SQLServer数据库时,藉由连结服务器可让您执行跨服务器之分布式查询。当所有的数据库服务器都是SQLServer,则连结服务器的设定十分容易,而且在SQLServer线上手册中就涵盖了您所需要了解的所有事项。然而,当部分资料是放在Oracle数据库服务器的时候,这就可能带给您许多挑战。举例来说,光是设定连结服务器就不是一件容易的事。您必须了解到:即是您要在SQLServer的EnterpriseManager设定一个Oracle连结服务器,这台SQLServer对Oracle来说就是一个客户端。所以您必须在SQLServer所在的服务器成功地安装并组态Oracle之客户端软件。因为Oracle提供的产品只支持Oracle8以后的数据库,所以我假设您正在使用的都是Oracle8以后的数据库。在OracleNet8函式库则提供了SQLServer所需要的客户端软件。

设定连接服务器时是利用Microsoft所提供的OLEDB ProviderforOracle,使用的Oracle网络函式库为SQLNet23304或是以后的版本,不过这是Oracle73数据库所提供的。换句话说,要设定Oracle数据库为SQLServer的连接服务器时,Oracle数据库只要是7334以后的版本,并搭配适当的SQLNet或是Net8函式库即可。

在Oracle数据库中,一个schema即代表着SQLServer专家们所熟知的单一数据库(译者注2)。连接至Oracle数据库时,您必须提供schema名称、密码以及主机联机字符串(hoststring)。每一个特定的Oracle帐户都拥有一个Oracleschema,而且只能有一个schema。所以schema名称其实就等于该schema拥有者的帐户名称。您可以查询Oracle的资料字典(Datadictionary)以得到更多有关schema的内容。

至于Oracle联机字符串又可称为服务名称(servicename)或是系统识别资料(SystenIdentifier,SID)。我们所谓的SQLServer数据库个体(instance)在Oracle则称为数据库(database)。所以安装OracleServer时,安装程序OracleUniversalInstaller(为一个图形接口之安装程序,与SQLServer的Setup程序类似)将会询问您SID名称为何,以作为Oracle数据库之名称。

这个部分原作者所提到schema的解释有点问题。Oracleschema可视为同一个使用者所拥有的所有数据库对象(schemaobjects)之集合。举例来说,使用者scott所建立的EMPtable其完整名称为SCOTTEMP,而SCOTT就是EMP的schema名称。所以schemaname其实就是一个Oracle数据库之使用者帐号。但是绝对不能拿来跟数据库相提并论!因为SQLServer的数据库架构包含了datafiles与logfiles,但是Oracle的schemaobjects只存在于tablespace中。为了避免部分读者产生混淆,特此说明。

可以参考下面的方法:

1、select from 表1,表2,表3 where 表1字段=表2字段 and 表1字段=表3字段

2、select from 表1 join 表2 on 表1字段=表2字段 and join 表3 on 表1字段=表3字段

如果没有AND,前面就需要加括号了。

扩展资料:

参考语句

创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],)

根据已有的表创建新表: 

1、create table tab_new like tab_old (使用旧表创建新表)

2、create table tab_new as select col1,col2… from tab_old definition only

删除新表

drop table tabname 

参考资料来源:百度百科-SQL数据库

Navicat是一个强大的MySQL数据库管理和开发工具。Navicat为专业开发者提供了一套强大的足够尖端的工具,但它对于新用户仍然是易于学习。Navicat,使用了极好的图形用户界面(GUI),可以让你用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息。用户可完全控制MySQL数据库和显示不同的管理资料,包括一个多功能的图形化管理用户和访问权限的管理工具,方便将数据从一个数据库移转到另一个数据库中(LocaltoRemote、RemotetoRemote、RemotetoLocal),进行档案备份。Navicat支援Unicode,以及本地或遥距MySQL伺服器多连线,用户可浏览数据库、建立和删除数据库、编辑数据、建立或执行SQLqueries、管理用户权限(安全设定)、将数据库备份/复原、汇入/汇出数据(支援CSV,TXT,DBF和XML档案种类)等。新版与任何MySQL50x伺服器版本兼容,支援Triggers,以及BINARYVARBINARY/BIT数据种类等的风范。

Navicat8027主要功能

-表单检视(新增)

-虚拟群组(新增)

-自动完码(新增)

-排程工作结果自动传送电子邮件(新增)

-查询、检视及事件自动完码(新增)

-报告可汇出成各种格式,PDF,Excel,HTML等(新增)

-超时自动重新连接到SQL服务器

-数据和结构同步

-导出注册文件以传送到另外的计算机

-新查询创建器--为不同的数据库创建查询

-查询参数

-SQL控制台

-建立查看

-SSH密钥

-支持所有MySQL版本

-SSH及>

-汇入/汇出数据

-报表设计及建立

NavicatforMySQL

——下载次数最多的MySQL数据库管理和开发工具

>

多种格式的导入导出能力,使维护数据的过程很容易。

批量的工作调度处理,有力减轻了数据库管理员的负担。

快速地实现广域网远程连接,更加安全简便。

智能地构建复杂的SQL语句,提高开发效率。

产品概述

NavicatMySQL是一个强大的MySQL数据库服务器管理和开发工具。它可以与任何321或以上版本的MySQL一起工作,并支持大部分的MySQL最新功能,包括触发器、存储过程、函数、事件、视图、管理用户,等等。它不仅对专业开发人员来说是非常尖端的技术,而且对于新手来说也易学易用。其精心设计的图形用户界面(GUI),NavicatMySQL可以让你用一种安全简便的方式快速并容易地创建,组织,访问和共享信息。

NavicatMySQL在三种平台上是可用的——微软Windows、MacOSX和Linux *** 作系统。它可以使用户连接到本地/远程服务器,提供了几种实用工具,例如数据结构同步、导入/导出、备份和报告,使维护数据的过程很容易。

自从2001年初以来,Navicat在全世界范围内已被下载了数百万次;Navicat是公认最受欢迎的MySQL前端图形用户界面,而且它对于本地或远程的MySQL管理和开发,在三种 *** 作系统平台上——Windows、MacOSX和Linux都是可用的。在过去的5年中,Navicat已在最好的服务器管理工具类别的几个奖项中被提名,并且被许多托管公司选为一种标准的托管工具,例如Rackspace公司,是最成功的管理托管公司之一。

在世界各地的全球企业,政府机构和教育机构,Navicat是众所周知的,可以信任并且每天都要使用的。通常世界500强的公司中100多个都使用Navicat。

详细资料请参考:>

当我打开一个数据连接,对一个access数据库进行查询,另一个人要对该数据库进行写 *** 作(保存数据),就会发生数据无法保存的情况,而且我打开的数据连接也不能关闭(本来程序是会自动检测的,如果没有关闭就立即关闭)

这个access数据库是属于一个应用程序的,数据都是自己输入的,为了省力,我想在我的程序中调用数据库中的数据(这样可以免去重复输入)。应用程序用什么语言编写我不是很清楚,我的程序是用vbnet编写的网页,只需要读取access中的数据。连接字符串如下:

strConn = "Provider=MicrosoftJetOLEDB40;Data Source=\\YR002\Data\DataMDB;"

顺便问一下,要访问另一台电脑中的access数据库,是否一定要把数据库所在目录设置为共享目录?

我得程序调用access数据库方法:

strConn = "Provider=MicrosoftJetOLEDB40;Data Source=\\YR002\CusData\CustomData2004MDB;"

If cnConnState = ConnectionStateClosed Then

cnConnOpen()

End If

dsExecute = New DataSet

Dim sdaDataAdapter As New OleDbDataAdapter(strSQL, cnConn)

sdaDataAdapterFill(dsExecute, "data")

sdaDataAdapterDispose()

cnConnClose()

Return dsExecute

1 建议不要把所有的逻辑都放到数据库端,包含词汇和不包含词汇都可以先进行信息处理,

如转换成 ‘词汇1’,‘词汇2’,'词汇3','词汇4' 这样的格式

然后用 sql 的 in 和 not in 子句

select from t where keyword in ('a','b','c','d') and keyword not in ('e','r','f','g');

2 不处理的话也可以实现,参照以下sql 语句:

1 select from t

2 where

3 (&k1 is null or (keyword =&k1))

4 and (&k2 is null or (keyword =&k2))

说明:

第2行:如果输入变量 k1 为空,则条件 keyword =&k1 就不起作用;反之 k1不为空 keyword =&k1 条件就有效

建议采用第一种方式处理

以上就是关于sql怎样跨数据库查询oracle全部的内容,包括:sql怎样跨数据库查询oracle、SQL数据库的表。怎么同时连接3个表查询。、数据库查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9600741.html

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

发表评论

登录后才能评论

评论列表(0条)

保存