T SQL中的知識點

2021-10-10 12:50:25 字數 4626 閱讀 4404

全域性變數

資料型別轉化

分支結構

迴圈語句

批處理指令 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 條件1 then 結果1

when 條件2 then 結果2

…else 其他結果

end

當不滿足when的所有條件時,用else

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變數不...