学习.SQL Server 运算符 与 流程控制

算术运算符

   算术运算符包括+(加)、-(减)、x(乘)、/(除)、%(取余)

列:求2对5的余数
declare @x int,@y int,@z int
select @x=2,@y=5
set @z=@x%@y
print @z


###取余运算两边的表达式必须是整型数据

赋值运算符

   SQL有一个赋值运算符等号(=),利用赋值运算符将@songname设置成一个由表达式返回的值

declare @songname char(20)
set @songname='loving'

还可以使用select语句进行赋值,并数据该值

declare @songname char(20)
select @songname='loving'
print @songname

比较运算符

   比较运算符包括>(大于)、<(小于)、=(等于)、>=(大于等于)、<=(小于等于)、<>(不等于)、!=(不等于)、!>(不大于)、!<(不小于),其中!=、!<、!<不是ANSI标准的运算符

逻辑运算符

     逻辑运算符对某个条件进行测试,以获得其真实情况,逻辑运算符和比较运算符一样,返回带有true或false的布尔数据类型。SQL支持的逻辑运算符如下

ALL:如果一个比较集中全部都是true,则值为true
and:如果两个布尔表达式均为true,则值为true
any:如果一个比较集中任何一个为true,则值为true
between:如果操作数在某个范围内,则值为true
exists:如果子查询包含任何行,则值为true
in:如果操作数与一个表达式列表中的某个相等,则值为true
like:如果操作数匹配某个模式,则值为true
not:对任何其他布尔运算符的值取反
or: 如果任何一个布尔表达式是true,则值为true
some:如果一个比较集中的某些为true,则值为true

在student数据表中,查询学生年龄大于24岁的女生信息

select * from Student where Sex='女' and Sage >24

当not、and、or出现在同一表达式中,优先级是:not、and、or

连接运算符

     连接运算符"+"用于连接两个或两个以上的字符或二进制串、列名或者串和列的混合体,将一个串加入另一个串的末尾。语法如下

语法:
<expression1>+<expression2>

列:用"+"连接两个字符串
declare @name char(20)
set @name=' 最爱'
print '我喜爱的电影是'+@name

 通配符

      在SQL中通常用like关键字与通配符结合实现模糊查询,SQL支持的通配符如下

%:包含零个或更多字符的任意字符
示例:loving%可以表示:loving,loving you,loving

_(下划线):任何单个字符;
示例:loving_可以表示:lovingc,后面只能再接一个字符

[]:指定范围([A~F])或集合([abcdef])中的任何单个字符
示例:[0~9]123 表示以0~9任意一个字符开头,以123结尾的字符

[^]:不属于指定范围([a~f])或集合([abcdef])的任何单个字符
示例:[^0~5]123 表示不以0~5任意一个字符开头,却以123结尾的字符

流程控制

         流程控制语句是用来控制程序执行流程的语句。使用流程控制语句可以提高编程语言的处理能力。与程序设计语言一样,SQL提供的流程控制语句如下:

    begin...end、if、if...else、case、while、while...continue...break、return、goto、waitfor   

扫描二维码关注公众号,回复: 16802233 查看本文章

1.begin...end

        begin...end语句用于将多个SQL语句组合为一个逻辑块。当流程控制语句必须执行一个包含两条或者两条以上的SQL语句的语句块时,使用begin...end语句。语法如下:

语法:
begin
{sql_statement...}    ---sql_statement是指包含的SQL语句
end

示例:在begin...end语句块中完成两个变量的值交换。
declare @x int,@y int,@t int
set @x=1
set @y=2
begin
set @t=@x
set @x=@y
set @y=@t
end
print @x
print @y

2.if...else

        if选择结构可以带else子句.if....else语法如下:

语法:
IF<条件表达式>
    {命令行1|程序块1}
ELSE
    {命令行2|程序块2}


示例:判断两个数"8"和"3"的大小
delcare @x int,@y int
set @x=8
set @y=3
if @x>@y
print '@x大于@y'
else
print '@x大于等于@y'


