SQL Server Transact-SQL 編程
T-SQL語句用于管理SQL Server數據庫引擎實例,創建和管理數據庫對象,以及查詢、插入、修改和刪除數據。
? 變量
???? 1、 局部變量(Local Variable)
????????? 局部變量是用戶可以自定義的變量,它的作用范圍是僅在程序內部,在程序中通常用來儲存從表中查詢到的數據或當做程序執行過程中的暫存變量。使用局部變量必須以@開頭,而且必須用declare命令后才能使用。
?
????????? 基本語法:
聲明變量
declare
@變量名 變量類型 [@變量名 變量類型]
為變量賦值
set
@變量名 = 變量值;
select
@變量名 = 變量值;
?????????
????????? 示例:
--局部變量
declare
@id
char
(10)--聲明一個長度的變量id
declare
@age
int
--聲明一個int類型變量age
select
@id = 22 --賦值操作
set
@age = 55 --賦值操作
print
convert
(
char
(10), @age) +
'#'
+ @id
select
@age, @id
go
?
簡單hello world示例
declare
@name
varchar
(20);
declare
@
result
varchar
(200);
set
@name =
'jack'
;
set
@
result
= @name +
' say: hello world!'
;
select
@
result
;
?
查詢數據示例
declare
@id
int
, @name
varchar
(20);
set
@id = 1;
select
@name = name
from
student
where
id = @id;
select
@name;
?
select賦值
declare
@name
varchar
(20);
select
@name =
'jack'
;
select
*
from
student
where
name = @name;
????????? 從上面的示例可以看出,局部變量可用于程序中保存臨時數據、傳遞數據。Set賦值一般用于賦值指定的常量個變量。而select多用于查詢的結果進行賦值,當然select也可以將常量賦值給變量。
????????? 注意:在使用select進行賦值的時候,如果查詢的結果是多條的情況下,會利用最后一條數據進行賦值,前面的賦值結果將會被覆蓋。
?
???? 2、 全局變量(Global Variable)
????????? 全局變量是系統內部使用的變量,其作用范圍并不局限于某一程序而是任何程序均可隨時調用的。全局變量一般存儲一些系統的配置設定值、統計數據。
全局變量
select
@@
identity
;--最后一次自增的值
select
identity
(
int
, 1, 1)
as
id
into
tab
from
student;--將studeng表的烈屬,以/1自增形式創建一個tab
select
*
from
tab;
select
@@
rowcount
;--影響行數
select
@@cursor_rows;--返回連接上打開的游標的當前限定行的數目
select
@@error;--T-SQL的錯誤號
select
@@procid;
?
--配置函數
set
datefirst 7;--設置每周的第一天,表示周日
select
@@datefirst
as
'星期的第一天'
, datepart(dw, getDate())
AS
'今天是星期'
;
select
@@dbts;--返回當前數據庫唯一時間戳
set
language
'Italian'
;
select
@@langId
as
'Language ID'
;--返回語言id
select
@@language
as
'Language Name'
;--返回當前語言名稱
select
@@lock_timeout;--返回當前會話的當前鎖定超時設置(毫秒)
select
@@max_connections;--返回SQL Server 實例允許同時進行的最大用戶連接數
select
@@MAX_PRECISION
AS
'Max Precision'
;--返回decimal 和numeric 數據類型所用的精度級別
select
@@SERVERNAME;--
SQL
Server 的本地服務器的名稱
select
@@SERVICENAME;--服務名
select
@@SPID;--當前會話進程id
select
@@
textSize
;
select
@@version;--當前數據庫版本信息
?
--系統統計函數
select
@@CONNECTIONS;--連接數
select
@@PACK_RECEIVED;
select
@@CPU_BUSY;
select
@@PACK_SENT;
select
@@TIMETICKS;
select
@@IDLE;
select
@@TOTAL_ERRORS;
select
@@IO_BUSY;
select
@@TOTAL_READ;--讀取磁盤次數
select
@@PACKET_ERRORS;--發生的網絡數據包錯誤數
select
@@TOTAL_WRITE;--sqlserver執行的磁盤寫入次數
?
? 輸出語句
???? T-SQL支持輸出語句,用于顯示結果。常用輸出語句有兩種:
???? 基本語法
print
變量或表達式
select
變量或表達式
????
????? 示例
select
1 + 2;
select
@@
language
;
select
user_name();
?
print
1 + 2;
print
@@
language
;
print
user_name();
???? print在輸出值不少字符串的情況下,需要用convert轉換成字符串才能正常輸出,而且字符串的長度在超過8000的字符以后,后面的將不會顯示。
?
? 邏輯控制語句
???? 1、 if-else判斷語句
????????? 語法
if
<表達式>
<命令行或程序塊>
else
if
<表達式>
<命令行或程序塊>
else
<命令行或程序塊>
????????? 示例
if簡單示例
if
2 > 3
print
'2 > 3'
;
else
print
'2 < 3'
;
?
if
(2 > 3)
print
'2 > 3'
;
else
if
(3 > 2)
print
'3 > 2'
;
else
print
'other'
;
?
簡單查詢判斷
declare
@id
char
(10),
@pid
char
(20),
@name
varchar
(20);
set
@name =
'廣州'
;
select
@id = id
from
ab_area
where
areaName = @name;
select
@pid = pid
from
ab_area
where
id = @id;
print
@id +
'#'
+ @pid;
?
if
@pid > @id
begin
print
@id +
'%'
;
select
*
from
ab_area
where
pid
like
@id +
'%'
;
end
else
begin
print
@id +
'%'
;
print
@id +
'#'
+ @pid;
select
*
from
ab_area
where
pid = @pid;
end
go
????
?????? 2、 while…continue…break循環語句
????????? 基本語法
while
<表達式>
begin
<命令行或程序塊>
[
break
]
[
continue
]
<命令行或程序塊>
end
????????? 示例
--while循環輸出到
declare
@i
int
;
set
@i = 1;
while
(@i < 11)
begin
print
@i;
set
@i = @i + 1;
end
go
?
--
while
continue
輸出到
declare
@i
int
;
set
@i = 1;
while
(@i < 11)
begin
if
(@i < 5)
begin
set
@i = @i + 1;
continue
;
end
print
@i;
set
@i = @i + 1;
end
go
?
--
while
break
輸出到
declare
@i
int
;
set
@i = 1;
while
(1 = 1)
begin
print
@i;
if
(@i >= 5)
begin
set
@i = @i + 1;
break
;
end
set
@i = @i + 1;
end
go
????
???? 3、 case
????????? 基本語法
case
when
<條件表達式>
then
<運算式>
when
<條件表達式>
then
<運算式>
when
<條件表達式>
then
<運算式>
[
else
<運算式>]
end
????????? 示例
select
*,
case
sex
when
1
then
'男'
when
0
then
'女'
else
'火星人'
end
as
'性別'
from
student;
?
select
areaName,
'區域類型'
=
case
when
areaType =
'省'
then
areaName + areaType
when
areaType =
'市'
then
'city'
when
areaType =
'區'
then
'area'
else
'other'
end
from
ab_area;
????
?????? 4、 其他語句
批處理語句go
Use
master
Go
?
延時執行,類似于定時器、休眠等
waitfor
delay
'00:00:03'
;--定時三秒后執行
print
'定時三秒后執行'
;
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

