T-SQL語句用於管理SQL Server數據庫引擎實例,建立和管理數據庫對象,以及查詢、插入、修改和刪除數據。 sql
Ø 變量 數據庫
一、 局部變量(Local Variable) 服務器
局部變量是用戶能夠自定義的變量,它的做用範圍是僅在程序內部,在程序中一般用來儲存從表中查詢到的數據或當作程序執行過程當中的暫存變量。使用局部變量必須以@開頭,並且必須用declare命令後才能使用。 網絡
基本語法: app
聲明變量 ide
declare @變量名 變量類型 [@變量名 變量類型] 函數
爲變量賦值 sqlserver
set @變量名 = 變量值; spa
select @變量名 = 變量值; .net
示例:
--局部變量
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進行賦值的時候,若是查詢的結果是多條的狀況下,會利用最後一條數據進行賦值,前面的賦值結果將會被覆蓋。
二、 全局變量(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的字符之後,後面的將不會顯示。
Ø 邏輯控制語句
一、 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
二、 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
三、 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;
四、 其餘語句
批處理語句go
Use master
Go
延時執行,相似於定時器、休眠等
waitfor delay '00:00:03';--定時三秒後執行
print '定時三秒後執行';