SQL Server Transact-SQL 編程

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 '定時三秒後執行';

相關文章
相關標籤/搜索