--1.变量分为局部变量和全局变量
--局部变量:
--局部变量必须以标记@作为前缀 ,如@age
--局部变量的使用也是先声明,再赋值
--全局变量:
--全局变量必须以标记@ @作为前缀,如@@version
--全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值
--2.局部变量
--1>声明
declare @name varchar(8)
declare @age int
--2>赋值
set @name='jack' --赋值方式一
set @age=20
select @name=firstname from employees
where employeeid=1 --赋值方式二
--3>使用 输出
--convert(数据类型,表达式):将表达式转成指定数据类型
print '姓名:'+@name+',年龄:'+convert(varchar,@age) --以消息形式输出
select @name as '姓名'--以表格形式输出
go
--3.全局变量
--@@ERROR:最后一个T-SQL错误的错误号,如果为0无错
--@@IDENTITY:最后一次插入的标识值
--@@ROWCOUNT:受上一个SQL语句影响的行数
select * from employees
select * from employees where employeeid=1
print '总共查询到'+convert(varchar,@@rowcount)
update employees set birthdate='2011-1-1' where employeeid=1
print '错误代号'+convert(varchar,@@error)
go
--4.if
--格式: if <条件> begin 语句序列 end
-- else begin 语句序列 end
--:说明:当语句序列只有一句时,begin end可省略
--根据产品的名称,输出对应价格等级
declare @price money
declare @pname varchar(10)
set @pname='Chai'
select @price=unitprice from products
where productname=@pname
if @price>50
print '贵'
else if @price>30
print '一般'
else
print '便宜'
go
--5.case end
--格式:CASE
-- WHEN 条件1 THEN 结果1
-- WHEN 条件2 THEN 结果2
-- ……
-- ELSE 其他结果
--END
declare @week int
declare @weekStr varchar(6)
set @week=2--星期一
set @weekStr= case
when @week=1 then '星期一'
when @week=2 then '星期二'
when @week=3 then '星期三'
else '星期天'
end
print @weekStr
go
select productid,productname,unitprice,
case
when unitprice>50 then '贵'
when unitprice>30 then '一般'
else '便宜'
end
as '等级'
from products
go
--6.while循环
--格式:WHILE <条件>
-- BEGIN
-- 语句1
-- 语句2
-- ……
-- BREAK
-- END
declare @i int
set @i=1
while @i<=10
begin
print @i
if @i=5
break;
set @i=@i+1
end
go
--为了本次考试更好,进行一定的提分,
--确保每人的总分都达到200分以上,提分规则很简单,
--先给每人加2分,看是否都通过,如果没有全部通过,
--每人再加2分,再看是否达到200分,如此反复提分,直到所有人都通过为止。
declare @i int --记录加的次数
declare @price money
set @i=0
while
begin
select @price=min(unitprice) from products
if @price>=30
break
update products set unitprice=unitprice+2
set @i=@i+1
end
go
declare @i int --记录加的次数
set @i=0
while 1=1
begin
if not exists(select * from products where unitprice<30)
break
update products set unitprice=unitprice+2
set @i=@i+1
end
go