每天一点数据库之-----Day 5 过滤查询

每天一点数据库之-----Day 5 过滤查询

                                                                    ----转载请注明出处:coder-pig



本节引言:

上一节我们学习了基本的数据检索,这节我们来学习高级一点的

过滤查询~



1.单字符过滤:

就是使用"_"这个下划线替代一个字符,比如,我们想检索出:

door,book,cool,took这类字符串的话,我们可以使用"_oo_"

比如我们使用下述SQL语句:


SELECT * FROM T_Worker WHERE FName LIKE '_a_y'


运行后:


如果你的DBMS支持中文的话


SELECT * FROM T_Worker WHERE FDName LIKE '__  '


运行后:





2.多字符过滤:

当然有的时候,字符的个数可能是不定的,比如:

①我们查询表中姓名是以字符"J"开头的字符串

这个时候就要用到"%"这个通配符

SQL语句如下:


SELECT * FROM T_Worker WHERE FName LIKE 'J%'


运行结果如下:



②当然,你可以同时用多个%,比如我们使用下面的SQL语句:


SELECT * FROM T_Worker WHERE FName LIKE '%a%y'


运行结果如下:




你也可以搭配着单字符的"_"那个使用

比如:取出表中名字含有'a'且是倒数第二个字母的记录:


SELECT * FROM T_Worker WHERE FName LIKE '%a_'


运行结果:



另外,还有一个用法,例子:

不是以J开头的记录:


SELECT * FROM T_Worker WHERE NOT ( FName LIKE 'J%' )




3.空值检测:

有时可能需要我们对表中的空值进行检测,比如检测工人表中工资为空的人员的信息:

如果直接WHERE FSalary = null是不行的,必须得使用"IS NULL"这个关键字

如下面的SQL语句:


SELECT * FROM T_Worker WHERE FSalary IS NULL


运行后:


当然你也可以判断不为空,改成IS NOT NULL就可以了!




4.反义运算符

就是不等于,不小于,不大于,某些DBMS是可以直接使用"!"符号,又或者

<>表示等于,<=不大于,>=不小于

当然,为了适应不同的数据库,我们可以变通下使用NOT运算符,使用下述SQL来完成:

比如以下这条SQL语句:

SELECT * FROM T_Worker
WHERE NOT( FAge = 22) AND NOT ( FSalary < 3000 )


运行结果:

分析:这个SQL语句很简单,就是筛选年龄不为22,以及工资不小于3000元的员工信息~




5.多个值的筛选

从上面我们知道可以通过运算符OR,NOT,AND来筛选多个值,

假如有多个值,比如我们需要查询表中年龄为:18,20,22,24,26的员工的信息

我们可以写多个OR来完成,但假如,不止五个值呢?10个或者更多,这个时候

不但写起来麻烦,维护起来也难,而且一不小心就可能引起数据错误!对于这种情况

SQL为我们提供了IN语句

上面查询年龄的SQL可以这样写:


SELECT * FROM T_Worker
WHERE FAge IN(18 , 20, 22 ,24 , 26)


运行SQL:





6.范围值的筛选

上面这种情况适合于特定值筛选的部分,假如是一个范围值呢?比如我要筛选

18-25,30-50的员工呢?当然,可以直接用上面的IN关键字,不过写起来有点麻烦

假如我们筛选的是工资呢?有小数,你怎么玩,这个时候就要用到SQL为我们提供的

另一个语句:BETWEEN AND语句了!

上述这个问题的SQL语句如下:


SELECT * FROM T_Worker
WHERE (FAge   BETWEEN 18 AND 20)
OR ( FAge  BETWEEN 30 AND 50 )


运行SQL:


另外,从查询结果我们也知道了BETWEEN AND查询范围是包括边界值的

比如上面的18!






关于本节内容,到此结束~谢谢吐舌头





你可能感兴趣的:(数据库,基础,新手,快速入门,每天一篇)