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

  1. --按姓氏笔画排序:
  2. SELECT*FROM TableName ORDERBY 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),@SQLNVARCHAR(1000)
  11. SELECT @list=@list+','+b.nameFROM 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(SELECTCHECKSUM_AGG(BINARY_CHECKSUM(*))FROM A)
  18. =
  19. (SELECTCHECKSUM_AGG(BINARY_CHECKSUM(*))FROM B)
  20. PRINT'相等'
  21. ELSE
  22. PRINT'不相等'
  23. --杀掉所有的事件探察器进程:
  24. DECLARE hcforeach CURSORGLOBALFORSELECT'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. SELECTTOP N *FROM
  30. -------------------------------
  31. N到M条记录(要有主索引ID)
  32. SELECTTOP M-N *FROMWHERE ID in (SELECTTOP M ID FROM)ORDERBY ID DESC
  33. ----------------------------------
  34. N到结尾记录
  35. SELECTTOP N *FROMORDERBY 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..sysloginsWHERE name='sa')
  48. 或者
  49. SELECT dbid, name ASDB_NAMEFROM master..sysdatabasesWHERE sid <> 0x01
  50. --查询某一个表的字段和数据类型
  51. SELECT column_name,data_type FROM information_schema.columns
  52. WHERE table_name ='表名'
  53. [n].[标题]:
  54. SELECT*FROM TableName ORDERBY CustomerName
  55. [n].[标题]:
  56. SELECT*FROM TableName ORDERBY CustomerName
  57. --查看数据库的版本
  58. SELECT@@VERSION
  59. --查看数据库所在机器操作系统参数
  60. EXEC master..XP_MSVER
  61. --查看数据库启动的参数
  62. SP_CONFIGURE
  63. --查看数据库启动时间
  64. SELECTCONVERT(VARCHAR(30),login_time,120)FROM master..sysprocessesWHERE 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. SELECTDISTINCTOBJECT_NAME(id)FROM syscomments WHERETEXT 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. BACKUPLOG @database_name WITH no_log
    42. DBCC shrinkfile (@database_name_log, 5)
    43. --分析SQL Server SQL 语句的方法:
    44. SETSTATISTICSTIME{ON|OFF}
    45. SETSTATISTICS io {ON|OFF}
    46. 图形方式显示查询执行计划
    47. 在查询分析器->查询->显示估计的评估计划(D)-Ctrl-L 或者点击工具栏里的图形
    48. 文本方式显示查询执行计划
    49. SET showplan_all {ON|OFF}
    50. SET showplan_text {ON|OFF}
    51. SETSTATISTICS profile {ON|OFF}
    52. --出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法
    53. 先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作
    54. ALTERDATABASE[@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. ALTERDATABASE[@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;

 

 

下载

posted @ 2009-09-03 11:48  Rhythmk  阅读(512)  评论(1编辑  收藏  举报
Rhythmk 个人笔记