有时需要根据过滤条件来检索数据,用到where子句。where子句跟在select子句from的后面。where子句的操作符一般如下:
等于=
、不等于<>
、不等于!=
、小于<
、小于等于<=
、不小于!<
、大于>
、大于等于>=
、不大于!>
、指定两个值之间between
、为空值 is null
用法大同小异,只要保证子句的位置正确。
1 | mysql> select id,model_cpu,num_cpus from device_info where id<=5; |
具体到不同的数据库,可能支持的操作符不一样,但都能达到相同的功能。从上面的例子可以看出可以用逻辑运算符 and or 将多个条件串联起来,and 的优先级高于or,() 的优先级最高,有点像C语言的运算符的优先级。
数据过滤操作符 in:
1 | mysql> select id,model_cpu,num_cpus from device_info where id in(6,9) |
数据过滤操作符not,能结合in来使用:
1 | mysql> select id,model_cpu,num_cpus from device_info where id not in(6,9); |
查询结果就将 id 含有6和9的行排除了。
上面的这些过滤方法是常用的,还可以用通配符进行过滤,这些通配符结合like子句使用,开发中应该尽量避免是由like,特别是从大量数据中匹配查找时,如果机器性能足够强大还是可以用的。
百分号通配符%
,%
标识任意字符出现任意次数,就像bash中的*
号。
1 | mysql> select id,model_cpu,num_cpus from device_info where model_cpu like 'Intel%'; |
下划线_
通配符,与%
类似,但是只匹配单个字符
1 | mysql> select id,model_cpu,num_cpus from device_info where model_cpu like 'Intel(R)Xeon(R)CPUE5-26200@2.00_'; |
如果能够以其他的操作语句达到过滤的目的,就应该避免过分使用通配符。貌似通配符还有[ ]
、^
等。