示例使用的数据表在上一个博客中创建的https://www.cnblogs.com/lbhym/p/11895968.html

参考资料:《Mysql必知必会》

1.使用where子句

示例如下:查询价格等于10.5的行

  1. select * from commodity where price=10.5

输出:

1 1001 牙刷 10.5

2.where的操作符

上个示例中,我们使用到了‘=’这个操作符,下面列出所有条件操作符

where操作符
= 等于
<> 不等于
!= 不等于
< 小于
> 大于
<= 小于等于
>= 大于等于
between 在指定的两个值之间

3.检查单个值

在Mysql中,检查字段是不区分大小写的

比如:where name=‘ys’的结果和where name='YS'是一样的。我的数据当中没有字母,所以不做演示了。

4.不匹配检查

如下,查询typeid不等于1001的所有行

  1. select * from commodity where typeid<>1001

其输出结果和!=是一样的:

  1. select * from commodity where typeid!=1001

都是输出:

3 1002 茶几 999.9
4 1003 电视 3199
5 1003 冰箱 2999
6 1004 1 手机 1999
7 1004 2 手机 7699
8 1004 .3 手机 699.9
9 1005 T恤 21.5
10 1005 牛仔裤 99

5.范围值检查

如下,查询typeid在1002和1004之间的所有行,包括1002和1004

  1. select * from commodity where typeid between 1002 and 1004

输出:

3 1002 茶几 999.9
4 1003 电视 3199
5 1003 冰箱 2999
6 1004 1 手机 1999
7 1004 2 手机 7699
8 1004 .3 手机 699.9

必须指定两个值,一个低端值和一个高端值,中间必须用and连接。

6.空值检查

如下,检查name为NULL的行,注意需要用is null。不是用=

  1. select * from commodity where name is null

会输出所有name字段为null的行

7.组合where子句

上面的所有示例都是单个查询条件,但是实际中肯定会出现不止一个查询条件,这时候就可以用andor来组合where子句

示例1,查询价格大于20的1001型商品

  1. select * from commodity where price>20 and typeid=1001

输出:

2 1001 毛巾 21.5

示例2,查询价格大于3000的1003型商品或1004型商品

  1. select * from commodity where typeid=1003 or typeid=1004 and price>3000

大家仔细看看上面的代码,似乎没什么问题,类型等于1003或类型等于1004并且价格大于3000

输出结果:

4 1003 电视 3199
5 1003 冰箱 2999
7 1004 2 手机 7699

但是从结果看是错误的,这是由于计算次序的问题。在mysql中and拥有更高的优先级,所以看似没问题的组合被mysql错误的组合了,where后面的条件可以看成

(price>3000 and typeid=1003) or typeid=1004

可以用小括号来组合where后面的条件,小括号具有比and和or更高的优先级

所以,正确的写法如下:

  1. select * from commodity where (typeid=1003 or typeid=1004) and price>3000

输出:

4 1003 电视 3199
7 1004 2 手机 7699

8.not和in操作符

in用来指定条件范围


如下,查询商品类型等于1001,1002的所有行

  1. select * from commodity where typeid in (1001,1002)

输出:

1 1001 牙刷 10.5
2 1001 毛巾 21.5
3 1002 茶几 999.9

需要注意的是,大家不要当成between的另外一种写法,小括号中可以有N个值,用逗号隔开,最后会返回指定字段出现在小括号中的所有行。

in和or的功能其实有些相同,但是in在遇到更多条件时会显得更加简洁。而且in的执行效率更快,最大的优点是可以包含select语句。比如小括号里面你不确定是哪些值,需用实时的查询,那么select语句就可以写在小括号里面。

not用来否定后面跟着的条件。


如下,查询商品类型不等于1001,1002的所有行

  1. select * from commodity where typeid not in (1001,1002)

输出:

4 1003 电视 3199
5 1003 冰箱 2999
6 1004 1 手机 1999
7 1004 2 手机 7699
8 1004 .3 手机 699.9
9 1005 T恤 21.5
10 1005 牛仔裤 99

not支持对between、in、exists的取反。

