购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1.2 比较运算符

我们在上面提到,比较运算符的作用是定义过滤的方式。事实上,虽然比较运算符其貌不扬,但“要与不要”的选择权都掌控在它的手中。现在请大家考虑以下场景。

乔治是李乔丹的好朋友,他们两人有许多相似之处。

我手上也有两张电影票,老兄!快请你帮帮我,我可不想一个人去看家庭喜剧片!

瞧,又来了一位手握两张电影票的男孩。看在朋友的份上,这个忙李乔丹可不能拒绝。不过现在对于乔治来讲,他只能邀请除Grace以外的其他女孩,原因想必大家都很清楚。

在这种情况下,我们的过滤要求就发生了反转,要将符合条件的行给过滤掉,从而保留不符合条件的行:

瞧,相同的过滤条件搭配不同的比较运算符,有时会实现不同的过滤效果。我们在此处调整了比较运算符,将“=”换成了“!=”和“<>”。这是因为“=”的匹配逻辑是“符合”,而“!=”和“<>”的匹配逻辑是“不符合”。除此以外,其实“<”和“>”也是两个比较运算符,只不过在日常操作中,它们一般对应的过滤信息是数值和日期时间。例如,如果要求返回年龄大于或等于28岁的女孩信息,那么对应的SQL语句不妨这样写:

请同学们注意,在书写含有等号的比较运算符时,一定要将等号写在右边,例如!=、<=、>=。接着,如果我们想筛选出2020年8月1日以后加入Contact表的女孩信息,对应的SQL语句可以这样写:

大家可以自己执行上述两条SQL语句,查看并对比返回结果。

值得注意的是,虽然例句(4)和例句(5)中的age和join_date都不是检索的对象,但这并不影响MySQL根据它们含有的内容进行过滤。这一点与ORDER BY的使用很类似。没错,可供我们操作的是表中含有的全部数据,而不只是被检索出来的部分数据。

关于比较运算符的使用,这里还有最后一个操作要向大家介绍,那就是使用算术表达式进行过滤。举个例子,玩具商吉姆最近进了一批货,但是很不凑巧,由于现在的孩子们都专注于从手机网络上获得快乐,所以有些商品只能以低于进价的价格卖出,信息如下:

如果现在吉姆想要知道哪些商品让他赔了钱,那么对应的SQL语句应该这样写:

大家可以看到,解决方法非常简单,如果某个商品的卖价低于进价,那就是赔钱的买卖。因此,我们会使用“WHERE卖价-进价<0”进行表述。当然,使用“WHERE进价-卖价>0”同样可行。事实上,此处的“-”是一个算术运算符,常用的算术运算符还包括+、*和/,也就是四则运算中的加减乘除。同学们将在后续章节中遇到它们。

接着,如果吉姆想要知道哪些商品不亏不赚,那么对应的SQL语句可以这样写:

其实很多SQL语句的书写是非常灵活的,而且很直观,因为这很贴近我们的日常表述习惯。以下我们列举了一些常用的比较运算符,供大家参考使用:

除此以外,还有一点值得向大家说明:我们在将Grace当作过滤条件的时候使用了单引号,而在将28当作过滤条件时却没有加单引号。其实在很多情况下,引用数值无须使用单引号,当然加上也无妨,但引用字符串必须使用单引号。

好了,现在请大家自己动手执行一下例句(2)到例句(5)吧。请一边理解过滤要求,一边观察结果。 Maqt7mmUCbScYnqlNrNPWt+jRLqWY0PvyEBPLozAQfSzupq+EDe7U1aD74lvCkfx

点击中间区域
呼出菜单
上一章
目录
下一章
×