03SQL程式設計

2021-05-26 05:24:53 字數 3349 閱讀 1472

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 ...