t-sql中的變數分為區域性變數和全域性變數
為什麼要用區域性變數:
在sql
中,我們常常使用臨時表來儲存臨時結果,對於結果是乙個集合的情況,這種方法非常實用,但當結果僅僅是乙個資料或者是幾個資料時,還要去建乙個表,顯得就比較麻煩,另外,當乙個
sql語句中的某些元素經常變化時,比如選擇條件,(至少我想)應該使用區域性變數 。當然ms
sql server的全域性變數也很有用。
區域性變數 :區域性變數就是在當前批處理中有效的變數,批處理完成就刪掉
全域性變數 :在整個sql server 中都可以訪問到的變數
語法:declare @variable_name datatype
--宣告 變數名稱 資料型別(
變數不能是
text
、ntext
或 image
資料型別,ms說的).
區域性變數的賦值:
語法:set @variable_name =value
或select @variable_name=value
set賦值語句一般用於賦給變數指定的資料常量
select 語句需要確保篩選的記錄不多於一條,如果查詢的記錄多於一條,將把最後一條記錄的值賦給變數
set與select語句在對變數進行賦值時的區別
setselect
同時對多個變數賦值
不支援支援
表示式返回多個值時
出錯將返回的最後乙個值賦給變數
表示式未返回值時
變數被賦null值
變數保持原值
全域性變數 是系統預定義的,返回一些系統資訊,全域性變數以兩個at(@)
開頭。
常見的:
@@error
最後乙個t-sql錯誤的錯誤號
@@identity 最後一次插入的標識值
@@language 當前使用的語言的名稱
@@max_connections 可以建立的同時連線的最大數目
@@rowcount 受上乙個sql語句影響的行數
@@servername 本地伺服器的名稱
@@servicename該計算機上的sql服務的名稱
@@timeticks當前計算機上的每刻度的微妙數
@@transcount當前連線開啟的事物數
@@version 返回當前sql server的版本資訊
......
輸出語句print 和select 語法
print 區域性變數或字串
select 區域性變數 as 自定義列名
資料型別轉換 cast() 和convert()函式
與c#類似,t-sql語言中,資料型別轉換也分為隱式轉換和顯示轉換。
convert()和cast()都能實現資料型別的顯示轉換
語法cast(表示式 as 資料型別)
convert(資料型別[(長度)],長度[,樣式])
相關例子:
sqlserver中用convert函式轉換日期格式
2008-01-23 15:47
sqlserver中用convert函式轉換日期格式2008-01-15 15:51sqlserver中用convert函式轉換日期格式
sql server中文版的預設的日期欄位datetime格式是yyyy-mm-dd thh:mm:ss.mmm
例如:
select getdate()
2004-09-12 11:06:08.177
整理了一下sql server裡面可能經常會用到的日期格式轉換方法:
舉例如下:
select convert(varchar, getdate(), 120 )
2004-09-12 11:06:08
select replace(replace(replace(convert(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20040912110608
select convert(varchar(12) , getdate(), 111 )
2004/09/12
select convert(varchar(12) , getdate(), 112 )
20040912
select convert(varchar(12) , getdate(), 102 )
2004.09.12
select convert(varchar(12) , getdate(), 101 )
09/12/2004
更多資訊詳見聯機叢書,msdn
begin-end 語句
作用:在順序結構的程式中,將多個語句定義為乙個語句塊,把每個語句塊視為乙個單元處理,類似c# 中"{}"的 作用
語法begin
語句或語句塊
endif-else 條件語句
作用:屬於分支結構,類似c#,同樣是根據條件是否成立來確定程式的執行方向。
語法if(條件)
語句或語句塊1
else
語句或語句塊2
while 迴圈語句
作用:可根據條件重複執行一條語句或乙個語句塊
在迴圈中,可通過continue 和break來控制語句的執行
語法while(條件)
begin
語句或語句塊
[break|continue]
endcase 多分支語句
作用:計算一組條件表示式,並返回其中乙個符合條件的結果
語法case
when 條件1 then 結果1
when 條件2 then 結果2
[else 其他結果]
endcase語句表示如果"條件1"成立,就執行「結果2」
如果省略else 並且when的條件表示式的結果都不為true,則case-end語句返回null
批處理
go 指令
go指令是批處理的標誌。
批處理是一條或多條sql語句的集合,sql server將批處理指令編譯成乙個可執行單元,此單元稱為執行計畫。
每個批處理可以編譯成單個執行計畫,從而提高執行效率。
定義:以一條命令的方式處理一組命令的過程稱為批處理
指令碼。批處理就是對某物件進行批量的處理。 目前比較常見 的批處理 包含兩類:dos批處理和ps批處理
呼~~純手工打,寫下來作為複習。
MySQL學習筆記之03 SQL的分類之DDL
分類 sql分類 操作物件 關鍵字ddl 資料庫 表 create drop alter dmldql dcl ddl 運算元據庫 表 c create 建立 建立資料庫 create database 資料庫名稱 如 create database db1 建立資料庫並判斷是否存在,不存在,再建立...
03 順序程式設計
在計算機高階語言中,資料有兩種表現形式 常量和變數 1 常量 2 變數 變數代表乙個有名字的 具有特定屬性的乙個儲存單位。變數必須先定義,在使用 3 常變數 const int 1 3 變數存在期間其值不能改變。常變數是有名字的不變數,常量是沒有名字的不變數。4 識別符號 在計算機高階語言中,用來對...
每日程式設計題 03
所有題目實現都是採用python 在乙個m行n列的矩陣中,如果查詢到乙個元素為 0 將其所在的行和列的元素都設為 0 需要考慮乙個記錄矩陣,一般都會考慮m行n列的,但是可以行列分開考慮,這樣會減少空間複雜度,只需要 m n def myzero matrix m none len matrix n ...