SQL语言从入门到精通
上QQ阅读APP看书,第一时间看更新

1.5 运算符

运算符是一种符号,用来进行常量、变量或者列之间的数学运算和比较操作,它是SQL语句中很重要的部分。运算符包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和连接运算符等。

1.5.1 算术运算符

算术运算符在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。

算术运算符包括:+(加)、−(减)、×(乘)、/(除)、%(取余)。

例如:5-3=2,3%5=3。

【例1.5】 利用“%”运算符求50对80取余的值。(实例位置:资源包\TM\sl\1\5)

在db_mrsql数据库中,使用DECLARE关键字声明3个整型变量,使用SELECT关键字为变量@A和变量@B分别赋值“50”和“80”。然后使用SET关键字为变量@c赋值,将变量@A对@B取余的结果赋给变量@C。最后使用PRINT关键字输出变量@C的信息内容。SQL语句如下:

     use db_mrsql                                         --使用db_mrsql数据库
     DECLARE @A int ,@B int,@C int                        --声明3个整型变量
     --使用select关键字为变量@A和变量@B分别赋值为“50”和“80”
     SELECT @A=50,@B=80
     --使用SET关键字为变量@c赋值,将变量@A对@B取余的结果赋给变量@C
     SET @C=@A%@B
     PRINT @C                                             --使用PRINT关键字输出变量@C的信息内容

执行此SQL语句,运行结果如图1.6所示。

图1.6 50对80取余的值

注意

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

1.5.2 赋值运算符

SQL中的赋值运算符为“=”。在下面的示例中,先创建“@studentname”变量,然后使用赋值运算符将“@studentname”设置成一个由表达式返回的值。

【例1.6】 使用SET关键字为变量赋值。(实例位置:资源包\TM\sl\1\6)

在db_mrsql数据库中,使用DECLARE关键字声明一个变量@studentname,并使用SET关键字为该变量赋值,最后使用PRINT关键字输出该变量的值。SQL语句如下:

     use db_mrsql                                     --使用db_mrsql数据库
     DECLARE @studentname  char(20)                   --使用declare声明一个变量
     --使用set关键字为@studentname变量赋值为“Jack”
     SET @studentname='Jack'
     PRINT '字符串的值为:'+@studentname

执行此SQL语句,运行结果如图1.7所示。

另外,还可以使用SELECT语句进行赋值。

【例1.7】 使用SELECT语句进行赋值。(实例位置:资源包\TM\sl\1\7)

图1.7 使用SET关键字进行赋值

在db_mrsql数据库中,使用DECLARE关键字声明一个变量@studentname,使用SELECT语句进行赋值,最后使用PRINT关键字输出该值。SQL语句如下:

     USE db_mrsql                   --使用db_mrsql数据库
     DECLARE @studentname char(20)  --使用declare声明一个变量
     SELECT @studentname='Luck'     --使用select关键字为该变量赋值
     PRINT @studentname             --使用PRINT关键字输出变量的值

执行此SQL语句,运行结果如图1.8所示。

图1.8 使用SELECT语句进行赋值

1.5.3 逻辑运算符

逻辑运算符可对某个条件进行测试,以获得其真假情况。逻辑运算符和比较运算符一样,返回带有TRUE或FALSE值的布尔数据类型。SQL支持的逻辑运算符如表1.7所示。

表1.7 SQL支持的逻辑运算符

例如:20>10 AND 7>6的运算结果为TRUE。

【例1.8】 查询所在班级为4108班且成绩大于60分的学生信息。(实例位置:资源包\TM\sl\1\8)

在db_mrsql数据库的学生信息表tb_student03中,查询学生所在班级为4108班且学生成绩大于60分的学生的基本信息。SQL语句如下:

     use db_mrsql                                         --使用db_mrsql数据库
     --查询所在班级为4108班并且学生成绩大于60分的学生的基本信息
     SELECT *
     FROM tb_student03
     WHERE 所在班级='4108班' AND 学生成绩>'60'

执行此SQL语句,运行结果如图1.9所示。

图1.9 查询所在班级为4108班且成绩大于60分的学生信息

需要注意的是,当NOT、AND和OR出现在同一表达式中,其优先级从高到低分别为NOT、AND和OR。例如:

     1>2 OR 106>100 AND NOT 8>7

这里,首先计算NOT 8>7,其结果FALSE;然后计算106>100 AND FALSE,其结果FALSE;最后计算1>2 OR FALSE,最终结果仍为FALSE。