T_SQL編程

Transact-SQL語言是SQL Server爲用戶提供的一種編程語言,是對標準SQL的實現和擴展,它具備標準SQL的主要特色,html

同時增長了變量、運算符、函數和流程控制等語言元素,使得其功能更增強大。sql

 

1.批處理,什麼是批處理數據庫

  所謂 "批" 是從客戶機傳遞到服務器上的一組完整的數據的sql指令。編程

  做用:服務器

    只是通知查詢分析器有多少語句包含在當前批,查詢分析器將兩個Go之間的語句組成一個字符串交給服務器去執行。編程語言

    當前的批處理語句出現錯誤不會影響下一個批處理ide

2.sql 中的變量函數

  變量的聲明:編碼

    declare 變量名  數據類型  [,變量名  數據類型]spa

    注意:變量名前必須加@符號

  變量的賦值:

     單個賦值:set 變量名=值

     多個賦值:select 變量名=值 [,變量名 =值]

     將查詢出的結果賦值:select 變量名=列名1  [,變量名 =列名..] from 表名  [ where .....]

  經常使用的系統變量(全局變量):

   @@ERROR:返回執行上一條T-sql 語句所返回的錯誤號

   @@IDENTITY:返回最近一次插入的identity列的值

   @@PROCID:返回當前存儲過程的Id標識

   @@REMSERVER:返回在登陸記錄中記載遠程SQL server服務器的名字

   @@SPID:返回當前服務器進程的Id標識

   @@TRANCOUNT:返回當前鏈接中,處於活動狀態事務的數目

   @@VERSION:返回當前SQL server服務器的安裝日期、版本、處理器類型

   @@TOTAL_ERRORS:返回自SQLServer服務器啓動後,所遇到的讀寫總數

   @@ROWCOUNT:返回上一條SQL語句所影響到數據行的數目

   注意:系統變量是隻讀的,不能進行修改或賦值操做,通常是將系統變量賦值給局部變量(也就是咱們自定的變量)來使用的

3.控制流程語句

  1. IF...ELSE條件判斷語句

    語法格式:

      IF 判斷的條件

         表達式|SQL1語句

      ELSE

        表達式|SQL2

     例如,根據學號來判斷student數據庫的考試成績(Exam)是否有記錄

      

Declare @stuNo varchar(30)  

      set @stuNo ='135147'

      IFSELECT COUNT(*) FROM Exam where stuNo=@stuNo)=0

       begin  

          PRINT ('學號爲'+@stuNo+'學員沒有考試成績記錄')  

       end

      Else

        begin

           PRINT ('學號爲'+@stuNo+'學員參加了考試,有成績記錄')

        end

 

 

 

      **PRINT:是在屏幕上顯示輸出的信息,beggin - end 至關於其餘語言裏面的{ }(用於執行多個表達式語句)

  2. CASE 語句   

    (1)簡單表達式

        CASE 表達式

          WHEN  與條件比較的值    THEN   表達式

          [WHEN ...N.... THEN ....  ]

          [ELSE  條件都不成立時要執行的表達式]

        END

       eg:

      

 SELECT stuNo 學號 ,stuName 姓名,stuAge, 年齡,

          case   stuSex

             when '' then '先生'

             when '女'  then '女士'

             else  '未知'

          end  '稱呼'
    from Persons

 

 

 

 

    (2)選擇表達式

        CASE

           WHEN 比較的表達式     THEN  表達式

           [WHEN ..N ... THEN ... ]

           [ELSE  條件都不成立時要執行的表達式]

        END 

 

        若是比較的表達式爲true ,就執行THEN 裏面的表達式

        eg:

          

select  examno 考號,stuno 學號,score 分數 ,

            case

               when score<60  then 'D'

               when score<70 then 'C'

               when score<80  then 'B'

               when score<90 then 'A'

            end  '等級'

          from Exam

 

 

 

  3.WHILE循環語句

    語法:

       WHILE  表達式

        Begin

           //T-sql語句

           【BREAK】   

          【CONTINUE】

        End

 

    當表達式的結果爲真時,服務器加將重複執行該循環裏面的T-sql語句

    【BREAK】的做用就是無條件的結束該循環,並開始執行緊跟着End後面的語句。

    【CONTINUE】的做用就是跳過本次循環,開始執行下一次循環。

 

     eg:將不及格的筆試分數提高到2分,並在存在的最低分不低於60分的狀況下,跳出循環

       

 1 declare  @score float
 2 
 3        set @score=0
 4 
 5        while exists (select * from Exam where score<60)
 6 
 7         begin
 8 
 9           update Exam set score+=2 where score<60
