MySQL:必知必会-第七章(笔记)

文章详细介绍了在Mysql中如何使用WHERE子句进行更复杂的查询,包括使用AND和OR操作符组合条件,以及IN操作符来指定条件范围。AND用于要求所有条件都满足,OR则表示满足任一条件即可。同时,文章强调了运算顺序和使用圆括号进行分组的重要性,以及NOT操作符用于否定条件。IN操作符提供了更简洁的语法和更好的性能,尤其是在处理大量合法选项时。
摘要由CSDN通过智能技术生成

目录

7.1: 组合where子句

7.1.1 :and操作符

7.1.2 : or操作符

7.2 : IN 操作符

7.3 :Not操作符


7.1: 组合where子句

为了进行更强的过滤控制,可以使用两种方式:以and子句的方式或or子句的方式使用;

操作符(operator):

  • 用来联接或改变where子句中的子句的关键字。也称为逻辑操作符(logical operator);


7.1.1 :and操作符

为了通过不止一个列进行过滤,可使用and操作符给where子句附加条件;

例子:检索由供应商1003制造且价格小于等于10美元的所有产品的名称和价格;

这条select语句中的where子句包含两个条件,并且用and关键字联结它们。两个满足且呈现出检索结果,不满足则不被检索;

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

and :

  • 用在where子句中的关键字,用来指示检索满足所有给定的条件的行;


7.1.2 : or操作符

or操作符与and操作符不同,它指示Mysql检索匹配任一条件的行;

例子:

此sql语句检索由任一个指定供应商制造(1002或1003)的所有产品的产品名和价格。

(and:两个满足且检索,否则不被检索;or :任意一个满足,且满足)

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

or : 

  • where 子句中使用关键字,用来表示检索匹配任一给定条件的行;


7.1.3:计算次序

where 可包含任意数目的and和or操作符。允许两者结合进行复杂和高级的过滤;

例子:

列出价格为10美元(含)以上且由1002或1003制造的所有产品;

select prod_name, prod_price from products
where vend_id = 1002 or vend_id = 1003 and prod_price >= 10;

SQL在处理or操作符前,优先处理and操作符。因此上述代码会呈现出不符合要求的数据;SQL理解为:供应商1003制造的任何价格10美元(含)以上的产品,或者由供应商1002制造的任何产品,而不管其价格如何;

正确的使用方法,使用圆括号明确地分组相应的操作符:

select prod_name, prod_price from products
where (vend_id = 1002 or vend_id = 1003)
and prod_price >= 10;

由于and操作符高的计算次序优先于or,所以使用圆括号使计算更准确。

where子句中使用圆括号:

  • 任何时候使用具有and和or操作符的where子句,都应该使用圆括号明确地分组操作符;


7.2 : IN 操作符

圆括号在where子句中还有另外一种用法,in操作符用来指定条件范围,范围中的每个条件都可以进行匹配;IN取合法值的由逗号分隔的清单,全部括在圆括号中;

例子:

此select语句检索供应商1002和1003制造的所有产品;

select prod_name, prod_price from products
where vend_id In (1002,1003)
order by prod_name;

使用in操作符完成与or相同的功能,下面例子所示:

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

IN操作符优点:

  • 使用长的合法选项清单时,in操作符的语法更清楚且直观
  • 在使用in时,计算的次序更容易管理(操作符更少)
  • in操作符一般比or操作符清单执行更快
  • in的最大优点是可以包含其他select语句,使得能够更动态地建立where子句;

in:

  • where子句中用来指定匹配值的清单的关键字,功能与or相当;


7.3 :Not操作符

where 子句中的not操作符有且只有一个功能,那就是否定它之后所跟的任何条件;

Not:

  • where子句中用来否定条件的关键字;

例子:使用not,列出除了1002和1003之外的所有供应商制造的产品;

select prod_name, prod_price from products
where  vend_id not in (1002, 1003)
order by prod_name;

在更复杂的子句中,not是非常有用的;

mysql中的not:

  • mysql支持使用not对in、between和exists子句取反,这与多数其他DBMS允许使用not对各种条件取反有很大区别;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值