數據庫——SQL SERVER Transact-SQL 程序設計
阿新 • • 發佈:2019-05-12
count ssi col 數據庫服務 其中 指定 cno 控制語句 print
什麽是Transact-SQL?
標準SQL不支持過程化控制, 不能完成復雜的功能.
T-SQL是過程化SQL語言, 是SQL的擴展
增加了過程化語句 (變量,賦值,分支,循環...)
是數據庫服務器端的編程,不同於客戶端的應用程序
不是標準語言 (ORACLE中稱為PL/SQL)
作用:
編寫批處理、存儲過程,函數,觸發器
一 SQL-SERVER批處理
下面的示例創建兩個批處理。
USE STUDB --這是使用STUDB數據庫 GO DECLARE @RS int /* 定義變量@RS*/ SET @RS = (SELECT COUNT(*) /* 變量賦值 */ FROM STUDENT WHERE SDEPT=‘CS‘ ) PRINT ‘計科學院學生人數 ‘ + CAST(@RS AS char (3)) GO
用GO 命令結束一個批處理
兩種類型的註釋方式
一般保存到批處理文件中,以後打開執行,文件名後綴為.SQL
控制語句
BEGIN...END
BEGIN...END:一組要執行的 T-SQL 語句可以包含在 BEGIN...END 中。相當於C語言的復合語句{ }
語法:
BEGIN{ statement | statement_block } END
其中,statement 為語句,statement_block 為語句塊。
IF...ELSE
IF...ELSE:可以根據指定的條件來執行不同的SQL 語句。
語法:
IF Boolean_expression { sql_statement|statement_block } ELSE { sql_statement|statement_block }
IF 語句示例:
IF(SELECT COUNT(*) FROMSC WHERE CNO=1 )>20--單值子查詢可以當做表達式 BEGIN …… END ELSE BEGIN …… END
WHILE 循環
WHILE:可以根據某些條件來執行一條 SQL 語句或一組語句。只要指定的條件為真,則重復執行該語句。
語法:
WHILE Boolean_expression { statement | statement_block } BREAK { statement | statement_block } CONTINUE
例題:
給1號課加分,如果平均分少於 75,每人加1分,如果最高分已經達到95,則停止加分 。
USE STUDB GO WHILE (SELECT AVG(GRADE) FROM SC WHERE CNO=1) < 75 --單值子查詢可以當做表達式 BEGIN --循環體用BEGIN END IF (SELECT MAX(grade) FROM SC WHERE CNO=1) >= 95 BREAK UPDATE SC SET GRADE=GRADE+1 WHERE CNO=1 END PRINT ‘調整完成!‘ GO
變量
兩種類型的變量:
全局變量
全局變量是SQL Server系統內部使用的變量,任何程序均可調用。
局部變量
自定義變量, 作用於局部
全局變量:
SQL Server 中的全局變量都用‘@@‘ 標記作為前綴。
數據庫——SQL SERVER Transact-SQL 程序設計