###如果逻辑判断表达式返回的结果是TRUE,那么程序接下来会执行命令行1或者程序块1;如果逻辑判断表达式返回的结果是FALSE,那么程序接下来会执行命令行2或程序块2.无论那种情况,最后都要执行IF...ELSE语句的下一条语句

if...else结构还可以嵌套解决一些复杂的判断

列:输入一个坐标值(8,-3)然后判断它在哪一个象限。
declare @x int,@y int
set @x=8
set @y=-3
if @x>0
    if @y>0
        print'@x@y位于第一象限'
    else
        print'@x@y位于第二象限'
else
    if @y>0
        print'@x@y位于第二象限'
    else
        print'@x@y位于第三象限'

3.case

        使用case语句可以很方便地实现多重选择得情况,比if...then结构有更多得选择和判断得机会,从而避免编写多重得if...then嵌套循环。

        SQL支持case有两种语句格式

简单case函数:

CASE  <表达式>
   WHEN <值1> THEN <操作>
   WHEN <值2> THEN <操作>
   ...
   ELSE <操作>
END




case搜索函数:

CASE
    WHEN <条件1> THEN <命令>
    WHEN <条件2> THEN <命令>
    ...
    ELSE commands
END



示例1:
    在tb_Grade表中,查询每个同学的成绩,如果成绩大于等于90,显示成绩优秀;如果成绩小于90大于等于80,显示成绩良好;如果成绩小于80大于等于70.显示成绩及格。否则将显示不及格。

select *,
备注=case
when Grade>=90 then '成绩优秀'
when Grade<90 and Grade<80 then '成绩良好'
when Grade<80 and Grade>=70 then '成绩及格'
else '不及格'
end 
from tb_Grade



示例2:
    更新学生表的学生信息,是男生年龄减1,女生年龄加1

use 数据库
         updata 学生表
         set 年龄= case 
               when sex='男' then 年龄-1
               when sex='女' then 年龄+1
               end



示例3:
    将成绩表中学生姓名,科目,成绩三个字段转换成学生姓名,语文成绩,数学成绩,英语成绩。
      SELECT
                学生姓名,
                SUM( CASE WHEN `科目` = '语文' THEN `成绩` END ) AS 语文,
                SUM( CASE WHEN `科目` = '数学' THEN `成绩` END ) AS 数学,
                SUM( CASE WHEN `科目` = '英语' THEN `成绩` END ) AS 英语
               FROM 成绩表
               GROUP BY 学生姓

4.while

        while子句是SQL语句支持的循环结构,在条件为true的情况下,while子句可以循环执行其后的一条SQL命令.如果想循环执行一组命令,则需要配合begin...end子句使用。while的语法如下

语法:
while <条件表达式>
begin
      <命令行|程序块>
end


示例:求1~10的整数的和.
declare @n int,@sum int
set @n=1
set @sum=0
while @n<=10
begin
set @sum=@sum+@n
set @n=@n+1
end
print @sum

5.return

        return语句用于从查询或过程中无条件退出。return语句可在任何时候用于从过程,批处理或语句块中退出。

示例:return语句实现退出功能
declare @x int
set @x=3
if @x>0
print '遇到return之前'
return
print '遇到return之后'

6.goto

        goto命令用来改变程序执行的流程,使程序跳到标识符指定的程序行再继续往下执行

示例:用goto语句实现跳转输出小于等于3的值。
declare @x int
select @x=1
loving:
    print @x
    select @x=@x+1
while @x<=3 GOTO loving

7.waitfor

        waitfor指定触发器,存储过程或事物执行的时间、时间间隔或事件;还可以用来暂时停止程序的执行,直到所设定的等待时间已过才继续往下执行。语法如下:

语法:
waitfor delay<'时间'>|time<'时间'>

示例1:等待三秒后显示"祝你生日快乐!"
waitfor delay'00:00:03'
print'祝你生日快乐!'


示例2:  15:00显示"《新三国演义》开始了"
waitfor time'15:00:00'
print '《新三国演义》 开始了!'

猜你喜欢

转载自blog.csdn.net/weixin_45467975/article/details/129945045
今日推荐