900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 《MySQL必知必会》学习笔记——第七章(数据过滤)

《MySQL必知必会》学习笔记——第七章(数据过滤)

时间:2020-09-13 19:29:45

相关推荐

《MySQL必知必会》学习笔记——第七章(数据过滤)

文章目录

7.1组合WHERE子句7.1.1 AND 操作符7.1.2 OR操作符7.1.3 计算次序7.2 IN操作符7.3 NOT操作符总结:

前文连接:

《MySQL必知必会》——书中表的生成

《MySQL必知必会》——第三章(了解数据库和表) 关键词:USE、SHOW

《MySQL必知必会》——第四章(检索数据) 关键词:SELECT

《MySQL必知必会》——第五章(排序检索数据) 关键词:ORDER BY

《MySQL必知必会》——第六章(过滤数据) 关键词:WHERE

7.1组合WHERE子句

第六章我们总结了WHERE的用法,但只是的简单的过滤数据,为了得到更强更复杂的数据检索能力,我们还需要将WHERE子句进行组合!

7.1.1 AND 操作符

我们可以将多个WHERE语句通过AND子句连接,建立更强的数据检索能力!

AND子句:检索出匹配所有条件的行

# 检索出vend_id 等于1003 并且 prod_price 小于等于 10 的行SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;

7.1.2 OR操作符

OR子句:检索出只匹配任一条件的行

# 检索出vend_id 等于1003 或 1002的行SELECT prod_price, prod_name FROM products WHERE vend_id = 1003 OR vend_id = 1002;

如果上面语句中的 OR 变为 AND则不会返回任何数据,因为 vend_id 不会同时等于1003也等于1002的。

7.1.3 计算次序

当同时存在AND子句和OR子句时,SQL会优先处理AND子句,再处理OR子句,看个例子

# 处理时,会把(vend_id = 1003 AND prod_price >= 10)当做一个条件,(vend_id = 1002)当做一个条件去任意匹配!SELECT vend_id, prod_price, prod_name FROM products WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;

若我们想匹配 vend_id 等于1002或1003时,prod_price 大于等于10的行,应该加上圆括号

# vend_id 等于1002或1003时, prod_price 大于等于10的行SELECT vend_id, prod_price, prod_name FROM products WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;

优先级:圆括号 > AND > OR

7.2 IN操作符

IN操作符,匹配包含在圆括号里的所有值,举例看:

# 检索vend_id 等于 1002 或者 1003 的行!SELECT prod_price, prod_name FROM products WHERE vend_id IN (1002, 1003);# 还可以表示为:SELECT prod_price, prod_name FROM products WHERE vend_id = 1002 or vend_id = 1003;

通过上面的例子,可以发现OR 和 IN 的功能是相同的,那么OR和IN的优缺点呢!

若匹配的项很多,IN语句更加的简洁IN子句一般比OR子句执行更快

7.3 NOT操作符

NOT操作符作用:否定跟在它后面的语句!

# 检索 vend_id 不等于1002和1003的行!SELECT prod_price, prod_name FROM products WHERE vend_id NOT IN (1002, 1003);

注意:

NOT 只对紧跟在其后的语句有效

总结:

SELECT 列名 FROM 表名 WHERE 子句 OR 子句:检索出满足任一条件的行SELECT 列名 FROM 表名 WHERE 子句 AND 子句:检索出满足所有条件的行SELECT 列名 FROM 表名 WHERE 列名 IN (元素,元素,,,):检索出和圆括号中一致的行SELECT 列名 FROM 表名 WHERE NOT 子句:检索出和子句不一样的行

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。