每天一点数据库之-----Day 5 过滤查询
----转载请注明出处:coder-pig
本节引言:
上一节我们学习了基本的数据检索,这节我们来学习高级一点的
过滤查询~
就是使用"_"这个下划线来替代一个字符,比如,我们想检索出:
door,book,cool,took这类字符串的话,我们可以使用"_oo_"
比如我们使用下述SQL语句:
运行后:
如果你的DBMS支持中文的话
运行后:
当然有的时候,字符的个数可能是不定的,比如:
①我们查询表中姓名是以字符"J"开头的字符串
这个时候就要用到"%"这个通配符
SQL语句如下:
运行结果如下:
②当然,你可以同时用多个%,比如我们使用下面的SQL语句:
运行结果如下:
③你也可以搭配着单字符的"_"那个使用
比如:取出表中名字含有'a'且是倒数第二个字母的记录:
运行结果:
另外,还有一个用法,例子:
不是以J开头的记录:
有时可能需要我们对表中的空值进行检测,比如检测工人表中工资为空的人员的信息:
如果直接WHERE FSalary = null是不行的,必须得使用"IS NULL"这个关键字
如下面的SQL语句:
运行后:
当然你也可以判断不为空,改成IS NOT NULL就可以了!
就是不等于,不小于,不大于,某些DBMS是可以直接使用"!"符号,又或者
<>表示等于,<=不大于,>=不小于
当然,为了适应不同的数据库,我们可以变通下使用NOT运算符,使用下述SQL来完成:
比如以下这条SQL语句:
运行结果:
分析:这个SQL语句很简单,就是筛选年龄不为22,以及工资不小于3000元的员工信息~
从上面我们知道可以通过运算符OR,NOT,AND来筛选多个值,
假如有多个值,比如我们需要查询表中年龄为:18,20,22,24,26的员工的信息
我们可以写多个OR来完成,但假如,不止五个值呢?10个或者更多,这个时候
不但写起来麻烦,维护起来也难,而且一不小心就可能引起数据错误!对于这种情况
SQL为我们提供了IN语句
上面查询年龄的SQL可以这样写:
运行SQL:
上面这种情况适合于特定值筛选的部分,假如是一个范围值呢?比如我要筛选
18-25,30-50的员工呢?当然,可以直接用上面的IN关键字,不过写起来有点麻烦
假如我们筛选的是工资呢?有小数,你怎么玩,这个时候就要用到SQL为我们提供的
另一个语句:BETWEEN AND语句了!
上述这个问题的SQL语句如下:
运行SQL:
另外,从查询结果我们也知道了BETWEEN AND查询范围是包括边界值的
比如上面的18!
关于本节内容,到此结束~谢谢