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 '定時三秒后執行'</span>;地址:http://www.cnblogs.com/hoojo/archive/2011/07/15/2107740.html