如何在查询中缩短或别名数据库名称?
问题描述:
我在我的服务器中有十到二十个数据库。每当我需要查询我想把这样的事情如何在查询中缩短或别名数据库名称?
Select * from otp-devices.dbo.deviceid
select module from mr1ghp/security.dbo.alarmmodlink
我们的数据库名称很长。是否有可能缩短或别名数据库名称查询otp-devices
mr1ghp/security
答
你可以让一个别名与关键字AS这样的:
SELECT * FROM `otp-devices.dbo.deviceid ` AS otp
+0
对于一个查询,这是正确的。但我已经看到了从数据库级别本身做到的一种方法。也就是说,我们可以在我们的sql服务器的任何地方使用该名称作为数据库名称。 – coffemug
+0
@coffemug在SQL Server中没有类似的东西。除了可能的sqlcmd变量。 –
答
另一种可能性是使用视图来提供到其他数据库中表的链接。使用命名约定来确定视图链接到哪个数据库。这也有助于将代码与数据库名称的任何更改隔离开来。
CREATE VIEW vOD_deviceid AS SELECT * FROM [otp-devices].dbo.deviceid ;
和
CREATE VIEW vSC_alarmmodlink AS SELECT * FROM mr1ghp/security.dbo.alarmmodlink
然后在其他地方
SELECT * FROM vOD_deviceid; -- OD prefix identifies the database
SELECT module FROM vSC_alarmmodlink;
刚刚替补视图名称只要你会使用完整的database.schema.tablename。
我不明白你的问题。首先,'otp-devices.dbo.deviceid'不是数据库的有效名称。它接近表引用(但连字符不正确)。你的问题是什么?大量的数据库或大量的表? –
@GordonLinoff。 dbo是模式,deviceid是表。 – coffemug
@GordonLinoff,更新了问题 – coffemug