影子博客

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server程序员经常要在SSMS(SQL Server Management Studio)或查询分析器(2000以前)中编写T-SQL代码。以下几个技巧,可以提升工作效率。

以下说明以SS2005为例,SS2008也适用;SS2000的话可能部分适用吧。

  1. 快捷键

现在只要不是电脑新手,都知道Ctrl+C/Ctrl+V,没什么人会用菜单去进行复制/粘贴。而对于靠电脑吃饭的程序员来说,只知道这两个快捷键是不够的。

善用快捷键,可以节省用鼠标去找图标或菜单的时间。更炉火纯青的状态是全键盘操作,连把手移动到鼠标的时间都省了(UNIX程序员都是这么干的)。

在SSMS选择菜单:工具->自定义,勾选“在屏幕提示中显示快捷键”,这样,当把鼠标悬停在执行图标上方时,会显示提示F5。快捷键不需要死记,鼠标点的时候看一下,下次就可以用快捷键了,用多了就熟了。

可以参考这个帖SQL Server 查询分析器提供的所有键盘快捷方式。

  1. 自定义快捷键

SQL Server Management Studio支持自定义快捷键:工具->选项->键盘:
其中,Alt+F1、Ctrl+1、Ctrl+2是系统预定义的快捷键。
双击表名(或按Ctrl单击表名),选定一个表名,如tablename,按Alt+F1,相当于执行“sp_help tablename”,可以查看对象的说明信息。

以下是我添加的一些自定义快捷键:
[code=sql]
--Ctrl+F1:显示表或视图的前100行,选定“tablename,1000”按Ctrl+F1可显示表的前1000行。
sp_executesql N'IF OBJECT_ID(@tablename) IS NOT NULL EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename)',N'@tablename nvarchar(100),@n int=100',
--Ctrl+3:显示视图、存储过程、函数、触发器的定义脚本。
sp_helptext
--Ctrl+4:显示表的行数和占用空间。
sp_spaceused
--Ctrl+5:显示表中每个索引占用的空间。
sp_executesql N'SELECT index_name = ind.name, ddps.used_page_count, ddps.reserved_page_count, ddps.row_count FROM sys.indexes ind INNER JOIN sys.dm_db_partition_stats ddps ON ind.object_id = ddps.object_id AND ind.index_id = ddps.index_id WHERE ind.object_id = OBJECT_ID(@tablename)',N'@tablename nvarchar(100)',
--Ctrl+9:显示表或视图的字段名,以逗号分隔。
sp_executesql N'SELECT columns = STUFF((SELECT '', ''+name FROM sys.columns WHERE object_id = OBJECT_ID(@tablename) FOR XML PATH('''')),1,2,'''')',N'@tablename nvarchar(100)',
--Ctrl+0:根据选定关键词在当前数据库中查找表、视图、存储过程、函数
sp_executesql N'SELECT * FROM sys.objects WHERE type IN (''U'',''V'',''P'',''FN'') AND name LIKE ''%''+@keyword+''%'' ORDER BY type,name',N'@keyword nvarchar(50)',
[/code]

--Ctrl+F1:显示表或视图的前100行,选定“tablename,1000”按Ctrl+F1可显示表的前1000行。
sp_executesql N'IF OBJECT_ID(@tablename) IS NOT NULL EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename)',N'@tablename nvarchar(100),@n int=100',
--Ctrl+3:显示视图、存储过程、函数、触发器的定义脚本。
sp_helptext
--Ctrl+4:显示表的行数和占用空间。
sp_spaceused
--Ctrl+5:显示表中每个索引占用的空间。
sp_executesql N'SELECT index_name = ind.name, ddps.used_page_count, ddps.reserved_page_count, ddps.row_count FROM sys.indexes ind INNER JOIN sys.dm_db_partition_stats ddps ON ind.object_id = ddps.object_id AND ind.index_id = ddps.index_id WHERE ind.object_id = OBJECT_ID(@tablename)',N'@tablename nvarchar(100)',
--Ctrl+9:显示表或视图的字段名,以逗号分隔。
sp_executesql N'SELECT columns = STUFF((SELECT '', ''+name FROM sys.columns WHERE object_id = OBJECT_ID(@tablename) FOR XML PATH('''')),1,2,'''')',N'@tablename nvarchar(100)',
--Ctrl+0:根据选定关键词在当前数据库中查找表、视图、存储过程、函数
sp_executesql N'SELECT * FROM sys.objects WHERE type IN (''U'',''V'',''P'',''FN'') AND name LIKE ''%''+@keyword+''%'' ORDER BY type,name',N'@keyword nvarchar(50)',

posted on 2016-04-28 09:08  影子博客  阅读(6032)  评论(1编辑  收藏  举报