各种SQL语句.sql 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. --=============================================
  2. --first content
  3. --脚本说明:SQL数据库修复命令总集
  4. --建立日期:2014-10-31
  5. --编 写 者:lyfz-pc
  6. --版 本: (null)
  7. --=============================================
  8. /* 1.设置数据库为单用户*/
  9. USE MASTER ALTER DATABASE [数据库名] SET SINGLE_USER
  10. -- 实例:
  11. use master alter database [lyfzdb] set single_user
  12. /* 2.设置数据库为多用户*/
  13. USE MASTER ALTER DATABASE [数据库名] SET MULTI_USER
  14. -- 实例:
  15. use master alter database [lyfzdb] set multi_user
  16. /* 3.设置数据库为紧急模式 */
  17. USE MASTER ALTER DATABASE 数据库名 SET EMERGENCY
  18. -- 实例:
  19. use master alter database lyfzdb set emergency
  20. /* 4.设置数据库为在线模式(紧急模式的相反模式) */
  21. USE MASTER ALTER DATABASE 数据库名 SET ONLINE
  22. -- 实例:
  23. use master alter database lyfzdb set online
  24. /* 5.检测数据库完整性(是否损坏) */
  25. USE MASTER DBCC CHECKDB('数据库名')
  26. -- 实例:
  27. use master dbcc checkdb('lyfzdb')
  28. /* 6.检测数据库指定表的一致性(表是否损坏)*/
  29. USE 数据库名 DBCC CHECKTABLE('表名称')
  30. -- 实例:
  31. use lyfzdb dbcc checktable('dbo.dindan')
  32. /* 7.根据检测结果提示:***索引***,重建表索引 */
  33. USE 数据库名 DBCC DBREINDEX('表名称',' ')
  34. -- 实例:
  35. use lyfzdb dbcc dbreindex('dindan',' ')
  36. /* 8.根据检测结果提示,修复分配错误,重建表索引 */
  37. USE 数据库名 DBCC CHECKTABLE('表名称',REPAIR_REBUILD)
  38. -- 实例:
  39. use master alter database [lyfzdb] set single_user
  40. use lyfzdb dbcc checktable('dindan',repair_rebuild)
  41. use master alter database [lyfzdb] set multi_user
  42. /* 9.根据检测结果提示,快速修复表 */
  43. USE 数据库名 DBCC CHECKTABLE('表名称',REPAIR_FAST)
  44. -- 实例:
  45. use master alter database [lyfzdb] set single_user
  46. use lyfzdb dbcc checktable('dindan',repair_fast)
  47. use master alter database [lyfzdb] set multi_user
  48. /* 10.根据检测结果提示,修复表一致性错误,并可能会导致一些数据丢失*/
  49. USE 数据库名 DBCC CHECKTABLE('表名称',REPAIR_ALLOW_DATA_LOSS)
  50. -- 实例:
  51. use master alter database [lyfzdb] set single_user
  52. use lyfzdb dbcc checktable('dindan',repair_allow_data_loss)
  53. use master alter database [lyfzdb] set multi_user
  54. /* 12.根据检测结果提示,修复整个数据库一致性错误,并极有可能导致一些数据丢失 */
  55. USE MASTER DBCC CHECKDB('数据库名',REPAIR_ALLOW_DATA_LOSS)
  56. -- 实例:
  57. use master alter database [lyfzdb] set single_user
  58. use master dbcc checkdb('lyfzdb',repair_allow_data_loss)
  59. use master dbcc checkdb('lyfzdb',repair_rebuild)
  60. use master alter database [lyfzdb] set multi_user
  61. /* 13.检测数据库是否发生了架构损坏,一般与第5条配合使用 */
  62. USE MASTER DBCC CHECKCATALOG('数据库名')
  63. -- 实例:
  64. use master dbcc checkcatalog('lyfzdb')
  65. /* 14.修复置疑数据库*/
  66. --.检测lyfzdb有无损坏
  67. use master dbcc checkdb('lyfzdb')
  68. --有损坏则执行以下命名;
  69. use master alter database lyfzdb set emergency
  70. use master alter database [lyfzdb] set single_user
  71. use master dbcc checkdb('lyfzdb',repair_allow_data_loss)
  72. use master dbcc checkdb('lyfzdb',repair_rebuild)
  73. use master alter database [lyfzdb] set multi_user
  74. use master alter database lyfzdb set online
  75. --无损坏执行以下命名;
  76. --use master
  77. --go
  78. --sp_configure 'allow updates', 1
  79. --reconfigure with override
  80. --go
  81. --begin tran
  82. --update sysdatabases set status = 32768 where name = 'lyfzdb'
  83. --commit tran
  84. --go
  85. ---------------------------------------------------------------------
  86. --=============================================
  87. /* 基础SQL语句 */
  88. --建立日期:2014-10-31
  89. --编 写 者:lyfz-pc
  90. --版 本: (null)
  91. --=============================================
  92. /* 1.查找表里重复的记录 */
  93. USE 数据库名称 SELECT * FROM 表名称 WHERE 字段名称 IN (SELECT 字段名称 FROM 表名称 GROUP BY 字段名称 HAVING COUNT(字段名称) > 1)
  94. USE 数据库名称 SELECT * FROM 表名称 WHERE 字段名称 IN (SELECT 字段名称 FROM 表名称 WHERE 字段名称='查询内容' GROUP BY 字段名称 HAVING COUNT(字段名称) > 1)
  95. --实例:
  96. use db select * from dindanjd where id in (select id from dindanjd group by id having count(id) > 1)
  97. use db select * from dindanjd where id in (select id from dindanjd where id = '20140825-019' group by id having count(id) > 1)
  98. use dbmsg select max(signname)as signname,max(name)as name,max(addr)as addr from clientinfo group by signname
  99. /* 消除输出中的重复记录的命令 */
  100. USE 数据库名称 SELECT DISTINCT * FROM 表名称
  101. --实例:
  102. use db select distinct * from dindan
  103. --use db select unique id from dindan
  104. /* 删除表里指定条件的记录 */
  105. USE 数据库名称 DELETE FROM 表名称 WHERE 列名称 = 值
  106. --实例:
  107. use db delete from dindan where id='20141011-002'
  108. /* 更新指定表名、字段、字段内容,以及replace的结合使用*/
  109. USE 数据库名称 UPDATE 表名称 SET 字段名称='要替换的内容' where 字段名称='要被替换的内容'
  110. USE 数据库名称 UPDATE 表名称 SET 字段名称=REPLACE(字段名称,'要被替换的内容' ,'要替换的内容')
  111. USE 数据库名称 UPDATE 表名称 SET 字段名称=REPLACE(CAST(字段名称 AS NVARCHAR(50)),'要被替换的内容' ,'要替换的内容')
  112. --实例
  113. use db update dindansp set shuliang='6' where shuliang='6块'
  114. use db update dindansp set shuliang=replace(shuliang,'块','')
  115. use db update dindansp set shuliang=replace(cast(shuliang as nvarchar(50)),'6块','6')
  116. --修改数据库的逻辑文件名(数据)
  117. Alter DATABASE 数据库名 MODIFY FILE(NAME='老数据库逻辑文件名',NEWNAME='新数据库逻辑文件名')
  118. alter database [2014] modify file(name='dbnull',newname='2014')
  119. --修改数据库的逻辑文件名(日志)
  120. Alter DATABASE 数据库名 MODIFY FILE(NAME='老日志逻辑文件名',NEWNAME='新日志逻辑文件名')
  121. alter database [2014] modify file(name='dbnull_log',newname='2014_log')
  122. --在原来的值上加值更新
  123. update [version] set msgbalance = convert(int,msgbalance,10)+1000