MySql——使用where子句过滤数据
示例使用的数据表在上一个博客中创建的https://www.cnblogs.com/lbhym/p/11895968.html
参考资料:《Mysql必知必会》
1.使用where子句
示例如下:查询价格等于10.5的行
select * from commodity where price=10.5
输出:
1 1001 牙刷 10.5
2.where的操作符
上个示例中,我们使用到了‘=’这个操作符,下面列出所有条件操作符
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
between | 在指定的两个值之间 |
3.检查单个值
在Mysql中,检查字段是不区分大小写的
比如:where name=‘ys’的结果和where name='YS'是一样的。我的数据当中没有字母,所以不做演示了。
4.不匹配检查
如下,查询typeid不等于1001的所有行
select * from commodity where typeid<>1001
其输出结果和!=是一样的:
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
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。不是用=
select * from commodity where name is null
会输出所有name字段为null的行
7.组合where子句
上面的所有示例都是单个查询条件,但是实际中肯定会出现不止一个查询条件,这时候就可以用and或or来组合where子句
示例1,查询价格大于20的1001型商品
select * from commodity where price>20 and typeid=1001
输出:
2 1001 毛巾 21.5
示例2,查询价格大于3000的1003型商品或1004型商品
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更高的优先级。
所以,正确的写法如下:
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的所有行
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的所有行
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子句过滤数据的更多相关文章
- Mysql| 组合where子句过滤数据(AND,OR,IN,NOT)
ysql 允许使用多个where子句,组合where子句允许使用两种方式使用:AND 和OR子句的方式使用.数据库中的操作符号:AND , OR , IN , NOT. AND:SELECT * FR ...
- 【MySQL】使用WHERE子句 - 过滤数据
第6章 过滤数据 文章目录 第6章 过滤数据 1.使用WHERE子句 2.WHERE子句操作符 2.1.检查单个值 2.2.不匹配检查 2.3.范围值检查 2.4.空值检查 3.小结 简单记录 - M ...
- SQL基础-过滤数据
一.过滤数据 1.使用WHERE子句 过滤数据:关键字WHERE SELECT 字段列表 FROM 表名 WHERE 过滤条件; 过滤条件一般由要过滤的字段.操作符.限定值三部分组成: 如: SELE ...
- mysql过滤数据
1.大纲 WHERE - 学习如何使用WHERE子句根据指定的条件过滤行记录. AND运算符 - 介绍如何使用AND运算符以组合布尔表达式以形成用于过滤数据的复杂条件. OR运算符 - 介绍OR运算符 ...
- 《MySQL必知必会》过滤数据,数据过滤(where ,in ,null ,not)
<MySQL必知必会>过滤数据,数据过滤 1.过滤数据 1.1 使用 where 子句 在SEL ECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤. WHERE子句在表名(FR ...
- mysql必知必会(四、检索数据,五、排序检索数据,六、过滤数据,七、数据过滤)
四.select语句 1.检索单个列 select prod_name from products; 2.检索多个列 select prod_name, prod_price from product ...
- MySQL学习笔记(二)——检索数据与过滤数据
检索数据和过滤数据也就是平时用到最多的增删改查里面的查了. 一.数据检索 检索单个列: select column from table; 检索多个列: select colunm1,colu ...
- 使用where 过滤数据
--本章主要内容是MySQL中使用where搜索条件进行过滤数据. where条件在from子句后面给出,如下所示: select name,price from shops where price& ...
- ADO.NET 快速入门(十):过滤数据
我们有很多方法来过滤数据.一种是在数据库命令级别,利用 where 子句查询过滤数据.另一种是在数据填充到 DataSet 以后过滤数据.本篇讨论后者. 一旦数据填充到 DataSet,你可以使用 ...
随机推荐
- Qt5教程: (3) 自定义信号与槽
1. 自定义槽 槽可以是任何成员函数.普通全局函数.静态函数 槽函数和信号的参数和返回值要一致 由于信号是没有返回值的, 槽函数也一定没有返回值 首先在mainwidget.h中添加槽函数: publ ...
- 攻防世界(XCTF)逆向部分write up(一)
晚上做几个简单的ctf逆向睡的更好 logmein elf文件 ida看看main函数伪代码 void __fastcall __noreturn main(__int64 a1, char **a2 ...
- PHP会话机制---session的基本使用
登录网站后,在每个网页都能拿到用户信息 (1) 使用超链接传递用户名,这样太繁琐了,不建议使用 . (2) 使用数据库,每打开一个页面都查询一次用户信息表,这样网页加载速度变慢,用户体验变差. (3) ...
- POJ 1035 Spell checker(串)
题目网址:http://poj.org/problem?id=1035 思路: 看到题目第一反应是用LCS ——最长公共子序列 来求解.因为给的字典比较多,最多有1w个,而LCS的算法时间复杂度是O( ...
- vue —— 监听
vue的监听用途很大 比如:通过数据的值的变化,执行某个方法 首先:data中要有个变量初始值 finalTotalAmount的初始值是0 我们想当finalTotalAmount值发生变化时,执行 ...
- JS中==运行机制
1. 判断两边是否有NaN,如果有则一律返回false 2.判断两边是否含有布尔值,如果有的话则将true转化为1,false转化为0. 3.遇到null或者undefined,则不会进行类型转换,它 ...
- java学习2-数据类型和运算符
1.数据类型分类 java是强类型语言:a.所有的变量必须先声明后使用 b.指定类型的变量只能接受类型与之匹配的值 java语言支持的类型分为两类:基本类型和引用类型. 基本类型:包括boolean类 ...
- linux网络通讯相关命令
ifconfig 1.查看当前使用的网卡 watch cat /proc/net/dev 看下哪张网卡的流量变化大一般就是哪张网卡是在线使用的 2.ifconfig查看所有网卡信息,ifconfig ...
- vue element NavMenu 莫名出现蓝色边框
最近在开发一款官网,使用的是element,在头菜单NavMenu,的时候没有设置任何的边框属性,结果出现了如下图所示的边框线. 点击有二级菜单时出现 找了好多方法发现是有一个属性影响到了,:focu ...
- 刷14道leetcode的总结
引子 为什么我要刷leetcode?换工作?不是!那是?玩!巴菲特的双目标清单系统,基本方法是列两个清单,一个是职业生涯最重要的目标(不超过5个),另一个是比较重要的目标.对于比较重要的目标,要像躲避 ...