一:本章目標
1:掌握如何定義變量并賦值
2:如何輸出顯示數據
3:數據類型轉換 cast()和convert()函數
4:掌握邏輯控制語句:
順序結構控制語句:begin-end語句
分支結構控制語句:if-else語句和case-end語句
循環結構控制語句:while語句
5:使用批處理指令完成多語句批量處理(GO指令)
二:變量
定義:變量是存儲數據的容器
變量分為局部變量和全局變量
局部變量的使用是先申明再賦值。而全局變量由系統定義和維護,可以直接使用,但一般不自定義全局變量
1:局部變量:
局部變量的名稱必須以標記@作為前綴
聲明局部變量的語句如下:
declare @variable name(局部變量名稱) DataType(數據類型)
局部變量賦值有兩種方法:使用Set語句或Select語句
例子:
整型:
declare @num int set @num=10 print 'num的值是:'+convert(nvarchar(32),@num)
字符串類型:(char varchar nvarchar)
declare @name nvarchar(32) set @name='趙六' print @name
小數類型(float decimal numeric(18,0))
declare @number decimal(18,2) set @number=1.3 print @number
日期類型(datetime))
declare @mydate datetime set @mydate=GETDATE() print convert(nvarchar(32),@mydate,120)
2:全局變量
SqlServer中的所有全局變量都使用兩個@符號作為前綴
常用的幾個全局變量:
@@error(重點) | 上一條SQL錯誤號 |
@@identity | 最后一次插入的標識值 |
@@rowcount | 受上一個SQL語句影響的行數 |
@@serviceName | 該計算機上的SQL服務名稱 |
@@Version | SQLServer的版本信息 |
注:程序員不能自己定義全局變量,不能給全局變量賦值
三:select語句和set語句區別
Set | Select | |
同時對多個變量賦值 | 不支持 | 支持 |
表達式返回多個值時 | 出錯 | 將返回的最后一個值賦給變量 |
表達式未返回值時 | 變量將賦值為NULL | 變量保持原值 |
eg:
注:被賦值的變量的數據來源于數據表的時候,不要用set,選用select
Declare @stuName nvarchar(32) Select @stuName=studentname from student Where studentno=23
四:數據類型轉換
cast()與convert()函數
基本語法:
cast(表達式 as 數據類型)
convert(數據類型[(長度)],表達式[,樣式])
二者在本質上無任何區別 唯一不同之處是:在將日期時間類型的數據轉換為字符串數據時,convert()函數可以通過第三個參數指定轉換后字符數據的顯示格式不同。
五:邏輯控制語句
1:順序結構控制語句
begin
語句或語句塊
end
類似于C#語言的“{}”表示語句塊的開始和結束
2:If-else條件語句
金典案例:
統計并顯示2013-08-09 的oop考試平均分
如果平均分在70以上,顯示“考試成績優秀”,并顯示前三名學生的考試信息
如果在70分以下,顯示“考試成績較差”,并顯示后三名學生的考試信息
3:while循環語句
注:在SQL 中,只有while一種循環,沒有do-while和for循環
經典案例:
檢查學生“oop”課最近一次考試是否有不及格(60分及格)的學生。
如有,每人加2分,高于95分的學生不再加分,直至所有學生這次考試成績均及格
4:case多分支語句
case-end語句計算一組條件表達式,并返回其中一個符合條件的結果
基本語法:
case
when 條件1 then 結果1
when 條件2 then 結果2
[ else 其他結果]
end
經典案例:
ABCDE五級打分制顯示學生oop課最近一次考試成績(姓名和等級)
A級: 90分以上,B級:80-分,C級: 70-分,D級:60-分,E級:60分以下
五:批處理
GO指令:GO關鍵字標志著批處理的結束,它是一條或多條SQL語句的集合
文章列表