MySql——使用where子句过滤数据的更多相关文章

  1. Mysql| 组合where子句过滤数据(AND,OR,IN,NOT)

    ysql 允许使用多个where子句,组合where子句允许使用两种方式使用:AND 和OR子句的方式使用.数据库中的操作符号:AND , OR , IN , NOT. AND:SELECT * FR ...

  2. 【MySQL】使用WHERE子句 - 过滤数据

    第6章 过滤数据 文章目录 第6章 过滤数据 1.使用WHERE子句 2.WHERE子句操作符 2.1.检查单个值 2.2.不匹配检查 2.3.范围值检查 2.4.空值检查 3.小结 简单记录 - M ...

  3. SQL基础-过滤数据

    一.过滤数据 1.使用WHERE子句 过滤数据:关键字WHERE SELECT 字段列表 FROM 表名 WHERE 过滤条件; 过滤条件一般由要过滤的字段.操作符.限定值三部分组成: 如: SELE ...

  4. mysql过滤数据

    1.大纲 WHERE - 学习如何使用WHERE子句根据指定的条件过滤行记录. AND运算符 - 介绍如何使用AND运算符以组合布尔表达式以形成用于过滤数据的复杂条件. OR运算符 - 介绍OR运算符 ...

  5. 《MySQL必知必会》过滤数据,数据过滤(where ,in ,null ,not)

    <MySQL必知必会>过滤数据,数据过滤 1.过滤数据 1.1 使用 where 子句 在SEL ECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤. WHERE子句在表名(FR ...

  6. mysql必知必会(四、检索数据,五、排序检索数据,六、过滤数据,七、数据过滤)

    四.select语句 1.检索单个列 select prod_name from products; 2.检索多个列 select prod_name, prod_price from product ...

  7. MySQL学习笔记(二)——检索数据与过滤数据

    检索数据和过滤数据也就是平时用到最多的增删改查里面的查了. 一.数据检索 检索单个列: select column from table; 检索多个列:     select colunm1,colu ...

  8. 使用where 过滤数据

    --本章主要内容是MySQL中使用where搜索条件进行过滤数据. where条件在from子句后面给出,如下所示: select name,price from shops where price& ...

  9. ADO.NET 快速入门(十):过滤数据

    我们有很多方法来过滤数据.一种是在数据库命令级别,利用 where 子句查询过滤数据.另一种是在数据填充到 DataSet 以后过滤数据.本篇讨论后者.   一旦数据填充到 DataSet,你可以使用 ...

随机推荐

  1. 爬虫3:html页面+webdriver模块+demo

    保密性好的网站,不能使用request请求页面信息,这样可以使用webdriver模块先开启一个浏览器,然后爬去信息,甚至还可以click等操作对页面操作,再爬取. demo 一般流程: 1)包含se ...

  2. 一文读懂Spring MVC执行流程

    说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图:   ...

  3. 《HTML5+CSS3+JavaScript 从入门到精通(标准版)》学习笔记(一)

    以下是以代码形式书写的笔记,本系列会持续更新,主要内容预计是类似下文的笔记,兼或一些思考与小项目,希望对你会有所帮助 1 <!-- --> <!DOCTYPE html>< ...

  4. task一个任务结束后执行另一个操作

    //创建一个任务 Task<int> task = new Task<int>(() => { ; //显示进度条遮照层, this.ShowPrograssBar(); ...

  5. 【JS】深入理解JS原型和继承

    前言 在学习JS中的原型,原型链,继承这些知识之前,我们先学习下基础知识:函数和对象的关系.  我们一直都知道,函数也是对象的一种,因为通过instanceof就可以判断出来.但是函数和对象的关系并不 ...

  6. 02 Python学习笔记-基本数据类型(二)

    一.基本知识 1.缩进: 2.一行多条语句: 3.断行: 4.注释 # 单行注释 '''这是一段 多行注释''' 5. 变量 1. 变量类型(局部变量.全局变量.系统变量) 2. 变量赋值 多重赋值x ...

  7. Linux下终端字体颜色设置方法

    颜色=\033[代码;前景;背景m 如:\033[1;32;40m表示高亮显示字体为绿色,背景色为黑色 颜色=\[\033[代码;前景;背景m\] echo -e "this is a \0 ...

  8. Unity Dropdown

    unity DropDown控件应用很简单 代码如下 frameDpdown.options.Clear(); //Dropdown.OptionData optDataFrame = new Dro ...

  9. Cookie 、session、token都是什么?

    1.Cookie 起源:1993年,网景浏览器的员工为了让用户访问某网站时,进一步提高访问速度,实现个人化网络发明了cookie.(看来有时候的偷懒会促进社会的进步啊~,就像人们不想做饭就诞生了外卖) ...

  10. 解决移动端touch事件与click冲突的问题

    最简单的办法,就只绑定一个事件不就行了: 第二种,我觉得和第一种也没啥区别.. const Button = document.getElementById("targetButton&qu ...