SQL語句:T-SQL的用法和文法

來源:互聯網
上載者:User

  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的解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.