SQL Server程序員經常要在SSMS(SQL Server Management Studio)或查詢分析器(2000以前)中編寫T-SQL代碼。以下幾個技巧,可以提升工作效率。
以下說明以SS2005為例,SS2008也適用;SS2000的話可能部分適用吧。
1. 快捷鍵
現在只要不是電腦新手,都知道Ctrl+C/Ctrl+V,沒什么人會用菜單去進行復制/粘貼。而對於靠電腦吃飯的程序員來說,只知道這兩個快捷鍵是不夠的。
善用快捷鍵,可以節省用鼠標去找圖標或菜單的時間。更爐火純青的狀態是全鍵盤操作,連把手移動到鼠標的時間都省了(UNIX程序員都是這么干的)。
在SSMS選擇菜單:工具->自定義,勾選“在屏幕提示中顯示快捷鍵”,這樣,當把鼠標懸停在執行圖標上方時,會顯示提示F5。快捷鍵不需要死記,鼠標點的時候看一下,下次就可以用快捷鍵了,用多了就熟了。
---------
快捷鍵:
書簽:清除所有書簽。 CTRL-SHIFT-F2
書簽:插入或刪除書簽(切換)。 CTRL+F2
書簽:移動到下一個書簽。 F2 功能鍵
書簽:移動到上一個書簽。 SHIFT+F2
取消查詢。 ALT+BREAK
連接:連接。 CTRL+O
連接:斷開連接。 CTRL+F4
連接:斷開連接並關閉子窗口。 CTRL+F4
數據庫對象信息。 ALT+F1
編輯:清除活動的編輯器窗格。 CTRL+SHIFT+DEL
編輯:注釋代碼。 CTRL+SHIFT+C
編輯:復制。還可以使用 CTRL+INSERT。 CTRL+C
編輯:剪切。還可以使用 SHIFT+DEL。 CTRL+X
編輯:減小縮進。 SHIFT+TAB
編輯:在編輯器窗格中刪除至行尾。 CTRL+DEL
編輯:查找。 CTRL+F
編輯:轉到行號。 CTRL+G
編輯:增大縮進。 TAB
編輯:使選定內容為小寫。 CTRL+SHIFT+L
編輯:使選定內容為大寫。 CTRL+SHIFT+U
編輯:粘貼。還可以使用 SHIFT+INSERT。 CTRL+V
編輯:刪除注釋。 CTRL+SHIFT+R
編輯:重復上次搜索或查找下一個。 F3 功能鍵
編輯:替換。 CTRL+H
編輯:全選。 CTRL+A
編輯:撤消。 CTRL+Z
執行查詢。還可以使用 CTRL+E (針對向后兼容性)。 F5 功能鍵
SQL 查詢分析器幫助。 F1 功能鍵
對所選 Transact-SQL 語句的幫助。 SHIFT+F1
瀏覽:在查詢窗格和結果窗格之間切換。 F6 功能鍵
瀏覽:切換窗格。 Shift+F6
瀏覽:窗口選擇器。 CTRL+W
"新建查詢"窗口。 CTRL+N
對象瀏覽器(顯示/隱藏)。 F8 功能鍵
對象搜索。 F4 功能鍵
分析查詢並檢查語法。 CTRL+F5
打印。 CTRL+P
結果:以表格格式顯示結果。 CTRL+D
結果:以文本格式顯示結果。 CTRL+T
結果:移動拆分器。 CTRL+B
結果:將結果保存為文件。 CTRL+SHIFT+F
結果:顯示結果窗格(切換)。 CTRL+R
保存。 CTRL+S
模板:插入模板。 CTRL+SHIFT+INSERT
模板:替換模板參數。 CTRL+SHIFT+M
優化:顯示預估執行計划。 CTRL+L
優化:顯示執行計划(切換開/關)。 CTRL+K
優化:索引優化向導。 CTRL+I
優化:顯示客戶統計 CTRL+SHIFT+S
優化:顯示服務器跟蹤。 CTRL+SHIFT+T
使用數據庫。 CTRL+U
----------------
2. 自定義快捷鍵
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)'