做网站-SQL高级过滤查询用法

SQL查询语句在数据库的操作当中经常频繁用到,为了进行更强的过滤控制,有时简单的过滤根本无法实现数据的筛选,这时我们需要用到高级过滤AND和OR、IN和NOT操作符。今天做网站小编就和大家讨论一下关于sql高级过滤语句的用法...

语句:SELECT * FROM dbo.Products WHERE prod_name='king doll' AND prod_price>8;

--检索dbo.Products表中所有列,过滤条件为由供应商king doll制造价格大于8的所有商品;

注意:--后面的字符是这条语句的注释,这条语句有两个条件,分别用AND关键字联接在一起,并且过滤结果必须满足这两个条件,如果只满足其中一个该数据不会被检索出来;

例如:已知供应商king doll制造商品对应的价格是8元,现在把商品价格改成小于8或者供应商改成king add,结论是任何数据都不会被检索出来,因为使用AND操作符只满足一个条件是不合理的。

OR操作符(或)

语句:SELECT * FROM dbo.Products WHERE prod_name='king doll' OR prod_price>8;

--检索dbo.Products表中所有列,过滤条件为由供应商king doll制造价格大于8的所有商品值;

注意:--这里要说明的是OR操作符与AND操作符的不同之处是只要满足其中一个条件,数值就会被检索出来,例如:由供应商king doll制造价格小于8商品或者由供应商king add制造价格大于8的商品只要其中一个条件符合,数据就被检索出来;

求值顺序(AND和OR混合使用)

先看个例子:检索出价格为8元以上,且由king doll或者Queen dool制造的所有产品,我们输入语句:

SELECT * FROM dbo.Products WHERE prod_name='king doll' OR prod_name='Queen dool' AND prod_price>8;

得出结果如下图:

现在把prod_price大于8的值改成大于10,看看结果如何:

现在检索出来的值是1行,接下来在prod_name='king doll' OR prod_name='Queen dool'语句加上括号,看看结果如何:

这回什么都没了

现在就解释为什么:其实是操作符被错误组合导致的,因为在数据库系统中AND求值的顺序比OR的求值顺序更优先。

第一张图的顺序是:先执行prod_name='Queen dool' AND prod_price>10的数据再执行prod_name='king doll' OR prod_name='Queen dool'的数据,由于第一个条件和第2条件符合所以出现两行数值。

第二张图的顺序也是:先执行prod_name='Queen dool' AND prod_price>10的数据再执行prod_name='king doll' OR prod_name='Queen dool'的数据,但由于第一条件不符,Queen dool对应的数值没有大于10的值,所以只出现第2个条件的数据。

第三张图的顺序是:先执行括号里面的,然后在执行AND prod_price>10,在SQL数据库中加括号的内容系统会优先执行,由于结果只满足括号里的条件,但并不满足括号外的条件,因为prod_price的值是9.49小于10,所以什么数据都没显示。

IN操作符(指定条件范围)

语句:SELECT * FROM dbo.Products WHERE prod_name IN ('king doll' ,'Queen dool')

--检索dbo.Products表中所有列,过滤条件为由供应商king doll和Queen dool制造的商品;

注意:它的功能其实和OR一样,但是它的执行速度会更快并且简洁,最大的优点是可以包含其他SELECT语句,能够更动态地建立WHERE字句。

NOT操作符(否定其后跟的任何条件)

语句:SELECT * FROM dbo.Products WHERE NOT prod_name='king doll';

--检索dbo.Products表中所有列,过滤条件为否定king doll供应商包含的所有值;

往期热点文章:

#做网站-PHP中如何使用JpGraph制作图表

#做网站-推荐3种CSS,JS合并的方式

#做网站-如何用DIV+CSS做网页

#做网站-3家国外VPS主机商对比

#做网站-页面内锚点定位的几种方法

#做网站-如何将设计稿还原为网页

#做网站-面向对象面向过程的区别

#做网站-必备的10款网站性能测试工具(推荐)

做网站公众平台(zwangz888)每天为您分享原创Web开发资讯,开发经验,为您的技能充电。期待您的关注与分享,同时欢迎您留言,让我们每天进步一点点!

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171227G0ZPDY00?refer=cp_1026

扫码关注云+社区