T-SQL編程概述

T-SQL編程概述

1.SQLServer中支持兩種類型的註釋:
 (1).單行註釋 --
 (2).多行註釋/* */

2. 求出選手的最高分:
 declare @MaxValueID   int
 select @MaxValue=Max(score) from Grade where Player='選手一'

3.  臨時變量:
 Declare 變量名  變量類型及寬度. 
 
    可以採用Select 語句與Set語句對臨時變量進行賦值。例如:
 Declare @var  varchar(12)
 Set @var  ‘test’
 Select @var   ‘test2’
    例如:
 Decalre @score   decimall(10,2)
 Select @Score=score from Grade
 Print @Score
4.   如果在常量字符串中本身包括一個“’“,此時需要用兩個單引號來表達一個單引號,例如:
 Declare @City  varchar(30)
 Set @City =’Xi’ ’An’   --在此本意是要將“Xi’An“這一個字符串賦值給@City,但由
     --於這是一個常量字符串,本身要位於一對“’”內,所以在
 --此需要寫兩個單引號

5.   --求出去掉最高、低分後剩下的平均分(選手的最後得分)
 select avg(score) from Grade where ID not in(@maxValueID,@MinValueID)

6. 
    (1). SET NOCOUNT:
 不返回計數.
 set nocount on: 關閉返回的計數器,也就是不返回受影響的行數。
 SET ANSI_NULL_DFLT_OFF:

    (2).SET ANSI_NULL_DFLT_OFF:
    (3).SET IDENTITY_INSERT:
    (4).SET ROWCOUNT:

7. 臨時表:
 臨時表都是創建在TempDb系統數據庫中的。當SqlServer重新啓動時這個系統數據庫會被清空。
 

 8. truncate,delete,drop的比較.
不同點:
(1). truncate和 delete只刪除數據不刪除表的結構(定義)
    drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的存儲過程/函數將保留,但是變爲invalid狀態.
(2).delete語句是DML,這個操作會放到rollback segement中,事務提交之後才生效;如果有相應的trigger,執行的時候將被觸發.
    truncate,drop是DDL, 操作立即生效,原數據不放到rollback segment中,不能回滾. 操作不觸發trigger
(3).delete語句不影響表所佔用的extent, 高水線(high watermark)保持原位置不動
    顯然drop語句將表所佔用的空間全部釋放
    truncate 語句缺省情況下見空間釋放到 minextents個 extent,除非使用reuse storage; truncate會將高水線復位(回到最開始).
(4).速度,一般來說: drop> truncate > delete
(5).安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及
    使用上,想刪除部分數據行用delete,注意帶上where子句. 回滾段要足夠大.
    想刪除表,當然用drop
    想保留表而將所有數據刪除. 如果和事務無關,用truncate即可. 如果和事務有關,或者想觸發trigger,還是用delete.
    如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據

 

發佈了48 篇原創文章 · 獲贊 0 · 訪問量 5490
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章