SQL Server 数据库管理常用的SQL和T-SQL语句

系统 1643 0
  1. --按姓氏笔画排序:
  2. SELECT * FROM TableName ORDER BY CustomerName COLLATE Chinese_PRC_Stroke_ci_as
  3. --数据库加密:
  4. SELECT encrypt ( '原始密码' )
  5. SELECT pwdencrypt ( '原始密码' )
  6. SELECT pwdcompare ( '原始密码' , '加密后密码' ) = 1 --相同;否则不相同 encrypt('原始密码')
  7. SELECT pwdencrypt ( '原始密码' )
  8. SELECT pwdcompare ( '原始密码' , '加密后密码' ) = 1 --相同;否则不相同
  9. --取回表中字段:
  10. DECLARE @list VARCHAR ( 1000 ) ,@ SQL NVARCHAR ( 1000 )
  11. SELECT @list = @list + ',' + b. name FROM sysobjects a,syscolumns b WHERE a. id = b. id and a. name = '表A'
  12. SET @ SQL = 'select ' + RIGHT ( @list, LEN ( @list ) - 1 ) + ' from 表A'
  13. EXEC ( @ SQL )
  14. --查看硬盘分区:
  15. EXEC master.. xp_fixeddrives
  16. --比较A,B表是否相等:
  17. IF ( SELECT CHECKSUM_AGG ( BINARY_CHECKSUM ( * ) ) FROM A )
  18. =
  19. ( SELECT CHECKSUM_AGG ( BINARY_CHECKSUM ( * ) ) FROM B )
  20. PRINT '相等'
  21. ELSE
  22. PRINT '不相等'
  23. --杀掉所有的事件探察器进程:
  24. DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill ' + RTRIM ( spid ) FROM master. dbo . sysprocesses
  25. WHERE program_name IN ( 'SQL profiler' ,N 'SQL 事件探查器' )
  26. EXEC sp_msforeach_worker '?'
  27. --记录搜索:
  28. 开头到N条记录
  29. SELECT TOP N * FROM
  30. -------------------------------
  31. N到M条记录 ( 要有主索引ID )
  32. SELECT TOP M - N * FROM WHERE ID in ( SELECT TOP M ID FROM ) ORDER BY ID DESC
  33. ----------------------------------
  34. N到结尾记录
  35. SELECT TOP N * FROM ORDER BY ID DESC
  36. --如何修改数据库的名称:
  37. SP_RENAMEDB 'old_name' , 'new_name'
  38. --获取当前数据库中的所有用户表
  39. SELECT Name FROM sysobjects WHERE xtype = 'u' and status >= 0
  40. --获取某一个表的所有字段
  41. SELECT name FROM syscolumns WHERE id = OBJECT_ID ( '表名' )
  42. --查看与某一个表相关的视图、存储过程、函数
  43. SELECT a. * FROM sysobjects a, syscomments b WHERE a. id = b. id and b. TEXT like '%表名%'
  44. --查看当前数据库中所有存储过程
  45. SELECT name AS 存储过程名称 FROM sysobjects WHERE xtype = 'P'
  46. --查询用户创建的所有数据库
  47. SELECT * FROM master.. sysdatabases D WHERE sid not in ( SELECT sid FROM master.. syslogins WHERE name = 'sa' )
  48. 或者
  49. SELECT dbid, name AS DB_NAME FROM master.. sysdatabases WHERE sid <> 0x01
  50. --查询某一个表的字段和数据类型
  51. SELECT column_name,data_type FROM information_schema. columns
  52. WHERE table_name = '表名'
  53. [ n ] . [ 标题 ] :
  54. SELECT * FROM TableName ORDER BY CustomerName
  55. [ n ] . [ 标题 ] :
  56. SELECT * FROM TableName ORDER BY CustomerName
  57. --查看数据库的版本
  58. SELECT @@VERSION
  59. --查看数据库所在机器操作系统参数
  60. EXEC master.. XP_MSVER
  61. --查看数据库启动的参数
  62. SP_CONFIGURE
  63. --查看数据库启动时间
  64. SELECT CONVERT ( VARCHAR ( 30 ) ,login_time, 120 ) FROM master.. sysprocesses WHERE spid = 1
  65. 查看数据库服务器名和实例名
  66. PRINT 'Server Name...............: ' + CONVERT ( VARCHAR ( 30 ) , @@SERVERNAME )
  67. PRINT 'Instance..................: ' + CONVERT ( VARCHAR ( 30 ) , @@SERVICENAME )
  68. --查看所有数据库名称及大小
  69. SP_HELPDB
  70. 重命名数据库用的 SQL
  71. SP_RENAMEDB 'old_dbname' , 'new_dbname'
  72. --查看所有数据库用户登录信息
  73. SP_HELPLOGINS
  74. 查看所有数据库用户所属的角色信息
  75. SP_HELPSRVROLEMEMBER
  76. 修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程
  77. 更改某个数据对象的用户属主
  78. SP_CHANGEOBJECTOWNER [ @objectname = ] 'object' , [ @newowner = ] 'owner'
  79. 注意: 更改对象名的任一部分都可能破坏脚本和存储过程。
  80. 把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本
    ---------------------------------------------------------------

    1. --查看链接服务器
    2. SP_HELPLINKEDSRVLOGIN
    3. 查看远端数据库用户登录信息
    4. SP_HELPREMOTELOGIN
    5. --查看某数据库下某个数据对象的大小
    6. SP_SPACEUSED @objname
    7. 还可以用sp_toptables过程看最大的N ( 默认为 50 ) 个表
    8. 查看某数据库下某个数据对象的索引信息
    9. SP_HELPINDEX @objname
    10. 还可以用SP_NChelpindex过程查看更详细的索引情况
    11. SP_NChelpindex @objname
    12. CLUSTERED 索引是把记录按物理顺序排列的,索引占的空间比较少。
    13. 对键值DML操作十分频繁的表我建议用非 CLUSTERED 索引和约束, FILLFACTOR 参数都用默认值。
    14. 查看某数据库下某个数据对象的的约束信息
    15. SP_HELPCONSTRAINT @objname
    16. --查看数据库里所有的存储过程和函数
    17. USE @database_name
    18. SP_STORED_PROCEDURES
    19. 查看存储过程和函数的源代码
    20. SP_HELPTEXT '@procedure_name'
    21. 查看包含某个字符串@ STR 的数据对象名称
    22. SELECT DISTINCT OBJECT_NAME ( id ) FROM syscomments WHERE TEXT like '%@str%'
    23. 创建加密的存储过程或函数在 AS 前面加 WITH ENCRYPTION参数
    24. 解密加密过的存储过程和函数可以用sp_decrypt过程
    25. --查看数据库里用户和进程的信息
    26. SP_WHO
    27. 查看 SQL Server数据库里的活动用户和进程的信息
    28. SP_WHO 'active'
    29. 查看 SQL Server数据库里的锁的情况
    30. SP_LOCK
    31. 进程号 1 --50是SQL Server系统内部用的,进程号大于50的才是用户的连接进程.
    32. spid是进程编号,dbid是数据库编号,objid是数据对象编号
    33. 查看进程正在执行的 SQL 语句
    34. DBCC inputbuffer ( )
    35. 推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的 SQL 语句
    36. sp_who3
    37. 检查死锁用sp_who_lock过程
    38. sp_who_lock
    39. --收缩数据库日志文件的方法
    40. 收缩简单恢复模式数据库日志,收缩后@database_name_log的大小单位为M
    41. BACKUP LOG @database_name WITH no_log
    42. DBCC shrinkfile ( @database_name_log, 5 )
    43. --分析SQL Server SQL 语句的方法:
    44. SET STATISTICS TIME { ON | OFF }
    45. SET STATISTICS io { ON | OFF }
    46. 图形方式显示查询执行计划
    47. 在查询分析器 -> 查询 -> 显示估计的评估计划 ( D ) - Ctrl - L 或者点击工具栏里的图形
    48. 文本方式显示查询执行计划
    49. SET showplan_all { ON | OFF }
    50. SET showplan_text { ON | OFF }
    51. SET STATISTICS profile { ON | OFF }
    52. --出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法
    53. 先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作
    54. ALTER DATABASE [ @error_database_name ] SET single_user
    55. 修复出现不一致错误的表
    56. DBCC checktable ( '@error_table_name' ,repair_allow_data_loss )
    57. 或者可惜选择修复出现不一致错误的小型数据库名
    58. DBCC checkdb ( '@error_database_name' ,repair_allow_data_loss )
    59. ALTER DATABASE [ @error_database_name ] SET multi_user
    60. CHECKDB 有 3 个参数:
    61. repair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,
    62. 以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。
    63. 修复操作可以在用户事务下完成以允许用户回滚所做的更改。
    64. 如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。
    65. 如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。
    66. 修复完成后,请备份数据库。
    67. repair_fast 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。
    68. 这些修复可以很快完成,并且不会有丢失数据的危险。
    69. repair_rebuild 执行由 repair_fast 完成的所有修复,包括需要较长时间的修复(如重建索引)。
    70. 执行这些修复时不会有丢失数据的危险。
    /*
    getdate() 获取当前时间,
    datename(datepart,date)  返回datepart指定字符串格式的时间
    datepart(datepart,date)  返回datepart指定字整形格式的时间
    */

    select   getdate (),  datename (mm, getdate ()),  datepart (mm, getdate ())

    /* isdate(str) 为真返回1 为假则为0   */
    select   isdate ( ' 2009/1/02 ' )

    select   ceiling ( 12.3 -- 取最大整数
    select   floor ( 12.3 )    -- 取最小整数

    select   len ( getdate ())  -- 获取字符串长度

    select   left ( ' abcdef ' , 4 ), right ( 123456 , 4 -- left 获取字符串从左开始的指定长度
             -- ---right 获取字符串从右边开始的指定长度
    select   substring ( ' abcdefghijklmn '  , 2  , 6 )   -- bcdefg 获取指定起点跟终点的长度

    select   replicate ( ' wk ' , 3 -- 按照指定次数复制字符串

    select   ltrim '    123 ' ) ,  rtrim ( ' add     ' -- 取出字符串左,右空格
    select   reverse ( ' abcde ' )   -- edcba 获取一个反序的字符串


    -- ------------****数据库时间格式****----------------

    select   dateadd ( year , 2 , ' 2004-10-17 ' -- 加两年

    select   datediff ( day , ' 2006-10-10 ' , ' 2006-12-18 ' --  判断天差

 

     分类拼接字符串

      
        --
      
      
        -1、 建立临时表--
      
      
        SELECT
      
      
        *
      
      
        INTO
      
        temp_CombineBuying 
      
        FROM
      
       (
      
        SELECT
      
       b.ProviderTypeShortName,a.ProviderGUID,b.ProviderTypeCode 
      
        FROM
      
        p_provider2Type  a 
      
        INNER
      
      
        JOIN
      
         p_ProviderType b 
      
        ON
      
       a.ProviderTypeCode
      
        =
      
      
        b.ProviderTypeCode) t


      
      
        --
      
      
        --- 2、拼接字符串 --- 
      
      
        SELECT
      
       ProviderGUID, 
      
        stuff
      
      
        (  

    (
      
      
        select
      
      
        '
      
      
        ,
      
      
        '
      
      
        +
      
      
        convert
      
      (
      
        varchar
      
      (
      
        25
      
      ), ProviderTypeShortName) 
      
        from
      
       temp_CombineBuying 
      
        as
      
       t2 
      
        WHERE
      
      
        

      t2.ProviderGUID
      
      
        =
      
      t1.ProviderGUID 
      
        FOR
      
       XML PATH(
      
        ''
      
      )), 
      
        1
      
      , 
      
        1
      
      , 
      
        ''
      
      
          

) 
      
      
        as
      
       ProviderTypeNameList  
      
        INTO
      
      
          p_ProviderTypeNameList


      
      
        FROM
      
       temp_CombineBuying 
      
        AS
      
       t1 
      
        GROUP
      
      
        BY
      
      
         ProviderGUID


      
      
        --
      
      
        --- 3、清除临时表
      
      
        DROP
      
      
        TABLE
      
      
         temp_CombineBuying;


      
      
        DROP
      
      
        TABLE
      
       p_ProviderTypeNameList;
    

 

 

下载

SQL Server 数据库管理常用的SQL和T-SQL语句


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论