SQL語句【T-SQL匯總】


今天和大家一起來分享一下SQL語句,T-SQL的用法和語法,以及一些例子,目的是幫助大家一起來復習一下T-SQL的基本語句,以便在項目中更快速的運用,當然對於新手來說就更應該去學習和總結了。我個人感覺數據庫這方面對於程序員來說很重要,無論是對於JAVA程序員還是DOTNET程序員以及其他編程人員來說都是必須掌握的。為了幫助大家更好的來回顧T-SQL,本人利用空閑的時間整理的一下T-SQL的語句和語法。希望對大家有用!

好的!我們先來看幾個圖像:

棱形三角形正方形圓形梯形

上面這些圖形都是用T-SQL實現的,文章的最后我們一起來用T-SQL畫出這些圖形。

首先,我們開始回顧一下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

While比較重要,我們來做個例子加深一下對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的所有內容了,接下來我們來利用最后的時間畫幾個圖形:

直角三角形:

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

圓形輸出結果:

The End! 以上就是本文的所有內容,可能寫的不夠全面,有不足的地方希望大家多多補充,多多發表意見!謝謝!

 

此文是本人的個人觀點,如有不完善或者不准確的地方,歡迎高手進行批評,老鳥進行指點。

作者:青蘋果
座右銘:不斷的反省自己!然后加以改變!
感興趣的技術:.NET、數據庫、JavaScript、C#、ajax、winform、jquery、extjs
本文出處:http://www.cnblogs.com/xinchun/

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM