您的位置:首页 > 职场人生

提升SQL Server程序员工作效率的几个技巧

2010-07-21 15:15 831 查看
本文转至于:http://topic.csdn.net/u/20100625/14/f03d6c40-46c6-49f3-9cd2-92d79f1162c4.html



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

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

1. 快捷键

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

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

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

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

2. 自定义快捷键

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

以下是我添加的一些自定义快捷键:
--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)',


3. 光标的艺术

SQL Server Management Studio支持与VS类似的光标移动和选择操作。

块选:按住Alt再用鼠标拖选,或按住Alt再用Shift加方向键选择,可实现块选。块选之后可进行块删除和块复制|粘贴。遗憾的是不支持块插入。

全.键.盘.操.作.的.光.标.快.捷.键

* 上.下.方.向.键:光.标.向.上|下.移.动.一.行
* Ctrl+上.下.方.向.键:代.码.向.上|下.滚.动.一.行
* 左.右.方.向.键:光.标.向.左|右.移.动.一.个.字.符
* Ctrl+左.右.方.向.键:光.标.向.左|右.移.动.一.个.单.词
* Home|End:光.标.移.动.到.行.首|行.尾
* Ctrl+Home|End:光.标.移.动.到.代.码.开.头|结.尾
* PageUp|PageDown:代.码.向.上|下.滚.动.一.屏
* Ctrl+PageUp|PageDown:光.标.移.动.到.屏.幕.开.头|结.尾
以上的移动操作,加Shift键可变成选择操作。

4. 扩展工具

* 功能更强大的文本编辑器:Vim/Emacs/Notepad++(开源)、UltraEdit/EmEditor(收费)
* 代码对比:WinMerge(开源)、UltraCompare(收费)
* 自动化操作(包括自定义全局快捷键、自动输入等):AutoHotKey(开源),参看加速SQL代码输入的利器
* SQL专用插件:SQL Assistant(收费)、SQL Prompt(收费)

以上工具中收费软件我都没有用过,仅供参考;开源软件我基本都用过,强烈推荐。

以下是我添加的一些自定义快捷键:

SQL 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)',


模板的好处跟坏处一样明显。

对于不了解语法细节的情况,用模板可以省却去查文档、看BNF的麻烦。

对于经常使用的语句,用模板还要一个一个名称去修改,还不如在AHK的强力帮助下自己手写快。

需要的情况下,还可以借助Vim或Python做代码自动生成(Code Generation)。


第2条所说的自定义快捷键,要重启SSMS才能生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: