1. 程式人生 > >SQL Server 常用程式碼塊

SQL Server 常用程式碼塊

1. UPDATE 語句

不帶別名的 UPDATE 語句的語法如下:

update <table name》
set column = <column> [, column = <column>]
[where <restrictive condition> ]

如果 update 語句的 where 條件較複雜,或者要更新的值來源於另外一個表時,可以使用帶有別名的 update 語句。

帶有別名的 update 語句語法如下:

update A 
set A.Column1 = B.Column1, A.Column2 = B.Column2, A.Column3 = B.Column3 
from A, B 
where A.Column = B.Column

2. 使用 SELECT 語句建立表

SQLSERVER 中的語法是:
select * into <dst table name>
from <src table name>

3. DELETE 語句

SQL Server 不帶別名的 DELETE 語句的語法是
delete from <table name>
[ where <restrictive condition> ]
帶有別名的 delete 語句的語法如下:
delete <alias> 
from <table name> <alias>
where <restrictive condition>

4. 鎖表查詢及解鎖

select request_session_id as spid, OBJECT_NAME(resource_associated_entity_id) as tableName
from sys.dm_tran_locks
where resource_type='OBJECT'

---或者

select spid, blocked, loginame, last_batch, status, cmd, hostname, program_name  
from sysprocesses  
where spid in  
( select blocked from sysprocesses where blocked <> 0 ) or (blocked <>0)  

--kill spid

5. 查詢包含給定文字的儲存過程

select o.name, o.id,c.text
from sysobjects o,syscomments c
where o.id=c.id and  c.text like '%Test%'

6. 使用 checksum 函式比較兩條資料是否完全相同

返回在表的一行上或在表示式列表上計算的校驗和值。CHECKSUM旨在用於構建雜湊索引。 句法:
CHECKSUM ( * | expression [ ,...n ] )  

引數
指定計算在表格的所有列上。如果任何列是不可比的資料型別,CHECKSUM將返回一個錯誤。不可比較的資料型別是文字,ntext,影象,XML和遊標,還有以任何一種前述型別作為其基本型別的sql_variant。

-- 欄位順序不同也會導致最終返回的值不同
select checksum('a', 'b', 'c')   -- 34400
select checksum('c', 'a', 'b')   -- 39023

7. SYSPROCESSES 檢視資料庫連線

SELECT at.text,sp.*  FROM[Master].[dbo].[SYSPROCESSES] sp  
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS at  

以上語句作用:

查詢客戶端程序PID 為3616的程式,與此資料庫的所有的連線數,每個連線最後執行的語句以及每個連線的詳細資訊。

程序PID 可以在工作管理員中進行檢視。

連線最後執行的語句是text列的詳細資訊。

每個連線的詳細資訊在sp.*中詳細說明。



本文參考: