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