全域性變數
資料型別轉化
分支結構
迴圈語句
批處理指令 go
declare @變數名 資料型別
declare
@name varcher(8)
declare
@seat
int
賦值的語法如下:
set @變數名 = 值 --類似update 寫法和其他賦值語句一樣,將等號後的東西賦值給等號前的變數。
或 select @變數名 = 值
在涉及到任何區域性變數的操作中,必須將@字元放到變數名前。例子:
set
@name
='張三'
select
@name
= studentname from student
where studentno =
'10011'
;
set語句只能直接賦值,不能向select語句那樣直接將查詢結果賦值給變數。select語句可以直接賦值。
就算自己寫@@也不算是全域性變數例子如下:自己寫的@@變數名是也能賦值等操作,但是會被系統認為@ @變數名
declare @@email
varchar(10
)set @@email
='abc'
select @@email
--從編譯器能看出差別,@@email系統識別為@ @email 從而不是全域性變數而是區域性變數
這是基礎的全域性變數:
@@error:最後乙個t-sql錯誤的錯誤號為提供解決資料型別不相容的情況出現,資料庫提供了乙個資料型別轉化的環節。有以下這幾種方式。@@identity :最後一次插入的標識值
@@servername:本地伺服器的名稱
@@version:sql server的版本資訊
cast(表示式 as 資料型別 )例子如下:
select
'student age is'+10
--報錯
select
'student age is'
+ cast(
10as
varchar
)--查出資料 student age is 10
convert(資料型別,表示式,樣式)//資料型別為轉換後的資料型別例子如下:
select
'student age is '+10
;--報錯
select
'student age is '
+convert
(varchar,10
,133
)--查出資料 student age is 10
但是資料庫中的"+"號更著重與計算而不著重與字串的拼接,如果是這種形式:
select
'10'+10
--查詢結果為20
select
convert
(int,10
)+10-- 查詢結果為 20,注意int 型別中沒有多餘的樣式,所以樣式可以省略。
就是因為"+"更著重於計算,才不會報錯而是直接計算結果。
以下例子:
select
convert
(varchar
,registertime)
from users --將日期格式轉換成字串格式輸出
select
convert
(varchar
,registertime,
110)
from users --將查出的字串格式換成110樣式
select
convert
(varchar
,registertime,
2222
)from users --樣式值是有範圍的而不是隨便乙個就可以。
說明了樣式值是有範圍的。而且這個樣式主要是針對日期的顯示方式。
cast是沒辦法選擇轉換後的樣式。
而convert更偏向於日期格式。
將c#中if-else語句中的大括號換成 begin - end 語句塊
· else 是可選部分
· 如果有多條語句,才需要begin-end 語句塊。
例子如下:
declare
@num
int--set @num = 60
set@num=70
if(@num
>60)
begin
--如果只有乙個語句,就不用寫begin-end 語句塊
--和c# 一樣,會自動讀取緊跟著if語句後的那一條語句
print
(@num
)print
('ok'
)select
*from users where userstateid <
@num
endelse
print
('error'
)--else
--print('error')
if -elseif 語句
例子如下 :
select
*from users
declare
@num
int--set @num = 60
set@num=70
if(@num
>60)
begin
print
('a'
)--如果只有乙個語句,就不用寫begin-end 語句塊
--和c# 一樣,會自動讀取緊跟著if語句後的那一條語句
--print(@num)
--print('ok')
--select * from users where userstateid < @num
endelseif(
@num=60
)begin
print
('b'
)end
else
begin
print
('c'
)end
語法如下
case當不滿足when的所有條件時,用elsewhen 條件1 then 結果1
when 條件2 then 結果2
…else 其他結果
end
else:表示如過所有when條件均不為true時返回的結果如果省略else且when條件都為false時,case語句返回null
then後不允許編寫其他的邏輯操作。
case-end語句中,只要滿足乙個條件,就不會繼續執行下面的條件。
then後跟的是乙個結果,假如跟隨的是查詢語句,返回的是多個結果的結果集,就會報錯。如果跟的查詢語句是乙個結果,那就可以執行成功。
示例如下:
select*,
case
when userroleid =
1then
'a'when userroleid =
2then
'b'when userroleid =
3then
'c'else
'd'end
as'level'
from users
語法:
while (條件)例項如下:begin
語句一語句二
…break
end
declare
@sum
int=
0declare
@iint=1
while(@i
<=
100)
begin
set@sum
=@sum+@i
set@i=@i
+1continue
--return
--break
endprint
@sum
批處理:
是包含乙個或多個sql語句的組,從應用程式一次性的傳送到sql server執行
sql server 將批sql語句編譯成乙個執行單元,此單元被成為執行計畫。
使用批處理文可以提高**的執行效果,通常會將相關業務的**房子同一批處理語句中。
go必須單個一行。
go 不是乙個t-sql命令,只是被編輯工具識別的命令。
所有語句從指令碼開始處或者上乙個go語句開始編譯,知道下乙個go語句或者指令碼結束,將這段**編譯成乙個執行計畫。
T SQL基礎和規範的小知識點
1.char和varchar,以及nchar和nvarchar的區別 1.char和nchar是定長 varchar和nvarchar是變長 2.char和varchar是非unicode資料 nchar和nvarchar是unicode資料 3.char varchar最多儲存8000個英文,40...
nginx CDN中的知識點
server http下面,或者全域性裡面配置 proxy cache path data nginx cache levels 1 2 keys zone static 200m inactive 24h max size 1g proxy cache path指的是存放cache的位置,如果沒有...
c 中的知識點
1.類和結構的區別 1.從儲存上,類儲存在堆上的引用,結構是儲存在棧上的值型別 2.從關鍵字上,類使用class,結構使用struct 3.繼承上,類可以繼承,結構不可以繼承 4.類是引用型別,結構是值型別 2ref和out區別 ref無論是按值傳遞還是按照引用傳遞,任何變數都要初始化 out變數不...