zoukankan      html  css  js  c++  java
  • SQL Server 查询分析器提供的所有快捷方式(快捷键)

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

     或查询最后100行   sp_executesql N'IF OBJECT_ID(@tablename) IS NOT NULL EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename +''   ORDER BY    ''+@tablename+''Id  DESC'' )',N'@tablename nvarchar(100),@n int=100',

    或者 

    sp_executesql N'IF OBJECT_ID(@tablename) IS NOT NULL BEGIN TRY EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename +'' ORDER BY ''+@tablename+''Id DESC'' ) END TRY BEGIN CATCH EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename) END CATCH ',N'@tablename nvarchar(100),@n int=100',

    或者 

    sp_executesql N'DECLARE @tempsql nvarchar(1024); declare @temp NVARCHAR(20);set @tempsql = N''SELECT TOP 1 @temp = a.name from syscolumns a(nolock), sysobjects b(nolock) where a.id=b.id and b.name=''''''+@tablename +''''''ORDER BY a.colid ;'';exec sp_executesql @tempsql,N''@temp NVARCHAR(20) output'',@temp OUTPUT ; IF OBJECT_ID(@tablename) IS NOT NULL  BEGIN TRY EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename +''   ORDER BY    ''+@tablename+''Id  DESC'' ) END  TRY BEGIN CATCH EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename +''   ORDER BY    ''+@temp+''  DESC'') END CATCH ',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)'

    --给表添加表描述(Q为分割线,前面是表名,后面是表描述)

    sp_executesql N'DECLARE @tempName NVARCHAR(100) ;DECLARE @tempTable NVARCHAR(100) ;SELECT @tempName =  STUFF(@tempTxt,1,charindex(''Q'',''''+@tempTxt +''''),'''');SELECT @tempTable =  SUBSTRING(@tempTxt,1,charindex(''Q'',''''+@tempTxt +'''')-1);IF @tempTxt<> ''''  BEGIN   EXECUTE sp_addextendedproperty N''MS_Description'', @tempName, N''user'', N''dbo'', N''table'', @tempTable;EXEC sp_helpremark @tempTable;END',N'@tempTxt nvarchar(200)', TestQ测试

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

    查询前100行:   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',

    查询前1000行(如果包含CreateDate字段就倒序查最后1000行):   sp_executesql N'IF OBJECT_ID(@tablename) IS NOT NULL begin  if col_length(''IQCCheckOrder'',''CreateDate'') is null begin EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename)  end  else begin  EXEC(N''SELECT TOP(''+@n+N'') * FROM ''+@tablename + ''   order by CreateDate    desc  '')   end  end',N'@tablename nvarchar(100),@n int=1000',

    相关依赖:   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)',

    索引信息:   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)',

    表列名:    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)',

    存储过程搜索:

    sp_executesql N'SELECT DISTINCT name from sysobjects o, syscomments s where o.id = s.id and text like ''%''+@keyword+''%'' and o.xtype = ''P''',N'@keyword nvarchar(50)',

    1、自定义4个常用的存储过程:

    sp_select :select * from

    sp_helpremark :查表的列,列的类型,备注(这里只查询有备注的列)

    sp_columns1 : 查表所有的列,列的类型,length

    sp_columns2 :查表所有的列,横向显示

    注意:上面4个自定义存储过程,必须在查询分析器中执行后,才能快捷键使用。

    A) sp_select :

    CREATE proc sp_select(@sql varchar(1000))    
    as    
    begin    
    set @sql='select * from ' + @sql;    
    exec (@sql);    
    end 

    B) sp_helpremark :

     
    CREATE PROC [dbo].[sp_helpremark]      
          
    @TABLE_NAME VARCHAR(50)      
          
    AS      
          
    SELECT COLID,SO.NAME,EP.VALUE,SO.LENGTH,MIN(ST.NAME) AS TYPE      
          
    FROM  SYS.EXTENDED_PROPERTIES EP      
          
    RIGHT JOIN SYS.SYSCOLUMNS SO ON MAJOR_ID=ID AND COLID=MINOR_ID      
          
    LEFT JOIN SYS.SYSTYPES ST ON ST.XTYPE=SO.XTYPE      
          
    WHERE      
          
    ID=OBJECT_ID(@TABLE_NAME)      
          
    GROUP BY COLID,SO.NAME,EP.VALUE,SO.LENGTH      
          
    ORDER BY COLID
     

    C) sp_columns1 :

     
    CREATE PROC sp_columns1      
    @table_name VARCHAR(1000)      
    AS      
    BEGIN      
    SELECT a.name,c.data_type,a.length FROM syscolumns  a            
    LEFT JOIN information_schema.columns c  ON a.name=c.column_name               
    WHERE a.ID = OBJECT_ID (@table_name)            
          
    END
     

    D) sp_columns2 :

     
    CREATE PROC sp_columns2(@table_name VARCHAR(1000))    
    AS    
    BEGIN    
      
    DECLARE @column_name VARCHAR(100)--列名  
    DECLARE @columns VARCHAR(1000)--所有列名  
      
    SELECT @columns=''  
    DECLARE  mycursor cursor  
    FOR SELECT name FROM syscolumns WHERE id=(SELECT id FROM sysobjects WHERE name=@table_name)   
    OPEN mycursor  
    FETCH NEXT FROM  MyCursor INTO @column_name  
     WHILE @@FETCH_STATUS =0  
        BEGIN  
     SELECT @columns=@columns+@column_name+','  
     FETCH NEXT FROM  MyCursor INTO @column_name  
     END  
      
    CLOSE MyCursor  
      
    DEALLOCATE MyCursor  
      
    SELECT @columns  
    END    
     

    2、打开数据库,工具>>选项>>键盘:

    在存储过程列里,填写按快捷键时执行的存储过程(注:这里的存储过程列需要 写入特定的方法名)

    再根据上面4个自定义的存储过程名称,选择对应不同的快捷键,确定完成。

    >>>>>>>>>>>>使用方法:

    打开查询分析器: 直接写表名,选中,并按目标快捷组合键,完成查询。

  • 相关阅读:
    关于软件工程的疑问
    thinkphp基础入门(2)
    JS What does `void 0` mean?
    第2章 TCPIP的工作方式
    JavaScript中var a=b=c=d的发现
    如何让 Git 忽略掉文件中的特定行内容?
    thinkphp基础入门(1)
    IIS网站服务器性能优化指南(转载)
    240个jquery插件
    解决_动态加载JS文件_调用时出错
  • 原文地址:https://www.cnblogs.com/weifeng123/p/9686287.html
Copyright © 2011-2022 走看看