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

相关推荐
一 乐20 分钟前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
码事漫谈1 小时前
Protocol Buffers 编码原理深度解析
后端
码事漫谈1 小时前
gRPC源码剖析:高性能RPC的实现原理与工程实践
后端
踏浪无痕3 小时前
AI 时代架构师如何有效成长?
人工智能·后端·架构
程序员小假3 小时前
我们来说一下无锁队列 Disruptor 的原理
java·后端
武子康5 小时前
大数据-209 深度理解逻辑回归(Logistic Regression)与梯度下降优化算法
大数据·后端·机器学习
maozexijr5 小时前
Rabbit MQ中@Exchange(durable = “true“) 和 @Queue(durable = “true“) 有什么区别
开发语言·后端·ruby
源码获取_wx:Fegn08955 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
独断万古他化5 小时前
【Spring 核心: IoC&DI】从原理到注解使用、注入方式全攻略
java·后端·spring·java-ee
毕设源码_郑学姐5 小时前
计算机毕业设计springboot基于HTML5的酒店预订管理系统 基于Spring Boot框架的HTML5酒店预订管理平台设计与实现 HTML5与Spring Boot技术驱动的酒店预订管理系统开
spring boot·后端·课程设计