使用 WHERE 子句

数据库表一般包含大量的数据,很少需要检索表中所有行。通常只
会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要
指定搜索条件(search criteria),搜索条件也称为过滤条件(filter
condition)。
在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。
WHERE 子句在表名( FROM 子句)之后给出,

这条语句从 products 表中检索两个列,但不返回所有行,只返
回 prod_price 值为 2.50 的行

这个例子采用了简单的相等测试:它检查一个列是否具有指定的值,
据此进行过滤。但是SQL允许做的事情不仅仅是相等测试

SQL过滤与应用过滤 数据也可以在应用层过滤。为此目
的,SQL的 SELECT 语句为客户机应用检索出超过实际所需的
数据,然后客户机代码对返回数据进行循环,以提取出需要
的行。

通常,这种实现并不令人满意。因此,对数据库进行了优化,
以便快速有效地对数据进行过滤。让客户机应用(或开发语言)
处理数据库的工作将会极大地影响应用的性能,并且使所创建
的应用完全不具备可伸缩性。此外,如果在客户机上过滤数据,
服务器不得不通过网络发送多余的数据,这将导致网络带宽的
浪费。

WHERE 子句的位置 在同时使用 ORDER BY 和 WHERE 子句时,应
该让 ORDER BY 位于 WHERE 之后,否则将会产生错误

WHERE 子句操作符

我们在关于相等的测试时看到了第一个 WHERE 子句,它确定一个列是
否包含特定的值。MySQL支持表6-1列出的所有条件操作符

不匹配检查

以下例子列出不是由供应商 1003 制造的所有产品

何时使用引号单引号用来限定字符串。如果将值与串类型的
列进行比较,则需要限定引号。用来与数值列进行比较的值不
用引号。

下面是相同的例子,其中使用 != 而不是 <> 操作符:

范围值检查

为了检查某个范围的值,可使用 BETWEEN 操作符。其语法与其他 WHERE
子句的操作符稍有不同,因为它需要两个值,即范围的开始值和结束值。
例如, BETWEEN 操作符可用来检索价格在5美元和10美元之间或日期在指
定的开始日期和结束日期之间的所有产品

下面的例子说明如何使用 BETWEEN 操作符,它检索价格在5美元和10
美元之间的所有产品

从这个例子中可以看到,在使用 BETWEEN 时,必须指定两个值
——所需范围的低端值和高端值。这两个值必须用 AND 关键字
分隔。 BETWEEN 匹配范围中所有的值,包括指定的开始值和结束值

空值检查

在创建表时,表设计人员可以指定其中的列是否可以不包含值。在
一个列不包含值时,称其为包含空值 NULL

NULL 无值(no value),它与字段包含 0 、空字符串或仅仅包含
空格不同

SELECT 语句有一个特殊的 WHERE 子句,可用来检查具有 NULL 值的列。
这个 WHERE 子句就是 IS NULL 子句。其语法如下:

这条语句返回没有价格(空 prod_price 字段,不是价格为 0 )的所有
产品,由于表中没有这样的行,所以没有返回数据

NULL 与不匹配 在通过过滤选择出不具有特定值的行时,你
可能希望返回具有 NULL 值的行。但是,不行。因为未知具有
特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤
或不匹配过滤时不返回它们。
因此,在过滤数据时,一定要验证返回数据中确实给出了被
过滤列具有 NULL 的行。

本章介绍了如何用 SELECT 语句的 WHERE 子句过滤返回的数据。我们学
习了如何对相等、不相等、大于、小于、值的范围以及 NULL 值等进行测
试。

