T-SQL的基本語句,大部分人都很熟悉了,今天幫客之家小編和大家一起來分享一下SQL語句,T-SQL的用法和文法,以及一些例子,目的是協助大家一起來複習一下T-SQL的基本語句,以便在項目中更快速的運用,當然對於新手來說就更應該去學習和總結了。我個人感覺資料庫這方面對於程式員來說很重要,無論是對於JAVA程式員還是DOTNET程式員以及其他編程人員來說都是必須掌握的。為了協助大家更好的來回顧T-SQL,幫客之家小編利用閒置時間整理的一下T-SQL的語句和文法。希望對大家有用!
| MySQL資料庫管理工具64Bit |
http://www.bkjia.com/soft/3999.html |
| MySQL資料庫管理員32Bit |
http://www.bkjia.com/soft/4554.html |
好的!我們先來看幾個映像:
棱形
三角形
正方形
圓形
矩形
梯形
上面這些圖形都是用T-SQL實現的,文章的最後我們一起來用T-SQL畫出這些圖形。
[page_break]
首先,我們開始回顧一下T-SQL的基本文法:
函數
abs(x):求絕對值;
例: select abs(-3) 值為:3
sqrt(x):求平方根;
例: select sqrt(4) 值為:2.0
rand([0]):返回0~1之間的隨機float值;
floor(X):返回小於或等於X值的最大整數;
例: select floor(34.5) 值為:34
ceiling(X):返回大於或等於X值的最小整數;
例: select ceiling(34.5) 值為:35
round(x,length):四捨五入函數,length為正,則對X小數位元四捨五入,length為負,則對X從小數點左邊length位起四捨五入,若length既為負數且其絕對值大於X整數部分 數字個數,則函數值為0;
例: select ROUND(63.567, 1) 值為:63.600
select ROUND(63.567, -1) 值為:60.000
select ROUND(63.567, 0) 值為:64.000
select ROUND(63.567, -3) 值為:0.000
Sign(X):求符號函數,X>0則sign(x)=1; X=0 則sign(X)=0;X<0 則sign(X)=-1
例: select sign(-3) 值為:-1
select sign(3) 值為:1
select sign(0) 值為:0
Power(X,y):求X的y次方;
例: select power(4,2) 值為 :16
字串函數
ASCII(串):返回字元運算式最左端字元的ASCII 碼值;
例: select ASCII('bc') 值為:98
CHAR(ASCII碼):用於將ASCII 碼轉換為字元,如果沒有輸入0 ~ 255 之間的ASCII 碼值,傳回值為NULL ;
例: select char(97) 值為:a
Lower(串):把字串全部轉換為小寫;
例: select lower('QingPingGuo') 值為: qingpingguo
Upper(串) :把字串全部轉換為大寫;
例: select upper('QingPingGuo') 值為: QINGPINGGUO
LTrim(串), RTrim(串):去掉左右空格;
例(去左空格): select '部落格園'+LTrim(' 青苹果 ')+'部落格園' 值為:部落格園青苹果 部落格園
space(個數):返回指定個數的空格;
replicate(串,次數):將串重複指定次數;
例: select replicate('青苹果',2) 值為:青苹果青苹果
Left(串, 個數):返回已知串從左邊開始指定個數的字元;
例: select left('青苹果在部落格園', 4) 值為:青苹果在
Right(串, 個數):返回已知串從右邊開始指定個數的字元;
例: select right('青苹果在部落格園', 4) 值為:在部落格園
DataLength(串):返回串的位元組數長度,計算串尾空格。可以用它檢查varchar,text等的動態長度;
例: select datalength('青苹果在部落格園') 值為:14
SubString(串, 開始位置, 長度):返回從字串左邊’開始位置’起數量為’長度’的字串。其中運算式可以是字串或二進位串或含欄位名或字元型變數的運算式。在這裡要注意一下SUBSTRING()函數不能用於TEXT 和IMAGE 資料類型;
例: select substring('青苹果在部落格園',5,2) 值為:部落格
Len(串) :返回運算式的長度。注意它返回的是字元數,而不是位元組數。不計算串尾空格;
例: select len('青苹果cnblogs ') 值為:10
Replace('串1','串2','串3'):用串3替換串1中出現的所有串2字元;
例: select replace('青苹果在北京','北京','部落格園') 值為:青苹果在部落格園
Stuff(串1, 開始位置, 長度, 串2):刪除串1指定位置開始指定長度的字串,並在指定位置插入串2;
例: select stuff('青苹果是程式猿嗎?',5,3,'攻城獅') 值為:青苹果是攻城獅嗎?
reverse(串) :將指定的字串的字元排列順序顛倒;
例: select reverse('12345') 值為:54321
charindex(串1,串2):返回串1在串2的開始位置,可從所給出的‘開始位置’進行尋找;
例: select charindex('guo','qingpingguo') 值為:9
轉換函式
所謂轉換函式就是把某種資料類型轉換的運算式顯示轉換成另一種資料類型的函數。
CAST(運算式 AS 資料類型[(長度)])
例: select '今天是:' + Cast(GetDate() as char(10)) 值為:今天是:07 23 2012
CONVERT(轉換後的目標資料類型[(length)],運算式[style])
例: select '今天是:' +convert(char(10),getdate()) 值為:今天是:07 23 2012
下面來看一個求差值的函數datediff函數;
DATEDIFF(datepart,date1,date2)
例: select datediff(yy,'1988.09.14','2012.12.21') 值為:24
select datediff(mm,'1988.09.14','2012.12.21') 值為:291
彙總函式
彙總函式也就是統計函數,它主要是對一組值進行計算,它的功能分別是:求和(sum)、求最小(min)、求最大(max)、求總行數(count)、求平均值(avg)
例: 求和:select sum(Name) from TableName
求最小:select min(Name) from TableName
求最大:select max(Name) from TableName
求總數:select count(Name) from TableName
求平均:select avg(Name) from TableName
T-SQL的一些關鍵字
Print 向用戶端返回使用者資訊
例: print '青苹果' 螢幕上就會顯示“青苹果三個字“
Go 用來通知SQL一批語句的結束
Distinct 去掉重複值
Declare 用來聲明變數
例: declare @a int
Set 為變數賦值
例: set @a='青苹果'
While 在SQL中用來迴圈(好像在SQL中用來做迴圈的關鍵字不多)
文法: WHILE <條件運算式>
BEGIN
<命令列或程式塊>
[BREAK]
[CONTINUE]
[命令列或程式塊]
END
Whil比較重要,我們來做個例子加深一下對While迴圈的理解:
declare @a int
set @a=1
while @a<5
begin
print '青苹果'
set @a=@a+1
end
輸出結果:青苹果
青苹果
青苹果
青苹果
if else 判斷語句
判斷語句用的還是比較多的我們還是來做個例子說明一下;
求:a、b、c三個數的最大值?
declare @a int,@b int,@c int,@max int
set @a=1 set @b=2 set @c=3
if @a>@b
set @max=@a
else
set @max=@b
if @max<@c
set @max=@c
print @max
輸出結果:3
begin end 用來設定一個程式塊,將在BEGIN…END內的所有程式視為一個單元執行。
Exists 判斷是否存在
Case 也是用來判斷的,和IF語句差不多,它的格式為:
CASE <運算式>
WHEN <運算式1> THEN <結果1>
…
WHEN<運算式n> THEN <結果n>
[ELSE <結果n+1>]
END
Return 用於結束當前程式的執行,返回到上一個調用它的程式或其它程式。在括弧內可指定一個傳回值。
Goto標示符 用來改變程式執行的流程,使程式跳到標有標識符的指定的程式行再繼續往下執行。要注意的是作為跳轉目標的標識符可為數字與字元的組合,但必須以“:”結尾,如:“1023:” “qingpingguo:”
例子:
declare @a int
set @a = 1
qingpignguo:
print @a
set @a = @a + 1
while @a < 6
goto qingpignguo
輸出結果:12345
最後一個給大家看個好玩的:
Waitfor 用來暫停程式執行,直到等待指定時間之後,或所設定的時間已到才繼續往下運行程式。
文法: waitfor {delay '時間'|time '時間'}
解釋:
(1)‘時間’必須為DATETIME類型資料,且不能包括日期,如‘10:12:05’
(2)DELAY:用來設定等待的時間長短,最多為24小時。(是一個時間間隔)
(3)TIME:用來設定等待結束的時間點(是一個具體的時間)
例子:
waitfor delay '00:00:03'
print '你好,我是青苹果'
go
以上就是T-SQL的所有內容了。
[page_break]
接下來我們來利用最後的時間畫幾個圖形:
直角三角形:
declare @a int
set @a=1
while(@a<11)
begin
print replace(space(@a),' ','*')
set @a=@a+1
end
直角三角形 輸出結果:
正方形:
declare @a int
declare @b int
declare @c nvarchar(100)
set @a=1
set @b=1
set @c=''
while (@a<9)
begin
while (@b<15)
begin
set @c=@c+'*'
set @b=@b+1
end
print @c
set @a=@a+1
end
正方形 輸出結果:
菱形:
declare @a int,@b int
set @a=1 set @b=15
if(@b%2!=1)
print '數字必須都是奇數'
else
while(@a<=@b)
begin
if(@a%2=1)
print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
set @a=@a+1
end
set @a=@a-2
while (@a<=@b)
begin
if(@a%2=1)
print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
set @a=@a-1
if (@a<0)
break
end
菱形 輸出結果:
梯形:
declare @a int,@b int
set @a=7 set @b=21
if(@a%2=1)
while(@a<@b)
begin
print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
set @a=@a+2
end
梯形 輸出結果:
矩形:
declare @a int
declare @b int
declare @c nvarchar(100)
set @a=1
set @b=1
set @c=''
while (@a<9)
begin
while (@b<23)
begin
set @c=@c+'*'
set @b=@b+1
end
print @c
set @a=@a+1
end
矩形 輸出結果:
圓形:
declare @a int,@b int
set @a=9 set @b=13
while (@a<=@b)
begin
if(@a%2=1)
print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
set @a=@a+1
end
set @a=@a-1
begin
print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
end
while (@a<=@b)
begin
if(@a%2=1)
print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
set @a=@a-1
if(@a<10)
break
end
set @a=@a-2
begin
print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
end
圓形輸出結果:
推薦閱讀:
SQLcode錯誤碼匯總和sqlstate=37000的解決方案