8.1 什么是SQL里的操作符
操作符包括:
- 比较操作符
- 逻辑操作符
- 求反操作符
- 算术操作符
8.2 比较操作符
8.2.1 相等
操作符说明 | 使用场景 |
等号(=)表示相等 | Select * from aircraft where seating = 400 此语句会返回座位数等于400的全部数据; |
8.2.2 不等于
操作符说明 | 使用场景 |
不等于(<>)表示一个小于号一个大于号,另一种表示不相等的方式是!= | Select *from aircraft where freightonly <> 0; 此语句表示freightonly返回不等于0的值; |
8.2.3 小于和大于
操作符说明 | 使用场景 |
<小于, >大于 | Select * from aircraft where seating > 400; Select * from aircraft where seating < 100; |
8.2.4 比较操作符的组合
操作符说明 | 使用场景 |
<=小于等于,>=大于等于 | Select * from aircraft where seating <= 400; Select * from aircraft where seating >= 100; |
8.3 逻辑操作符
8.3.1 IS NULL
操作符说明 | 使用场景 |
Is null,找空值 | Select passengerid、lastname、firstname、birthdate From passengers Where birthdate is null; 以上这一列会找到birthdate为空的这列值; |
8.3.2 BETWEEN
操作符说明 | 使用场景 |
1.between的返回值包含边界值; 2.between后面接数值、文本、日期; | Select * from aircraft where seating between 200 and 300; |
8.3.3 IN
操作符说明 | 使用场景 |
当被比较的值至少与列表中的一个值相匹配时,它会返回对应值; | Select * from aircraft where seating in (200,300,400); 系统返回seating为200,300,400的数据; |
8.3.4 LINKE
操作符说明 | 使用场景 |
1.百分号%,百分号代表零个、一个或多个字符; 2.下划线_下划线代表一个数字或字符; 3.这些符号可以组合使用; | 1.Where aircrafttype like ‘B%’; 该示例匹配任何以B开头的值 2.Where aircrafttype like ‘%B%’; 该示例匹配任何包含B的值 3.Where aircrafttype like ‘_B%’; 该示例匹配第2个字符为B的值 4.Where aircrafttype like ‘%B’; 该示例匹配以B为结尾的值 5.Where aircrafttype like ‘A__B’; 该示例匹配第一个字母为A,最后一个字母为B的值; |
8.3.5 EXISTS
8.3.6 ALL、SOME和ANY操作符
操作符说明 | 使用场景 |
操作符ALL用于把一个值与另一个集合中的全部值进行比较 | 下面的示例用来测试座位数大于Boing 777机型的机型 Select * from aircraft where seating > all (select seating from aircraft where aircrafttype=’boeing 777 ‘ ); |
操作符ANY根据条件将一个值与另一个列表中的任何值进行比较。somes是ANY的别名,他们可以互相使用 | Select * form aircraft where seating > any (select seating from aircraft where seating > 375); |
8.4 连接操作符
8.4.1 AND
操作符说明 | 使用场景 |
and操作符允许在where语句中同时使用多个条件,取交集 | Select * from aircraft where seating > 300 and seating < 400; 结果输出seating > 300 且 seating < 400的数据; |
8.4.2 OR
操作符说明 | 使用场景 |
or操作符允许在where语句中同时使用多个条件,取并集 | Select passengerid,firstname,lastname From passengers where passengerid = 20 or passengerid = 134991; 结果输出passengerid = 20 或 passengerid = 134991的数据; |
8.5 求反操作符
8.5.1 不相等
操作符说明 | 使用场景 |
不相等 | Where seating <> 200 Where seating != 200 |
8.5.2 NOT BETWEEN
操作符说明 | 使用场景 |
Not between为 between的反值 | Where seating not between 100 and 400 |
8.5.3 NOT IN
操作符说明 | 使用场景 |
Not in 为in的反值 | Where seating not in (100、150、200、250、300、375) |
8.5.4 NOT LIKE
操作符说明 | 使用场景 |
Not like 为like的反值 | Select aircrafttype from aircraft where aircrafttype not linke ‘B%’; 以上输出非B%的值; |
8.5.5 IS NOT NULL
操作符说明 | 使用场景 |
is not null 的反值为is null | Select * from aircraft_tmp where seating is not null; |
8.5.6 NOT EXISTS
操作符说明 | 使用场景 |
8.6 算术操作符
8.6.1 加法
操作符说明 | 使用场景 |
加法 | Select * from routes where (traveltime + 30)> 1080; 以上结果返回 (traveltime + 30)> 1080的值; |
8.6.2 减法
操作符说明 | 使用场景 |
减法 | 1.Select salary - 1000 from employees; 2.Select salary from empleyees where salary - 10000 > ‘4000’; |
8.6.3 乘法
操作符说明 | 使用场景 |
乘法 | Select traveltime * fuelcostperminute as total_fuel_cost from routes; |
8.6.4 除法
操作符说明 | 使用场景 |
除法(/) | Select traveltime / 60 as travel_hours from routes; |
8.6.5 算术操作符的组合
操作符说明 | 使用场景 |
优先级算法顺序()、乘法、除法、加法、减法 | 1+1*5=6 (1+1)*5=10 10-4/2+1=9 |
8.7 小结
8.8 问与答
问:Where 子句中可以包含多个AND操作符吗?
答:可以,任何操作符都可以多次使用。
Select * from aircraft
Where seating < 300
And freightonly = 0
And aircrafttype like ‘B%’
问:在where子句中使用单引号包围一个number类型的数据会产生什么效果?
答:查询仍然会执行,对于number类型的字段来说,单引号是没有必要的。