批处理:go
建库,建表语句,存储过程,视图等必须在句末加go
批处理中的错误:
1、如果批处理语句中出现编译错误,可使执行计划无法编译。
因此未执行批处理中的任何语句
2、批处理处理中的语句,出现错误,不同批次的语句执行结
果不受影响,因为他们已经完成。
局部变量:
局部变量的定义需要用 @ 作为前缀,如 @ age
局部变量的使用是先声明后使用
局部变量的定义只在定义他的局部范围内有效
全局变量
全局变量必须一 @ @ 作为前缀 如:@ @ version
全局变量是由系统定义和维护,我们只能读取,不能修改
全局变量在整个sql环境下都可以被访问或者调用
局部变量的定义:
declare @name char(20)
赋值
set @name='老王'
set @变量名 =值:用于普通的赋值
select @name='老王'
select @变量名=值:用于从表中查询数据并赋值
但是用select赋值必须确保筛选出的记录只有一条,否则输出为最后一条
例:
declare @name char(20)
--set @name='老周'
select @name=stuname from stuinfo order by stuid desc
print @@error -----错误代号
print @name
or
用select输出:
select * from stuinfo where stuid=@sid=@sid-1 or stuid=@sid+1
输出语句:
print 变量或表达式:以消息形式进行显示
select 变量或表达式:以表格(选择集)形式进行显示
convert:数据类型转换函数
print '当前函数值:'+convert(varchar(20),@@identity)
convert(数据类型,变量名)
if-else逻辑控制语句
if(条件)
begin
语句1
语句2
......
end
else
begin
语句1
语句2
......
end
case-end多分支语句
case
when 条件1 then 结果1
when 条件2 then 结果2
......
else 其他结果
end
例:
select stuname as 姓名,成绩=case
when score>=90 when 'A'
when score>=80 when 'B'
when score>=70 when 'C'
when score>=60 when 'D'
else 'E'
end
from stuinfo,stumarks where
stuinfo.stuid=stuimarks.stuid and subject='sql'
while...continue...break语句
while
begin
语句1
语句2
......
break
end
例:
declare @mark int,@ markid int
select @mark=score,@markid=stumarkno fo stumarks where subject='html'
while @mark<90
begin
update stumarks set score =@mark+1 where stumarksno=@markid
select @mark=score,@maarkid=stumarksno from stumarks where
subject='html'
end