文章目录

  • 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 子句:检索出和子句不一样的行

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

  1. 《Go语言圣经》学习笔记 第七章 接口

    <Go语言圣经>学习笔记 第七章 接口 目录 接口是合约 接口类型 实现接口的条件 flag.Value接口 接口值 sort.Interface接口 http.Handle接口 erro ...

  2. Effective C++ 学习笔记 第七章:模板与泛型编程

    第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...

  3. 吴恩达机器学习学习笔记第七章:逻辑回归

    分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...

  4. SQLite学习笔记(七)-- 数据插入、更新和删除(C++实现)

    1.代码实例 代码说明 本例主要说明如何对数据表进行插入.更新和删除操作. 测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Win7 X64 测试数据说明 测试表为Stude ...

  5. MySQL学习笔记——第3章 数据表的管理和表中数据操纵

    第3章 数据表的管理和表中数据操纵 3.1 MySQL数据类型 数字类型:数字类型包括整数类型和数值类型 整数类型:TINYINT.SMALLINT.MEDIUMINT.INT和BIGINT 数值类型 ...

  6. 【机器学习-周志华】学习笔记-第七章

    记录第一遍没看懂的 记录觉得有用的 其他章节:         第一章         第三章         第五章         第六章         第七章         第八章      ...

  7. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术

    本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...

  8. MySQL学习笔记(七)—— 数据备份还原

    数据安全 - 数据备份 一.数据库备份的概念 1.数据库备份类型 2.数据库备份方式 3.数据库备份场景 二.mysqldump命令备份单库或者多库 mysqldump使用语法: 三.MySQL的数据 ...

  9. 最优化方法(学习笔记)-第七章统计估计

    Statistical estimation Logistic 回归-二分类 整体分类思路 最大化似然函数 最大似然估计MLE 带独立同分布噪音的线性测量模型 viv_ivi​是高斯分布 viv_iv ...

  10. 第一行代码学习笔记第七章——探究内容提供器

    知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...

最新文章

  1. ectouch java_ectouch第七讲 之ECshop模板机制整理
  2. Android布局之weight属性解析
  3. linux系统内核从3.2.0-100-generic升级到3.13版本
  4. 【Python 标准库学习】时间相关的函数库 — time
  5. 从零打造一个程序员的mac
  6. 【C++函数】strcat()
  7. 阶段3 1.Mybatis_08.动态SQL_01.mybatis中的动态sql语句-if标签
  8. sqlplus无密码登录TNS协议适配器错误
  9. 银联无卡涉及关键词整理
  10. 江恩买卖规则中的定性与定量分析方法
  11. php确保多进程同时写入一个文件,php多进程读写同一个文件锁的问题及flock详解...
  12. python如何导入背景图片_背景图片的正确导入方式
  13. 红米android刷机在哪,红米手机怎么刷机 红米手机刷机教程大全
  14. 【渝粤教育】电大中专新媒体营销实务 (8)作业 题库
  15. SALSA:基于Hi-C辅助组装长读长组装结果
  16. Unity3D游戏开发入门学习笔记
  17. NUMA为何成为云计算的关键技术
  18. 数据结构 基本概念(数据项--数据元素--数据对象-数据类型-抽象数据类型)
  19. 第3节 三个败家子(3)——被忽略的刘备之子
  20. chrome浏览器被360流氓捆绑,如何解决?

热门文章

  1. 聪明贝塔(Smart Beta)
  2. 开源跨平台的Fuchsia操作系统
  3. 毕业题目:Matlab GUI界面
  4. 【优化算法】混沌单纯形法算子布谷鸟搜索优化算法【含Matlab源码 1193期】
  5. 【动力学】基于matlab GUI汽车分析仿真系统【含Matlab源码 1112期】
  6. 【车间调度】基于matlab粒子群算法求解生产调度问题【含Matlab源码 485期】
  7. dask 于数据分析_利用Dask ML框架进行欺诈检测-端到端数据分析
  8. pycharm:修改项目的python版本
  9. VS2017:无法安装Win10SDK_10.0.15063.UWP.Native、无法安装Microsoft.VisualC.Redist.12
  10. 例4.3 数制转换 - 九度教程第44题(进制转换)