声明变量
局部变量
我们先从sql的声明局部变量开始:
--声明两个变量
declare @name varchar(20),@age int
--赋值
--set
set @name = '法外狂徒张三'
set @age = 20
-- select
select @name = '刑部尚书罗翔',@age = 22
--输出
print @name
print @age
总结一下,set只能跟一个变量,而select可以跟多个
根据输出不难发现,输出不会全部输出,因为第二个select赋值覆盖了之前的内容所以输出后者。
全局变量
全局变量是事先定义好的,用户无法修改,而任何程序均可调用。
全局变量以@@开头。
运算符
算数运算符
和C/C++一样,都有+,-,*,/,%运算。
--算数运算符
declare @a int,@b int
set @a = 9
set @b = 9
print @a+@b
print @a*@b
print @a/@b
print @a%@b
print @a-@b
赋值运算符
declare @name varchar(20),@name1 varchar(20)
set @name = 'hello'
set @name1 = '你好'
set @name1 = @name
print @name
位运算符
必须是任意两个整数类型表达式。
和C/C++的一样,这里就不多介绍了。
介绍
逻辑运算符
对某个条件进行测试,其运算结果返回值为布尔类型。
比较运算符
= < > <= >= <> != !> !<
连接运算符
declare @name varchar(20)
set @name = 'hello'
print @name+' world'
一元运算符
‘+’ 数值为正
‘-’ 数值为负
‘~’ 逻辑非,位反
运算符优先级
- 一元运算符
- 算数运算符
- 比较运算符
- 逻辑运算符
- 赋值运算符
流控制语句
begin…end…
--交换两个数字
declare @x int,@y int,@t int
set @x = 9
set @y = 99
begin
set @t = @x
set @x = @y
set @y = @t
end
print @x
print @y
总结:begin…end…这个语句就是把多个语句融合为一个逻辑块。
所以在使用的时候一定有多个语句。
if…else…
--判断
declare @m int
set @m = 9
if @m>0
print 'true'
else
print 'false'
和C/C++的用法一样,如果符合条件则实行 if 下的语句,否则实行 else 的语句
while
--判断10以内的奇数
declare @i int
set @i = 1
while @i<10
begin
if @i%2!=0
print @i
set @i += 1
end
set @i += 1
总结:一般和begin…end…结合使用,就类似于C/C++的大括号。
既然有循环,那就一定有 break 和 continue 。
用法都与C/C++一直,结束当前循环和继续当前循环。
case
可根据表达式的真假来确定是否返回某个值,可以进行多个分支选择。
--根据分数进行判定
declare @grade int,@jiegou varchar(20)
set @grade = 99
set @jiegou =
case
when @grade <= 100 and @grade >=90 then '优秀'
when @grade < 90 and @grade >=80 then '一般'
when @grade < 80 and @grade >=70 then '及格'
else '不及格'
end
print @jiegou
总结:和if…else…的作用很像,都是在找符合条件的情况。
waitfor
延迟语句,可以将他之后的语句在一个指定的时间间隔之后执行。
waitfor delay 'time' |time 'time'
delay用于设定等待的时间,最多24小时
time用于设定等待结束的时间点
--3秒后显示 hello world
waitfor delay '00:00:03'
print 'hello world'
--在下午4点35显示 hello world
waitfor time '16:35:00'
print 'hello world'
goto
改变程序的流程,使程序跳到标识符指定的程序在继续执行。
--goto语句
declare @xx int
set @xx = 9
love:
print @xx
set @xx += 1
while @xx <= 10
begin
goto love
end
return
从查询或过程中无条件退出
--return语句
declare @xxx int
set @xxx = 9
if @xxx >= 3
print 'return之前'
return
print 'return之后'
总结:和C/C++很相似,在学习了C/C++之后我想对于这些的理解应该并不难。