当检索范围很大时,使用IN语句仍然比较麻烦,更重要的是,IN语句只能检索离散值,当需要检索所有工资介于3000到5000元之间的员工信息时,IN语句就无能为力了,因为介于3000到5000之间的值是无数的。
当然我们可以使用普通的“大于等于”和“小于等于”来实现范围值的检索,比如要完成功能“检索城市编号在2~12之间的地区的所有信息”,就可以使用下面的SQL语句:
SELECT * FROM demo_area WHERE 城市ID>=2 AND 城市ID<=12;
不过SQL提供了一个专门用于范围值检测的语句BETWEEN AND,它可以用来检测一个值是否处于某个范围中(包括范围的边界值,也就是闭区间)。使用方法为“字段名 BETWEEN 左范围值 AND 右范围值”。比如完成之前的检索功能可以使用下面的SQL语句:
SELECT * FROM demo_area WHERE 城市ID BETWEEN 2 AND 12;
两种检索方法完全等价,执行完毕我们都能看到下面的执行结果:
+--------+------+--------+------+--------+------+
| 国家ID | 国家 | 地区ID | 地区 | 城市ID | 城市 |
+--------+------+--------+------+--------+------+
| 1 | 中国 | 1 | 华东 | 2 | 江苏 |
| 1 | 中国 | 1 | 华东 | 3 | 安徽 |