干货: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、资讯、面试等多个领域。无论是前沿科技的探索,还是实用技巧的总结,我们都致力于为大家呈现有价值的内容。期待与你共同进步,开启技术之旅。

相关推荐
nnerddboy2 小时前
Rust教程04:引用、借用与切片
开发语言·后端·rust
Rain的Java大神之路2 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
weixin_431600443 小时前
NestJS 入门(7):生命周期钩子——构造函数和 `OnModuleInit` 差在哪?
前端·后端·学习·node.js·nest.js
小强库计算机毕业设计3 小时前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
canonical_entropy4 小时前
关于《Mission Driver:Loop Engineering 的一种通用参考实现》的补充说明
后端·agent·ai编程
__zRainy__4 小时前
Node系列 · Node基础:Node.js 概述
后端·node.js
星火10244 小时前
【LangChain4j系列06】ChatMemory 对话记忆管理
人工智能·后端
netCode4 小时前
Git一文带你理解如何使用
后端
睡觉时不困4425 小时前
12.LangChain 1.0+ 第二篇:Prompt、结构化输出与 LCEL 组件组合.发布清单
后端
SomeB1oody5 小时前
【RustyML入门】2.13. 孤立森林
开发语言·后端·机器学习·rust·教程