第三章 T-SQL 编程
3.1 使用变量 变量是可以存储数据值的对象。可以使用局部变量向SQL语句传递数据。在T-SQL中执行一批SQL语句时,可以声明许多变量以便临时使用。声明变量以后,可以在批处理中用一条T-SQL语句设置该变量的值。该批处理中的下一条语句可以从该变量中检索数值,
3.1 使用变量
变量是可以存储数据值的对象。可以使用局部变量向SQL语句传递数据。在T-SQL中执行一批SQL语句时,可以声明许多变量以便临时使用。声明变量以后,可以在批处理中用一条T-SQL语句设置该变量的值。该批处理中的下一条语句可以从该变量中检索数值,并给出结果。
T-SQL中的变量分为局部变量和全局变量。局部变量的使用也是先声明,再赋值。而全局变量右系统定义和维护,我们可以直接使用,但一般不自定义全局变量。
3.1.1 局部变量
局部变量的名称必须以标记@作为前缀。
声明局部变量的语句如下:
Declare @variable_name DataType
其中, variable_name 为局部变量的名称,DataType为数据类型。
例如:
Declare @name varchar(8) --- 声明一个存放学员姓名的变量name,最多可以存储8个字符
Declare @seat int --- 声明一个存放学员座位号的变量seat
局部变量的赋值有两种方法:使用SET 语句或 Select 语句。
语法:
Set @variable_name = value
或
Select @variable_name = value
假定使用insert语句,已向表stuInfo中插入了如下几条测试数据。
stuName stuNo stuSex stuAge stuSeat stuAddress
张秋丽 s25301 男 18 1 北京海淀
李文才 s25302 男 31 3 地址不详
李斯问 s25303 女 22 2 河南洛阳
欧阳俊雄 s25304 男 28 4 新疆
示例1
/*-- 查找'李文才'的信息 --*/
Declare @name varchar(8) ---学员姓名
set @name = '李文才' ---使用set赋值
select * from stuInfo where stuName = @name
/*-- 查找'李文才'的左右同桌 --*/
Declare @seat int --- 座位号
Select @seat = stuSeat from stuInfo where stuName = @name --- 使用Select赋值
Select * from stuInfo where (stuSeat = @seat + 1) or (stuSeat = @seat - 1)
从示例1可以看出,局部变量可用于在上下语句中传递数据(如本例的座位号@seat)。
set 赋值语句一般用于赋给变量指定的数据常量,如本例“李文才”。
Select 赋值语句一般用于从表中查询数据,然后再赋给变量。需要注意的是,Select 语句需要确保筛选的记录不多于一条。如果查询的记录多于一条,将把最后一条记录的值赋给变量。
3.1.2 全局变量
SQL Server 中的所有全局变量都使用两个@标志作为前缀。
常用的全局变量见下图。
变量 含义
@@ERROR 最后一个T-SQL错误的错误号
@@IDENTITY 最后一次插入的标识值
@@LANGUAGE 当前使用的语言的名称
@@MAX_CONNECTIONS 可以创建的同时连接的最大数目
@@ROWCOUNT 受上一个SQL语句影响的行数
@@SERVERNAME 本地服务器的名称
@@SERVICENAME 该计算机上的SQL服务的名称
@@TIMETICKS 当前计算机上每刻度的微妙数
@@TRANSCOUNT 当前连接打开的事务数
@@VERSION SQL SERVER的版本信息
3.2 输出语句
T-SQL中支持的输出语句,用于输出显示处理的数据结果。
常用的输出语句用两种,它们的语法分别如下。
pint 局部变量或字符串
select 局部变量 AS 自定义列名
其中,第二种方法就是查询语句的特殊应用。
示例2
pint '服务器的名称:' + @@SERVERNAME
select @@SERVERNAME AS '服务器名称'
用print 语句输出的结果将在消息窗口中以文本方式显示,用Select 语句输出的结果将在结果窗口中以表格方式显示。
由于使用print语句要求以单个局部变量或字符串表达式作为参数,所以如果我们这样编写SQL语句将会出错。
print '当前错误号' + @@ERROR
因为全局变量@@ERROR返回的是整型数值。那么如何解决呢?(转换函数,把数值转换成字符串)
print '当前错误号' + convert(varchar(5) , @@ERROR)
理解了输出语句后,我们再看看有关全局变量的示例。
示例3
insert into stuInfo( stuName, stuNo, stuSex, stuAge) values ('梅超风', 's25318', '女', '23')
print '当前错误号' + convert(varchar(5), @ERROR) ---如果大于0,表示上一条语句执行有错误
print '刚才报名的学员,座位号为:' + convert(varchar(5), @@IDENTITY)
Update stuInfo set stuAge = 85 where stuName = '李文才'
print '当前错误号:' + convert(varchar(5), @@ERROR)
print 'SQL Server 的版本' + @@VERSION
GO
@@ERROR 用于表示最近一条SQL语句是否有错误,香港虚拟主机,如果有错误,将返回非零的值。第一次“insert”语句没错,所以为0。第二次“Update”语句违反年龄15~40的检查约束,所以错误号不为零。
@@IDENTITY可用来查询最后插入的标识值(自动编号值)。例如,本例stuInfo表的stuSeat(座位号)字段,我们前面已定义为标识列(自动标号列),香港空间,该列的值将自动生成,所以在插入时不用跳鞋座位号的数据。一旦插入数据后,我们可以通过查询@@IDENTITY全局变量,来查看目前的自动编号值,即“梅超风”的座位号。
3.3 逻辑控制语句
3.3.1 IF-ELSE 条件语句
语法
IF (条件)
语句或语句块
ELSE
语句或语句块
同java语言一样,ELSE为可选。
如果有多条语句,需要使用语句块,语句块使用BEGIN···END表示,其作用类似java语言的“{}”符合。
IF(条件)
BEGIN
语句1
语句2
···
END
ELSE
···
假定我们已向学员成绩表stuMarks中添加以下测试数据。
ExamNo stuNo writtenExam LabExam
s271811 s25303 80 58
s271813 s25302 50 90
s271815 s25302 65 0
s271816 s25301 77 82
示例4
DECLARE @myavg float
Select @myavg = AVG(writtenExam) FROM stuMarks
print '本班平均分' + convert(varchar(5), @myavg)
IF(@myavg > 70)
Begin
print '本班笔试成绩优秀,前三名的成绩为:'
Select top 3 * from stuMarks Order by writtenExam DESC
End
Else
Begin
print '本班笔试成绩较差,后三名的成绩为:'
Select top 3 * from stuMarks order by writtenExam
End
为了把输出的表格数据和文本消息显示在同一个窗口中,需要做如下设置。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用正規表示式從PHP數組中移除重複值的方法:使用正規表示式/(.*)(.+)/i匹配並取代重複項。遍歷數組元素,使用preg_match檢查匹配情況。如果匹配,請跳過值;否則,將其添加到無重複值的新數組中。

