我個人感覺數(shù)據(jù)庫這方面對于程序員來說很重要,無論是對于JAVA程序員還是DOTNET程序員以及其他編程人員來說都是必須掌握的。為了幫助大家更好的來回顧T-SQL,本人利用空閑的時間整理的一下T-SQL的語句和語法。希望對大家有用!
好的!我們先來看幾個圖像:
棱形三角形正方形圓形矩形梯形
上面這些圖形都是用T-SQL實現(xiàn)的,文章的最后我們一起來用T-SQL畫出這些圖形。
首先,我們開始回顧一下T-SQL的基本語法:
函數(shù)
abs(x):求絕對值;
sqrt(x):求平方根;
rand([0]):返回0~1之間的隨機float值;
floor(X):返回小于或等于X值的最大整數(shù);
例: select floor(34.5) 值為:34
ceiling(X):返回大于或等于X值的最小整數(shù);
例: select ceiling(34.5) 值為:35
round(x,length):四舍五入函數(shù),length為正,則對X小數(shù)位數(shù)四舍五入,length為負,則對X從小數(shù)點左邊length位起四舍五入,若length既為負數(shù)且其絕對值大于X整數(shù)部分 數(shù)字個數(shù),則函數(shù)值為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):求符號函數(shù),X>0則sign(x)=1; X=0 則sign(X)=0;X0 則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
字符串函數(shù)
ASCII(串):返回字符表達式最左端字符的ASCII 碼值;
例: select ASCII('bc') 值為:98
CHAR(ASCII碼):用于將ASCII 碼轉換為字符,如果沒有輸入0 ~ 255 之間的ASCII 碼值,返回值為NULL ;
Lower(串):把字符串全部轉換為小寫;
例: select lower('QingPingGuo') 值為: qingpingguo
Upper(串) :把字符串全部轉換為大寫;
例: select upper('QingPingGuo') 值為: QINGPINGGUO
LTrim(串), RTrim(串):去掉左右空格;
例(去左空格): select '博客園'+LTrim(' 青蘋果 ')+'博客園' 值為:博客園青蘋果 博客園
space(個數(shù)):返回指定個數(shù)的空格;
replicate(串,次數(shù)):將串重復指定次數(shù);
例: select replicate('青蘋果',2) 值為:青蘋果青蘋果
Left(串, 個數(shù)):返回已知串從左邊開始指定個數(shù)的字符;
例: select left('青蘋果在博客園', 4) 值為:青蘋果在
Right(串, 個數(shù)):返回已知串從右邊開始指定個數(shù)的字符;
例: select right('青蘋果在博客園', 4) 值為:在博客園
DataLength(串):返回串的字節(jié)數(shù)長度,計算串尾空格??梢杂盟鼨z查varchar,text等的動態(tài)長度;
例: select datalength('青蘋果在博客園') 值為:14
SubString(串, 開始位置, 長度):返回從字符串左邊'開始位置'起數(shù)量為'長度'的字符串。其中表達式可以是字符串或二進制串或含字段名或字符型變量的表達式。在這里要注意一下SUBSTRING()函數(shù)不能用于TEXT 和IMAGE 數(shù)據(jù)類型;
例: select substring('青蘋果在博客園',5,2) 值為:博客
Len(串) :返回表達式的長度。注意它返回的是字符數(shù),而不是字節(jié)數(shù)。不計算串尾空格;
例: select len('青蘋果cnblogs ') 值為:10
Replace('串1','串2','串3'):用串3替換串1中出現(xiàn)的所有串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
轉換函數(shù)
所謂轉換函數(shù)就是把某種數(shù)據(jù)類型轉換的表達式顯示轉換成另一種數(shù)據(jù)類型的函數(shù)。
CAST(表達式 AS 數(shù)據(jù)類型[(長度)])
例: select '今天是:' + Cast(GetDate() as char(10)) 值為:今天是:07 23 2012
CONVERT(轉換后的目標數(shù)據(jù)類型[(length)],表達式[style])
例: select '今天是:' +convert(char(10),getdate()) 值為:今天是:07 23 2012
下面來看一個求差值的函數(shù)datediff函數(shù);
DATEDIFF(datepart,date1,date2)
例: select datediff(yy,'1988.09.14','2012.12.21') 值為:24 select datediff(mm,'1988.09.14','2012.12.21') 值為:291
聚合函數(shù)
聚合函數(shù)也就是統(tǒng)計函數(shù),它主要是對一組值進行計算,它的功能分別是:求和(sum)、求最小(min)、求最大(max)、求總行數(shù)(count)、求平均值(avg)
例: 求和:select sum(Name) from TableName 求最?。?/SPAN>select min(Name) from TableName 求最大:select max(Name) from TableName 求總數(shù):select count(Name) from TableName 求平均:select avg(Name) from TableName
T-SQL的一些關鍵字
Print 向客戶端返回用戶信息
例: print '青蘋果' 屏幕上就會顯示“青蘋果三個字“
Go 用來通知SQL一批語句的結束
Distinct 去掉重復值
Declare 用來聲明變量
Set 為變量賦值
While 在SQL中用來循環(huán)(好像在SQL中用來做循環(huán)的關鍵字不多)
語法: WHILE 條件表達式> BEGIN 命令行或程序塊> [BREAK] [CONTINUE] [命令行或程序塊] END
While比較重要,我們來做個例子加深一下對While循環(huán)的理解:
declare @a intset @a=1while @a5begin print '青蘋果'set @a=@a+1end
輸出結果:青蘋果
青蘋果
青蘋果
青蘋果
if else 判斷語句
判斷語句用的還是比較多的我們還是來做個例子說明一下;
求:a、b、c三個數(shù)的最大值?
declare @a int,@b int,@c int,@max intset @a=1 set @b=2 set @c=3 if @a>@b set @max=@aelse set @max=@bif @max@c set @max=@c print @max
輸出結果:3
begin end 用來設定一個程序塊,將在BEGIN…END內(nèi)的所有程序視為一個單元執(zhí)行。
Exists 判斷是否存在
Case 也是用來判斷的,和IF語句差不多,它的格式為:
CASE 運算式> WHEN 運算式1> THEN 結果1> … WHEN運算式n> THEN 結果n> [ELSE 結果n+1>] END
Return 用于結束當前程序的執(zhí)行,返回到上一個調(diào)用它的程序或其它程序。在括號內(nèi)可指定一個返回值。
Goto標示符 用來改變程序執(zhí)行的流程,使程序跳到標有標識符的指定的程序行再繼續(xù)往下執(zhí)行。要注意的是作為跳轉目標的標識符可為數(shù)字與字符的組合,但必須以“:”結尾,如:“1023:” “qingpingguo:”
例子: declare @a int set @a = 1 qingpignguo: print @a set @a = @a + 1 while @a 6 goto qingpignguo
輸出結果:12345
最后一個給大家看個好玩的:
Waitfor 用來暫停程序執(zhí)行,直到等待指定時間之后,或所設定的時間已到才繼續(xù)往下運行程序。
語法: waitfor {delay '時間'|time '時間'}
解釋:
(1)‘時間'必須為DATETIME類型數(shù)據(jù),且不能包括日期,如‘10:12:05'
(2)DELAY:用來設定等待的時間長短,最多為24小時。(是一個時間間隔)
(3)TIME:用來設定等待結束的時間點(是一個具體的時間)
例子: waitfor delay '00:00:03' print '你好,我是青蘋果' go
以上就是T-SQL的所有內(nèi)容了,接下來我們來利用最后的時間畫幾個圖形:
直角三角形:
declare @a int set @a=1while(@a11)beginprint replace(space(@a),' ','*')set @a=@a+1end
直角三角形 輸出結果:
正方形:
declare @a intdeclare @b intdeclare @c nvarchar(100)set @a=1set @b=1set @c=''while (@a9)begin while (@b15) begin set @c=@c+'*' set @b=@b+1 end print @c set @a=@a+1end
正方形 輸出結果:
菱形:
declare @a int,@b intset @a=1 set @b=15if(@b%2!=1)print '數(shù)字必須都是奇數(shù)'elsewhile(@a=@b)beginif(@a%2=1)print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)set @a=@a+1endset @a=@a-2while (@a=@b)beginif(@a%2=1)print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)set @a=@a-1 if (@a0)breakend
菱形 輸出結果:
梯形:
declare @a int,@b intset @a=7 set @b=21if(@a%2=1)while(@a@b)beginprint space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)set @a=@a+2end
梯形 輸出結果:
矩形:
declare @a intdeclare @b intdeclare @c nvarchar(100)set @a=1set @b=1set @c=''while (@a9)begin while (@b23) begin set @c=@c+'*' set @b=@b+1 end print @c set @a=@a+1end
矩形 輸出結果:
圓形:
declare @a int,@b intset @a=9 set @b=13while (@a=@b)beginif(@a%2=1)print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)set @a=@a+1endset @a=@a-1beginprint space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)endwhile (@a=@b)beginif(@a%2=1)print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)set @a=@a-1if(@a10)breakendset @a=@a-2beginprint space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)end
圓形輸出結果:
The End! 以上就是本文的所有內(nèi)容,可能寫的不夠全面,有不足的地方希望大家多多補充,多多發(fā)表意見!謝謝!
作者:青蘋果
您可能感興趣的文章:- MySQL語句整理及匯總介紹
- Mysql常用sql語句匯總
- MySql常用操作SQL語句匯總
- 超詳細的SQL語句語法匯總
- MySQL DML語句整理匯總
- Mysql 原生語句中save or update 的寫法匯總
- 基于SQL中的數(shù)據(jù)查詢語句匯總
- MySQL最常見的操作語句小結
- SQl 語句(常見)
- 數(shù)據(jù)庫常用的sql語句匯總