mysql必知必会--过 滤 数 据的更多相关文章

  1. 《MySQL 必知必会》读书总结

    这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...

  2. 《MySQL必知必会》[01] 基本查询

    <MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...

  3. mysql必知必会系列(一)

    mysql必知必会系列是本人在读<mysql必知必会>中的笔记,方便自己以后查看. MySQL. Oracle以及Microsoft SQL Server等数据库是基于客户机-服务器的数据 ...

  4. mysql必知必会

    春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...

  5. 《MySQL必知必会》整理

    目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...

  6. MySql必知必会实战练习(二)数据检索

    在上篇博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,下面进行数据检索和过滤操作. 1. Select子句使用顺序 select--->DISTINCT---& ...

  7. 读《MySQL必知必会》我学到了什么?

    前言 最近在写项目的时候发现自己的SQL基本功有些薄弱,遂上知乎查询MYSQL关键字,期望得到某些高赞答案的指点,于是乎发现了 https://www.zhihu.com/question/34840 ...

  8. MySQL必知必会1

    MySQL必知必会 ​ 了解SQL 什么是数据库:数据库(database)保存有阻止的数据的容器,可以把数据库想象成一个文件柜. 什么是表:表(table) 某种特定类型结构的结构化清单,数据库中的 ...

  9. MySQL必知必会(第4版)整理笔记

    参考书籍: BookName:<SQL必知必会(第4版)> BookName:<Mysql必知必会(第4版)> Author: Ben Forta 说明:本书学习笔记 1.了解 ...

  10. 《mysql 必知必会》 速查指南

    目录 增 添加一整行 插入多行 删 删除指定行 删除所有行 改 查 简单检索 结果筛选 结果排序 结果过滤 创建字段 处理函数 数据分组 其他高级用法 文章内容均出自 <MySQL 必知必会&g ...

随机推荐

  1. linux下svn安装和使用(centos)

    1.安装svn 本地测试环境 centos6.5 # yum安装 yum -y install subversion # 查看svn版本 svnserve --version # 建立版本库目录 mk ...

  2. Day9-Python3基础-多线程、多进程

    1.进程.与线程区别 2.python GIL全局解释器锁 3.线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Que ...

  3. 物流跟踪API-快递单订阅

    上一篇文章我们讲解了轨迹查询的接口,通过快递鸟接口可以实现实时查询物流轨迹,这次给大家推荐订阅服务功能. 为了更好的理解订阅服务,我们来做个对比, 即时查询是主动查询物流轨迹,需要我们主动调用接口才能 ...

  4. Features for Multi-Target Multi-Camera Tracking and Re-identification论文解读

    解读一:Features for Multi-Target Multi-Camera Tracking and Re-identification Abstract MTMCT:从多个摄像头采集的视频 ...

  5. Redis(九):主从复制的设计与实现解析

    前面几篇我们已经完全理解了redis的基本功能的实现了. 但单靠基本功能实现,往往还是称不上优秀的项目的.毕竟,我们现在面对的都是复杂的环境,高并发的场景,大数据量的可能. 简而言之,现在的系统一般都 ...

  6. cmake处理多源文件目录的方法(转)

    cmake处理源代码分布在不同目录中的情况也很简单,现在假设我们的源代码分布情况如下: 源代码的分布情况 其中src目录下的文件要编译成一个链接库 第一步,项目主目录中的CMakelist.txt 在 ...

  7. 兄弟连 企业shell笔试题 16-31

    企业实践题16:企业案例:写网络服务独立进程模式下rsync的系统启动脚本 例如:/etc/init.d/rsyncd{start|stop|restart} .要求:1.要使用系统函数库技巧.2.要 ...

  8. k8s系列---部署集群

    docer启动出错 [root@centos-minion yum.repos.d]# systemctl start docker Job for docker.service failed bec ...

  9. iOS开发基础--C语言简述(一)

    先占个坑,回来再补 需要的运行环境,自行搜寻,工具不止一种,不详细叙述. C语言是一门非常重要的编程语言,与硬件底层直接相关,很多语言到最后的接口封装都会选择C语言,因而C语言一直很受欢迎,也务必掌握 ...

  10. 《python可以这样学》第二章

    Python序列 列表与列表推导式 列表创建与删除 创建列表对象 >>> a_list = list((3, 5, 7, 9, 11)) >>> a_list = ...