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

相关推荐
古城小栈5 小时前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust
keep one's resolveY6 小时前
SpringBoot实现重试机制的四种方案
java·spring boot·后端
阿丰资源8 小时前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端
IT_陈寒8 小时前
SpringBoot自动配置的坑差点让我加班到天亮
前端·人工智能·后端
消失的旧时光-19439 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
追风筝的人er9 小时前
SpringBoot+Vue3 企业考勤如何处理法定假期?节假日方案、调休补班与工作日判断链路拆解
前端·vue.js·后端
金銀銅鐵10 小时前
[git] 如何丢弃对一个文件的改动?
git·后端
橘子海全栈攻城狮11 小时前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序
smallyoung11 小时前
具有反思能力的 Agentic RAG 实战:用 LangChain4j 实现 CRAG 纠错检索
人工智能·后端
EthanYuan11 小时前
💡RAG实践:从云知识库迁移到PostgreSQL ,并使用PGVector实现向量存储
后端