mysql and not exists_MySQL ------ 过滤数据 and、or、in、exists、not(七)

更强的过滤控制:and 子句方式和 or 子句方式

操作符(operator)用来联结或改变where 字句中的字句的关键字。也成逻辑操作符(logical operator)

1、AND操作符:通过不止一个条件进行过滤

where 与and 连用可以不止通过一个列进行过滤,将两个过滤条件组合在一起,用来检索满足所给定条件的行,两个条件后增加一个条件就要加一个and

用到的表

4b57cde61b008a7b48b50e5ad84b3b33.png

--将供应商是 1003 价格小于等于10 的商品检索出来,顺便排个序

select prod_name,vend_id,prod_price from products where vend_id=1003 and prod_price<=10 order by prod_price;

b094a5345b9b7c4b033825d29f45e544.png

2、OR操作符 : 检索匹配任一条件的行

你要是对数学熟悉,且,或,非有所了解,那么and 就是且,or 就是或

--检索供应商是 1002 或 1003 的商品

select prod_name,vend_id,prod_price from products where vend_id=1003 or vend_id =1002 order by prod_price;

e44b6b805a001ae3c59ab15c0f36819d.png

3、and 与 or 连用

where 可包含任意数目的and 和or 操作符,允许两个结合进行更复杂过滤

注意:

1、SQL(与其他语言一样)也有自己的计算次序,and 比or 的 优先级更高。

2、不要依赖默认的计算顺序,任何使用具有AND 和 OR 操作符的WHERE 字句,都应该使用圆括号进行明确的分组操作,圆括号没有坏处,还能消除歧义

如:检索出价格为8 (含8) 以上且由1002 或1003制造的所有商品

51e38137fd309a6dc07a333c318cdb34.png

4、IN 操作符 : 指定条件范围,范围中的每个条件都可以进行匹配

注意: in 取的 合法值由逗号分隔,放在括号里

--查询价格是2.5 和 10 的商品

select prod_name,vend_id,prod_price from products where prod_price in (2.5,10) order by prod_price;

f3681c7d45a2a309b0ea059b1f62ec4c.png

IN操作符 优点:

1、in 操作符 一般比or 操作符执行的更快

2、语法更清楚且更直观

3、计算的次序更易管理(因为使用的操作符更少)

4、可以包含其他select 语句,使其能更动态的建立where 子句

in关键字也可以与子查询一块结合使用,使父查询匹配子查询返回多个单字段值。当与比较运算符联合使用时,要求子查询只能返回一条或空的记录。

5、EXISTS 操作符:   是否存在

在创建库和表时,用来检测数据库对象是否存在。

当与where 子句一块使用时,用来确认后面的查询是否继续进行,返回值 true 或false

--如果存在表 tb_stu ,先删除在重新创建

drop table if existstb_stu;--与where子句一块使用

select ······ from 表名 where exists (子查询);

exists 关键字后面的参数是一个任意的子查询,如果该子查询有返回行,则exists子查询结果为true,此时在执行外层查询语句

如果子查询没有返回行,则exists 子查询的结果为false,此时不再执行外层查询语句

not  exists 表示不存在对应查询条件的记录。

exists 和 not exists 结果只取决于是否有返回记录,不取决于这些记录的内容,所以exists 或 not exists 子查询后select语句中的字段类表通常无关紧要

6、NOT 操作符 : 否定他之后所跟的条件

注意:MySQL中支持使用not 对 in、between 和exists 子句取反,与其他DBMS允许使用NOT 对各种条件取反有很大的差别。

--查询价格不是2.5 和 10 的商品

select prod_name,vend_id,prod_price from products where prod_price not in (2.5,10) order by prod_price;

657d830a4c089b89e6a81dc78bd95a5a.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值