10 
11           select @score=MIN(score) from Exam
12 
13           if @score<60
14 
15              continue
16 
17           else
18 
19              break;
20 
21         end

 

 

 

 

4.函數

  1.數學函數

    ABS(數值表達式) :求絕對值,返回數值類型表達式的絕對值    例如: select ABS(-45.3)

    ASCII(字符型表達式):求ASCII碼函數,返回該字符對應的ASCII數字  例如: select ASCII('h')

    AVG([ALL|DISTINCT]表達式)  :求平均值   例如:select AVG(score) from Exam

    COUNT([ALL|DISTINCT]表達式|*) 統計數量   例如: select count(*) from Exam

    CEILING(數值型表達式):上舍。返回最小的大於或等於給定數值型表達式的整數值。

    FLOOR(數值型表達式):下舍。返回最大的小於或等於給定數值表達式的整數值。

    POWER(數值型表達式1,數值型表達式2):乘方運算函數。進行乘方運算,POWER(2,3)表示2的3次方。

    PI():求圓周率。不使用參數

    SQRT(float 型表達式):求指定float表達式的平方根,返回float型的結果。

    ROUND(數值型表達式,整數):四捨五入,將數值表達式四捨五入成整數指定精度的形式。

    RAND (整型表達式):產生隨機數。返回一個0和1之間的隨機數。 

  2.字符串函數

   ---轉發至:https://www.cnblogs.com/ruhaoren/p/12758965.html

SELECT ASCII('ABC');--計算字符串第一個字符的ASCII值
SELECT CHAR(65);--把給定ASCII編碼轉換成字符

SELECT LOWER('AbC');--全轉換爲小寫
SELECT UPPER('aBc');--全轉換爲大寫

SELECT LTRIM('   AAA');--去掉左邊的空格
SELECT RTRIM('AAA   ');--去掉右邊的空格

SELECT LEN('  ABC  ');--計算字符個數,不包含後面的空格
SELECT LEFT('ABCDEFG',3);--從左邊返回指定個數的字符
SELECT RIGHT('ABCDEFG',3);--從右邊返回指定個數的字符
SELECT SUBSTRING('ABCDEFG',3,2);--從第三個字符開始返回2個字符

SELECT CHARINDEX('A', 'CCBBAA'); --返回第一個參數字符串在指定字符串中的位置
SELECT REPLACE('AABBCC','A','D'); --用第三個參數替換第一個參數中的第二個參數所指定字符串

 

 

 

 

  3.日期函數

    GETDATE()

        返回當前的系統時間。例如:SELECT GETDATE() DATEPART(datepart,date)

        以整數形式返回給定 date 型數據的指定日期部分。一個 date 型數據日期部分的取值。

    DATENAME(datepart,date)以字符串形式返回給定 date 型數據的指定日期部分。

   DATEADD(datepart,number,date)在給定當日器變量指定日期部分的基礎上,加上一個整型數值。

   DATEDIFF(datepart,date,enddate)返回開始日期和結束日期在給定日期間的差值。

   DAY(date):返回指定日期 DAY 部分的數值。

   MONTH(date):返回指定日期 MONTH 部分的數值。

   YEAR(date):返回指定日期 YEAR 部分的數值。

 

 

select GETDATE()    --獲取當前系統時間

select DATENAME(YEAR,GETDATE())    --返回日期年份部分

select DATEADD(DAY,1,GETDATE()) --返回在日期天數部分加一的日期

select DATEDIFF(YEAR,'2000-1-1',GETDATE())    --返回兩個日期年份的差值

select DAY(GETDATE())    --返回天數部分

select MONTH(GETDATE())    --返回月份

select YEAR(GETDATE())    --返回年份
相關文章
相關標籤/搜索