[T-SQL]從變量與數據類型提及

 1.變量java

學習計算機語言,不免不碰到這個名詞,不過咱這裏說的是MSSQL(微軟SQL Server產品)裏的數據庫語言實現。c++

稍微對程序比較嚴謹的語言都要求使用以前都要聲明變量先,好比c.c++,java,c#之類,T-SQL也沒有例外。sql

能夠試驗下:數據庫

 

  
  
  
  
  1. SELECT @hello 

會有以下相似錯誤信息:c#

 

  
  
  
  
  1. [Err] 42000 - [SQL Server]必須聲明標量變量 "@hello"。 

聲明變量使用以下關鍵字:DECLARE(不區分大小寫的)ide

聲明變量須要使用類型,由於「我」要知道你這玩意究竟是整數仍是日期仍是字符串,我該給你分配多少字節空間啊。學習

2.數據類型spa

數據類型就是以前提到的整型,字符之類的類別。設計

咱們的格式是:code

 

  
  
  
  
  1. DECLARE 變量名 類型 

我這裏約定下,關鍵字和類型等用大寫,變量名小寫,你能夠不這樣子,但但願你遵照「咱們學堂」的規範,呵呵。

先說下,TSQL這孩子變量分好多哇,跟其餘語言差很少(其餘語言有,局部變量,全局變量之類的,俺可沒搞什麼大的特殊)

這裏先用局部變量(Local Variant),T-SQL局部變量是@後接變量名字,

 

  
  
  
  
  1. DECLARE @hello VARCHAR(30) 

俺能夠一次聲明多個呢,

  
  
  
  
  1. DECLARE @i INT, 
  2.         @j INT 

固然了聲明後,俺們的值是個NULL(注意不是'NULL'字符串哦)

SELECT @i 您看看吧

你坑我啊,光個NULL怎麼用,別急,咱們看看怎麼給他們賦值,不會和其餘語言同樣直接用賦值運算符=吧,對頭不過語法稍微區別下

3.賦值

 

  
  
  
  
  1. SET @i=123 

此次看看吧SELECT @i

固然SET也能夠用SELECT代替。

稍微來點複雜的:

  
  
  
  
  1. --===================== 
  2. --計算面積@area=@m*@n 
  3. --===================== 
  4. DECLARE @m INT, 
  5.         @n INT, 
  6.         @area INT 
  7. SET @m=12 
  8. SET @n=5 
  9. SET @area=@m*@n 
  10. SELECT @area 

賦值也能夠是sql執行的結果:

  
  
  
  
  1. USE pubs 
  2. GO 
  3.  
  4. DECLARE @count INT 
  5.  
  6. SET @count=(SELECT COUNT(*) FROM authors) 
  7.  
  8. SELECT @count 
  9. GO 

 變量也能夠用在sql裏,好比下面:

 

  
  
  
  
  1. USE pubs 
  2. GO 
  3.  
  4. DECLARE @city CHAR(20) 
  5. SET @city='Oakland' 
  6.  
  7. SELECT RTRIM(au_fname) + ' ' + RTRIM(au_lname) AS Name 
  8. FROM authors 
  9. WHERE city = @city 
  10.  
  11. GO 

4.流程控制

分支條件語句這個太常見了,順序、分支和重複(循環)是結構化程序設計的3個流程,不得不說。

咱們看看T-SQL裏的條件語句怎麼寫,關鍵字IF很少說了。

以下:

 

  
  
  
  
  1. DECLARE @i INT 
  2. SET @i=123 
  3. IF @i>0 (SELECT 'positive') 

一條語句能夠這麼幹,多條語句塊怎麼整呢,彆着急,BEGIN...END啊,(若是沒在一些語言裏見過,c相似的裏面的{}總該行了吧)

 

  
  
  
  
  1. DECLARE @i INT 
  2. SET @i=123 
  3. IF @i>0  
  4.     BEGIN 
  5.         SELECT 'positive' 
  6.         SELECT 'not negative' 
  7.     END 
  8. ELSE 
  9.     SELECT 'OMG' 

沒錯ELSE也支持的。

也能夠嵌套。

循環LOOP

使用關鍵字WHILE

  
  
  
  
  1. DECLARE @i INT 
  2. SET @i=0 
  3.  
  4. WHILE @i<10 
  5.     BEGIN 
  6.         SET @i=@i+1 
  7.         PRINT '@i='+CAST(@i AS CHAR) 
  8.     END 

while也能夠嵌套。

5.附錄:數據類型總結

比特bit:取值0,1和NULL

整型:

tinyint:取值0-255,存儲大小1個字節

smallint:2個字節,-32768~+32767

int:4個字節

bigint:8個字節

 

如下來自文檔:

decimal 和 numeric 

decimal

從 -10^38 +1 到 10^38 –1 的固定精度和小數位的數字數據。

numeric

功能上等同於 decimal

money 和 smallmoney

money

貨幣數據值介於 -2^63 (-922,337,203,685,477.5808) 與 2^63 - 1 (+922,337,203,685,477.5807) 之間,精確到貨幣單位的千分之十。

smallmoney

貨幣數據值介於 -214,748.3648 與 +214,748.3647 之間,精確到貨幣單位的千分之十。

近似數字

float

從 -1.79E + 308 到 1.79E + 308 的浮點精度數字。

real

從 -3.40E + 38 到 3.40E + 38 的浮點精度數字。

datetime 和 smalldatetime

datetime

從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時間數據,精確到百分之三秒(或 3.33 毫秒)。

smalldatetime

從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時間數據,精確到分鐘。

字符串

char

固定長度的非 Unicode 字符數據,最大長度爲 8,000 個字符。

varchar

可變長度的非 Unicode 數據,最長爲 8,000 個字符。

text

可變長度的非 Unicode 數據,最大長度爲 2^31 - 1 (2,147,483,647) 個字符。

Unicode 字符串

nchar

固定長度的 Unicode 數據,最大長度爲 4,000 個字符。

nvarchar

可變長度 Unicode 數據,其最大長度爲 4,000 字符。sysname 是系統提供用戶定義的數據類型,在功能上等同於 nvarchar(128),用於引用數據庫對象名。

ntext

可變長度 Unicode 數據,其最大長度爲 2^30 - 1 (1,073,741,823) 個字符。

二進制字符串

binary

固定長度的二進制數據,其最大長度爲 8,000 個字節。

varbinary

可變長度的二進制數據,其最大長度爲 8,000 個字節。

p_w_picpath

可變長度的二進制數據,其最大長度爲 2^31 - 1 (2,147,483,647) 個字節。

其它數據類型

cursor

遊標的引用。

sql_variant

一種存儲 SQL Server 支持的各類數據類型(textntexttimestampsql_variant 除外)值的數據類型。

table

一種特殊的數據類型,存儲供之後處理的結果集。

timestamp

數據庫範圍的惟一數字,每次更新行時也進行更新。

uniqueidentifier

全局惟一標識符 (GUID)。

相關文章
相關標籤/搜索