C語言是初學者學習程式設計的理想選擇,其優點包括效率、多功能性和可移植性。學習C語言需要:安裝C編譯器(如MinGW或Cygwin)了解變數、資料型別、條件語句和迴圈語句編寫包含主函數和printf()函數的第一個程式透過實戰案例(如計算平均數)練習C語言知識

1、程式設計可用於開發各種軟體和應用程序,包括網站、手機應用程式、遊戲和數據分析工具等。它的應用領域非常廣泛,幾乎涵蓋了所有行業,包括科學研究、醫療保健、金融、教育、娛樂等。 2.學習程式設計可以幫助我們提升問題解決能力和邏輯思考能力。在程式設計過程中,我們需要分析和理解問題,找出解決方案,並將其轉換為程式碼。這種思維方式能夠培養我們的分析和抽象能力,提升我們解決實際問題的能力。

使用Golang建立基於瀏覽器的應用程式Golang結合JavaScript建構了動態的前端體驗。安裝Golang:造訪https://golang.org/doc/install。設定Golang專案:建立一個名為main.go的檔案。使用GorillaWebToolkit:新增GorillaWebToolkit程式碼以處理HTTP請求。建立HTML模板:在templates子目錄中建立index.html,這是主模板。

透過GoGet,可以快速且方便地取得Go模組,步驟如下:在終端機中執行:goget[module-path],其中module-path為模組路徑。 GoGet會自動下載模組及其相依性。安裝的位置由GOPATH環境變數指定。

C++程式設計謎題涵蓋斐波那契數列、階乘、漢明距離、陣列最大值和最小值等演算法和資料結構概念,透過解決這些謎題,可以鞏固C++知識,提升演算法理解和程式設計技巧。

Python透過其易學性和強大功能,是初學者的理想程式設計入門語言。其基礎包括:變數:用於儲存資料(數字、字串、列表等)。資料型態:定義變數中資料的型態(整數、浮點數等)。運算符:用於數學運算和比較。控制流程:控製程式碼執行流程(條件語句、迴圈)。
