干货:SQL Server同义词管理

摘要

本文介绍SQL Server中的同义词概念和作用,以及如何使用脚本来管理。

认识同义词

SQL Server中的同义词是一个数据库对象的别名,主要用于简化对表、视图、存储过程等的访问。

注意事项

同义词只是查询引用,所以不支持直接修改同义词来变更指向的对象。同义词通常是在同一个数据库的不同模式之间创建。

应用场景

跨数据库查询、隐藏复杂表名、版本升级平滑切换等。例如,可用简短同义词替代长表名,或在数据库架构升级时,仅修改同义词指向,无需改动应用代码。

同义词增删改:

  • 新增:CREATE SYNONYM [模式].[同义词名称] FOR [数据库].[模式].[表名];
  • 修改名称:EXEC sp_rename '旧的同义词名称', '新的同义词名称';
  • 删除同义词:DROP SYNONYM "同义词名称";

脚本示例 [SSMS中执行,末尾需要加上GO]

原表数据展示

css 复制代码
USE coffeebeans_db;
SELECT * FROM [dbo].my_table

1)创建同义词

sql 复制代码
USE coffeebeans_db;

-- 不存在coffeebeans_tyc同义词则创建
IF NOT EXISTS (SELECT 1 
    FROM sysobjects 
    WHERE name = 'coffeebeans_tyc')
BEGIN
     CREATE SYNONYM [dbo].coffeebeans_tyc 
     FOR [coffeebeans_db].[dbo].my_table;
END

2)查询同义词

css 复制代码
USE coffeebeans_db;

SELECT * FROM [dbo].coffeebeans_tyc

3)更改同义词名

sql 复制代码
USE coffeebeans_db;

-- 存在coffeebeans_tyc表则更改表名
IF EXISTS (SELECT name 
    FROM sysobjects 
    WHERE name = 'coffeebeans_tyc')
BEGIN
    EXEC sp_rename 'coffeebeans_tyc', 'coffeebeans_tyc_1' 
END

-- 输出:SQL 错误 [208] [S0002]: 对象名 'dbo.coffeebeans_tyc' 无效。
SELECT * FROM [dbo].coffeebeans_tyc

4)删除同义词

sql 复制代码
USE coffeebeans_db;

IF EXISTS (SELECT 1 
    FROM [sys].[synonyms] 
    WHERE [name]='coffeebeans_tyc_1')
BEGIN
    DROP SYNONYM [dbo].coffeebeans_tyc_1
END

-- 输出:SQL 错误 [208] [S0002]: 对象名 'dbo.coffeebeans_tyc_1' 无效。
SELECT * FROM [dbo].coffeebeans_tyc_1

总结

以上我们了解了SQL Server中的同义词概念、作用以及脚本书写方式。

关注公众号:咖啡Beans

在这里,我们专注于软件技术的交流与成长,分享开发心得与笔记,涵盖编程、AI、资讯、面试等多个领域。无论是前沿科技的探索,还是实用技巧的总结,我们都致力于为大家呈现有价值的内容。期待与你共同进步,开启技术之旅。

相关推荐
若水不如远方9 分钟前
分布式一致性(六):拥抱可用性 —— 最终一致性与 Gossip 协议
分布式·后端·算法
lianghanwu199912 分钟前
深入解析 Apache Kafka:从核心原理到实战进阶指南
后端
想不到一个好的ID13 分钟前
Claude Code 初学者必看指南
前端·后端
我爱娃哈哈36 分钟前
SpringBoot + Redis Stream + 消费组:替代 Kafka 轻量级消息队列,低延迟高吞吐
后端
程序员大飞哥37 分钟前
MPTCP 协议全景:从 RFC 6824 到 RFC 8684 的演进
后端
程序员大飞哥37 分钟前
MPTCP 握手全解剖:一条连接是如何"长出"多条腿的
后端
凛訫訫40 分钟前
Java基础--面向对象高级(2)
后端
悟空码字42 分钟前
滑块拼图验证:SpringBoot完整实现+轨迹验证+Redis分布式方案
java·spring boot·后端
Nyarlathotep011343 分钟前
对象头、Monitor与synchronized
后端
luffy54591 小时前
Rust语言入门-变量篇
开发语言·后端·rust