SQL 跨库查询

DECLARE @ServerName nvarchar(50) --数据库服务器名称(数据库服务器IP)
DECLARE @DataBaseName nvarchar(50) --数据库名称
DECLARE @UserName nvarchar(50)   --登录数据库用户ID
DECLARE @UserPwd nvarchar(50)   --登录数据库密码
DECLARE @TbName nvarchar(50)   --表名字
DECLARE @OpenDBTemps nvarchar(200)
Declare @cnn nvarchar(500)
set @OpenDBTemps='aaa'
set @ServerName='192.168.1.12'
set @DataBaseName='FDAYSUCenter'
set @UserName='sa'
set @UserPwd='FDAYS8800000'
set @TbName='UC_Comp'
set @cnn='select top 1 * From opendataSource(''sqloledb'',''data source='+@ServerName+';user id='+@UserName+';Password='+@UserPwd+''').'+@DataBaseName+'.dbo.'+@TbName+''
   print @cnn
   exec(@cnn)

### SQL 如何实现数据库查询 数据库查询的实现方式取决于所使用的数据库管理系统(DBMS)。以下是几种常见数据库系统中实现数据库查询的方法: #### 1. SQL Server 中的数据库查询SQL Server 中,可以通过 **链接服务器(Linked Server)** 实现数据库查询。通过系统存储过程 `sp_addlinkedserver` 和 `sp_addlinkedsrvlogin` 配置远程服务器及其登录信息后,即可在本地数据库中直接引用远程服务器上的表。例如: ```sql -- 添加链接服务器 EXEC sp_addlinkedserver @server = 'sqlLink', @srvproduct = '', @provider = 'SQLOLEDB', @datasrc = '远程服务器名或IP地址'; -- 添加链接服务器的登录信息 EXEC sp_addlinkedsrvlogin @rmtsrvname = 'sqlLink', @useself = 'false', @locallogin = NULL, @rmtuser = '用户名', @rmtpassword = '密码'; ``` 配置完成后,可以使用如下 SQL 语句进行数据库查询: ```sql SELECT n.info_id, n.title, t.txt FROM news n LEFT JOIN hqtcnewstype.dbo.newstype t ON t.info_id = n.sys ORDER BY n.uptime DESC; ``` 该查询涉及了本地数据库 `news` 和远程数据库 `hqtcnewstype` 中的表,实现了数据库的连接查询[^1]。 #### 2. PostgreSQL 中的数据库查询 PostgreSQL 提供了多种实现数据库查询的方式,其中最常用的是 **dblink** 扩展和 **外部表**(Foreign Table)机制。`dblink` 允许在当前数据库中执行远程数据库SQL 查询,并获取结果集。使用前需先启用扩展: ```sql CREATE EXTENSION dblink; ``` 示例查询如下: ```sql SELECT * FROM dblink('dbname=remote_db user=remote_user password=remote_pass host=remote_host', 'SELECT id, name FROM remote_table') AS t(id INT, name TEXT); ``` 此外,还可以使用 **外部数据包装器(Foreign Data Wrapper, FDW)** 创建外部表,使得远程表像本地表一样被访问。例如使用 `postgres_fdw`: ```sql CREATE EXTENSION postgres_fdw; CREATE SERVER remote_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'remote_host', dbname 'remote_db', port '5432'); CREATE USER MAPPING FOR local_user SERVER remote_server OPTIONS (user 'remote_user', password 'remote_pass'); CREATE FOREIGN TABLE remote_table ( id INT, name TEXT ) SERVER remote_server OPTIONS (schema_name 'public', table_name 'remote_table'); ``` 之后即可通过标准 SQL 查询远程表: ```sql SELECT * FROM remote_table; ``` 使用 `dblink` 或外部表的方式可以灵活实现数据库的关联查询,但需注意权限、性能和数据一致性问题[^2]。 #### 3. 异构数据库查询 对于不同类型的数据库系统(如 MySQLSQL Server 之间),可以使用 **数据管理服务(DMS)** 或 **通用查询工具(如 QuickSQL)**。这些工具支持异构数据库之间的统一查询,用户只需编写标准 SQL 即可完成数据库操作,而无需手动处理底层连接和数据转换[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值