1.1 局部变量
(1)声明局部变量
DECLARE @变量名 数据类型 DECLARE @name varchar(20) DECLARE @id int
(2)为变量赋值
SET @变量名 =值 --set用于普通的赋值 SELECT @变量名 = 值 --用于从表中查询数据并赋值,,可以一次给多个变量赋值 SET @name=‘张三’ SET @id = 1 SELECT @name = sName FROM student WHERE sId=@id
(3)输出变量的值
SELECT 以表格的方式输出,可以同时输出多个变量;而PRINT 则是以文本的方式输出,一次只能输出一个变量的值。
SELECT @name,@id PRINT @name PRINT @id print @name,@id --错误!!
1.2 全局变量
(1)关于全局变量与局部变量
局部变量:
①局部变量必须以标记@作为前缀 ,如@Age int;
②局部变量需要先声明,再赋值;
全局变量(系统变量):
①全局变量必须以标记@@作为前缀,如@@version;
②全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值;
(2)有哪些全局变量?
补充:@@error变量,在每次执行完SQL语句后,都会为@@error变量赋值,如果上次执行的SQL语句有错,则将@@errro赋值为一个不为0的值,否则(执行没错),则将@@error赋值为0.
(3)怎么使用全局变量
select @@LANGUAGE as '当前使用语言' select @@SERVERNAME as '当前服务器名称' select @@TRANCOUNT as '当前连接打开的事务数' select @@MAX_CONNECTIONS as '可以同时连接的最大数目' select @@VERSION as '当前服务器版本' select @@ERROR as '最后一个T-SQL错误的错误号'
二、选择与循环:if(小苹果) begin 一直听根本停不下来 end
2.1 无处不在的 IF ELSE
(1)条件选择语法
IF(条件表达式) BEGIN --相当于C#里的{ 语句1 …… END --相当于C#里的} ELSE BEGIN 语句1 …… END
(2)假设我们有一张选课成绩表SC,其中包括三个字段{S#,C#,Score},其中S#为学号,C#为课程号,而Score则为成绩。S#为Student表的外键,C#为课程表的外键。那么,根据这三张表,我们有一个需求:
计算平均分数并输出:如果平均分数超过60分输出成绩最高的三个学生的成绩,否则输出后三名的学生;
declare @avgscore float = 0 select @avgscore = AVG(Score) from SC if(@avgscore>60) begin print '前三名' select top 3 s.Sname,sc.Score from Student s join SC sc on s.S#=sc.S# order by Score desc end else begin print '后三名' select top 3 s.Sname,sc.Score from Student s join SC sc on s.S#=sc.S# order by Score asc end
2.2 死了都要爱 WHILE
(1)循环语句语法
WHILE(条件表达式) BEGIN --相当于C#里的{ 语句 …… continue --退出本次循环 BREAK --退出整个循环 END --相当于C#里的}