利用同义词简化SQL Server 2005开发

tinghai2014

tinghai2014

2016-01-29 16:07

利用同义词简化SQL Server 2005开发,利用同义词简化SQL Server 2005开发
一. 引言

  如果你曾经使用SQL Server开发过任何软件,那么你肯定会习惯于使用四部分标识符来参考一个对象:

[[[server.][database].][schema_name].]object_name
  正如上面的方括号所显示的,该语法的不同部分可以被忽略,只要你提供足够的表达来无二义地标识你的对象即可。例如,下面所有这些表达都可能参考相同的对象:

Server1.AdventureWorks.Production.ProductCategory
AdventureWorks.Production.ProductCategory
AdventureWorks..ProductCategory
ProductCategory
  在大多数情况下,你可以仅使用三部分名字而忽略服务器名-除非你是在处理在一个连接的服务器上的对象。默认情况下,所有对象的上下文都是本地数据库-你的SQL语句在其中执行。但是,有些情况下,或者更为准确地说,你必须使用这整个四部分命名(或称作一种全称限定名)。但是,在SQL Server 2005中,这种情况有所改变。

  二. 熟悉同义词

  SQL Server 2005引入了一个同义词的概念,这是一个单部分的名字,它可以替换在许多SQL语句中的一个两、三或四部分的名字。使用同义词可以让你减少输入,而且还能提供一个抽象层来为你保护底层对象的改变。为了理解其工作原理,让我们先看一下创建同义词的语法。下面是CREATE SYNONYM语句的语法:

CREATE SYNONYM [schema_name.]synonym_name FOR object_name
  在此,object_name是一个SQL Server对象(全称限定已经足以能够标识出这个对象)的名字,而synonym_name是你想赋给它的新名字。如果你不想为同义词指定一种模式,那么SQL Server使用当前的用户的默认模式。当你创建同义词时,相应的对象不需要存在,因为同义词是迟绑定的:当你实际上使用同义词时,SQL Server仅仅检查基对象。

  例如,在AdventureWorks示例数据库中,你可以以下列方式创建一个同义词:

CREATE SYNONYM ProdCat
FOR AdventureWorks.Production.ProductCategory
  之后,你可以继续使用在SQL语句中的同义词了。例如:

SELECT * FROM ProdCat
  图1显示出相应的结果:



  当你使用完一个同义词后,你可以使用DROP SYNONYM语句来去掉它,它具有你期望的语法格式:

DROP SYNONYM [schema_name.]synonym_name  三. 几点细节

  当然,对于同义词的使用上也存在一些限制。对于初学者来说,你不能为任何东西都创建一个同义词。SQL Server 2005比以前引入了更多的对象,但是同义词仅限于应用于核心集的最有用的一些对象中:

  · 表

  · 视图

  · 存储过程

  · CLR存储过程

  · CLR函数

  · 复制过滤过程

  · 扩展存储过程

  · SQL标量,表值以及内联表值函数

  关于在什么情况下使用同义词还存在一些限制。一般来说,你可以在下面这些T-SQL语句中使用一个同义词:

  · SELECT

  · sub-selects

  · UPDATE

  · INSERT

  · DELETE

  · EXECUTE

  如果你仔细考虑一下,那么第二个表不应该太奇怪:它包含了最常用的where语句。注意,你不能在一个DDL语句中参考一个同义词。如果你想使用ALTER TABLE来改变ProductCategory表中的内容,那么,你需要使用基表而不是使用ProdCat同义词。

  为了创建一个同义词,你需要CREATE SYNONYM权限。在创建一个同义词后,它就有了与其自己相关联的GRANT,DENY和REVOKE许可权。

  四. 把同义词作为一个抽象层

  除了节省你的输入时间外,同义词还可以用作你的数据库的不稳定的或经常更新部分的一个抽象层。这是因为同义词及其基对象之间的绑定仅在运行时
展开更多 50%)
分享

猜你喜欢

利用同义词简化SQL Server 2005开发

SQLServer
利用同义词简化SQL Server 2005开发

Microsoft SQL Server 2005 概述

编程语言 网络编程
Microsoft SQL Server 2005 概述

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server2005杂谈(1):使用公用表表达式(CTE)简化嵌套SQL

编程语言 网络编程
SQL Server2005杂谈(1):使用公用表表达式(CTE)简化嵌套SQL

修改SQL Server 2005执行环境

编程语言 网络编程
修改SQL Server 2005执行环境

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQL Server 2005之Integration Service

编程语言 网络编程
SQL Server 2005之Integration Service

利用JBuilder 2005 开发Spring

Java JAVA基础
利用JBuilder 2005 开发Spring

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Photoshop教程:调色加合成蓝色月光透窗效果

Photoshop教程:调色加合成蓝色月光透窗效果

[DIY]如何建立DHCP服务器(下)

[DIY]如何建立DHCP服务器(下)
下拉加载更多内容 ↓