天天看點

經典SQL語句大全(非增删改查)

推薦大家使用一個插件SQL Prompt,智能提示很好

  1. SQL Server資料庫備份

EXEC sp_addumpdevice 'disk', 'TestBackUp', 'F:/1.bat' BACKUP DATABASE DataBase_Name TO TestBackUp

  1. 查詢資料庫在程序池的連接配接數

SELECT * FROM master.dbo.sysprocesses WHERE dbid IN ( SELECT dbid FROM master.dbo.sysdatabases WHERE name = 'DataBase_Name' )

  1. 查詢資料庫被鎖表和解除資料庫被鎖表

SELECT request_session_id spid , OBJECT_NAME(resource_associated_entity_id) tableName FROM sys.dm_tran_locks WHERE resource_type = 'OBJECT'

DECLARE @spid INT SET @spid = 100 DECLARE @KillProcess VARCHAR(100) SET @KillProcess = 'Kill ' + CAST(@spid AS VARCHAR) EXEC(@KillProcess)

  1. 恢複資料庫限制

ALTER TABLE TABLE_Name WITH CHECK CHECK CONSTRAINT CK_Employee_BirthDate (限制名稱)

  1. 去除資料庫限制

ALTER TABLE TABLE_Name NOCHECK CONSTRAINT CK_Employee_BirthDate (限制名稱)

  1. 恢複資料庫全部限制

EXEC sp_MSforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

  1. 去除資料庫全部限制

EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

  1. 内連接配接

内連接配接(Inner Join)的結果是左右兩表同時符合條件的組合 注意與笛卡爾積的交叉連接配接的差別: 内連接配接: SELECT * FROM table1 INNER JOIN table2 ON table1.條件列名 = table2.條件列名 笛卡爾積的交叉連接配接: SELECT table1.* , table2.* FROM table1 , table2 WHERE table1.條件列名 = table2.條件列名 笛卡爾積需要先生成行數乘積的資料表再進行篩選,是以内連接配接效率高于笛卡爾積的交叉連接配接

  1. 外連接配接

左連接配接(Left Join)的結果是左表的所有行,如果左表中的某行在右表沒有比對,則在關聯結果中右表的相關列為空(NULL) 右連接配接與之相反

後續補充中……