1.基本概念
SQL Server 2008在支持標准SQL語言的同時,對其進行了擴充,引入了T-SQL,即Transact-SQL,T-SQL是使用SQL Server 2008的核心,通過它,可以定義變量、使用流控制語句、自定義函數、自定義存儲過程等,極大地擴展了SQL Server 2008的功能。
1.標識符
數據庫對象的名稱即為其標識符
2.標識符的種類
1)常規標識符 2)分隔標識符
3.常規標識符規則
1)第一個字符必須是英文大小寫、 下划線(_)、at符號(@)或者數字符號(#)
2)首字符可以用到的、十進制數字、美元符號($)
4.標識符不能是Transact-SQL保留字
5.不允許嵌入空格或其他特殊字符
批處理
批處理是包含一個或多個Transact-SQL語句的組,從應用程序一次性地發送到SQL Server 2008進行執行。可以理解為選中SQL語句塊執行它,SQL Server會一行一行地執行它。
注釋
--(雙連字符)
/*...*/(斜杠-星號字符對)
2.常量和變量
常量
文字值或標量值
- 字符串常量:單引號內
- Unicode字符串:前綴必須是大寫N
- 二進制常量:前綴0x,后面是十六進制字符串
- bit常量:0和1
- datetime常量
- integer常量
- decimal常量
- float和real常量:使用科學計數法
- money常量
變量
局部變量
用DECLARE語句聲明,作用范圍僅在程序內部。名稱以@開頭。
DECLARE @variable_name datatype
[,@variable_name datatype]...
賦值
SET @local_variable=expression
SELECT @local_variable=expression[,...n]
全局變量
事先定義好的,用戶不能去創建和修改。以@@開頭。
輸出
PRIINT
PRINT msg_str|@local_variable|string_expr
運算符
- 算術運算符 + - * / %
DECLARE @a INT, @b INT, @z INT
SET @a=18
SET @b=4
SET @z=@a+@b
PRINT @z
- 賦值運算符 =
- 位運算符 & | ^
- 比較運算符
- 邏輯運算符 返回TRUE或FALSE。AND BETWEEN IN LIKE NOT OR
- 連接運算符 + (字符串拼接)
- 一元運算符 +正 -負 ~位反
- 運算符的優先級
3.流控制語句
1. BEGIN...END
將多個語句組合成一個邏輯塊
BEGIN
兩條或兩條以上的語句
...
END
2. IF...ELSE
DECLARE @m INT
SET @m=12
IF @m>0
PRINT 'TRUE'
ELSE
PRINT 'FALSE'
3. WHILE
--求1到10之間的整數和
DECLARE @x INT,@sum INT
SET @x=1
SET @sum=0
WHILE @x<=10
BEGIN
SET @sum=@sum+@x
SET @x=@x+1
END
PRINT @sum
4. BREAK與CONTINUE
5. CASE
根據表達式的真假來確定是否返回某個值
--根據學生分數給出判斷
DECLARE @grade INT,@msg VARCHAR(10)
SET @grade=13
SET @msg=
CASE
WHEN @grade>=90 AND @grade<=100 THEN 'excellent'
WHEN @grade>=70 AND @grade<90 THEN 'good'
WHEN @grade>=60 AND @grade<70 THEN 'pass'
ELSE 'fail'
END
PRINT @msg
6. WAITFOR
WAITFOR延遲語句可以將它之后的語句在一個指定的時間間隔之后執行,或在未來的某一指定時間執行。
WAITFOR DELAY 'time'|time 'time'
delay等待時間,time結束時間點 格式為'hh:mm:ss'
--3秒后顯示‘傻瓜你好’
WAITFOR DELAY '00:00:03'
PRINT '傻瓜你好'
--16點15分顯示‘傻瓜你好’
WAITFOR TIME '16:15:00'
PRINT '傻瓜你好'
7. GOTO
改變程序執行的流程,使程序跳到標識符指定的程序行繼續往下執行。
GOTO 標識符
標識符需要在其名稱后加上一個冒號:
8. RETURN
從查詢或過程中無條件退出
RETURN [整數值]
--RETURN
DECLARE @m INT
SET @m=3
IF @m>0
PRINT '遇到RETURN之前'
RETURN
PRINT '遇到RETURN之后'