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。