mysql where子句 参数_MySql——使用where子句过滤数据
参考资料:《Mysql必知必会》
1.使用where子句
示例如下:查询价格等于10.5的行
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的所有行
select * from commodity where typeid<>1001
其输出结果和!=是一样的:
select * from commodity where typeid!=1001
都是输出:
3 1002 茶几 999.9
41003电视3199
51003冰箱2999
610041 手机1999
710042 手机7699
81004.3 手机699.9
91005T恤21.5
101005牛仔裤99
5.范围值检查
如下,查询typeid在1002和1004之间的所有行,包括1002和1004
select * from commodity where typeid between 1002 and 1004
输出:
3 1002 茶几 999.9
41003电视3199
51003冰箱2999
610041 手机1999
710042 手机7699
81004.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
51003冰箱2999
710042 手机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
710042 手机7699
8.not和in操作符
in用来指定条件范围
如下,查询商品类型等于1001,1002的所有行
select * from commodity where typeid in (1001,1002)
输出:
1 1001 牙刷 10.5
21001毛巾21.5
31002茶几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
51003冰箱2999
610041 手机1999
710042 手机7699
81004.3 手机699.9
91005T恤21.5
101005牛仔裤99
not支持对between、in、exists的取反。
mysql where子句 参数_MySql——使用where子句过滤数据相关推荐
- mysql存储过程list参数_mysql存储过程教程(1)
MySQL存储过程 1.1 CREATE PROCEDURE (创建) CREATE PROCEDURE存储过程名(参数列表) BEGIN SQL语句代码块 END 注意: 由括号 ...
- mysql异步复制参数_MySQL Replication(异步复制)基本原理
1.复制进程 Mysql的复制(replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave).实现整个复制 ...
- mysql双一参数_MySQL 的双1设置-数据安全的关键参数(案例分享)
mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...
- mysql主从字符集不一致_MySQL多字节字符集造成主从数据不一致问题
问题产生线上一直有个历史遗留问题,最近DBA提了出来,所以跟了下代码,作了下简单分析,问题描述如下: 在master-slave的环境下,对master上的某个表中的数据插入,会导致master-sl ...
- mysql 触发器 本表_MySQL触发器处理本表数据
关于MySQL的触发器,基本上每个Mysql教程里都有讲到,但是我发现那些教程里讲的都是如何处理其他表的数据.在MySQL中写触发器操作 关于MySQL的触发器,基本上每个Mysql教程里都有讲到,但 ...
- mysql between详解_MySQL中BETWEEN子句的用法实例详解
这篇文章主要介绍了MySQL中BETWEEN子句的用法详解,是MySQL入门学习中的基础知识,需要的朋友可以参考下 可以使用IN子句来代替相结合的"大于等于和小于等于"的条件. 要 ...
- mysql C where语句_mysql – 在WHERE子句中使用substr的SELECT语句
我这里有三个字段的样本表. TableA FieldA FieldB FieldC ====================================== 123XYZ456 XYZ John ...
- mysql read only参数_MySQL 参数解析 tx_read_only transaction_read_only
参数 tx_read_only 或者 transaction_read_only 用于设置事务的访问模式,可设置为 OFF/ON,默认值为 OFF,表示事务可读,可写,设置为 ON 表示事务只读,不可 ...
- mysql 函数的参数_MySQL中的数值函数
加减乘除(+.-.*./)均可用于数值计算. SELECT (1 + 1) / (1 * 2.2 - 3) 执行算术函数 单参数数值函数举例: acos(x), asin(x), atan(x), c ...
最新文章
- 运维的shell小编(6)
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Mixin 混合进行方法注入 )
- 如何避免面试中薪水要的太高或太低?
- 【Python基础】python使用python-docx操作word
- php篮球比赛,篮球数据API接口 - 【篮球比赛动画直播变化数据】API调用示例代码...
- 学习 Linux_01: 引导程序
- 数据全裸时代,你的隐私有多容易获取?
- leetcode - 22. 括号生成
- Java讲课笔记18:异常处理
- 手机logging什么意思_手机三轴稳定器的“三轴”是什么意思?
- CentOS 配置httpd使局域网能够正常訪问
- 芒果iOS开发之Swift教程01-Swift基础
- 如何测试电脑网速情况
- 03、单线通讯—SIF通讯协议(一线通)案例二
- WPS表格如何快速添加斜线表头
- ionic 配置java_ionic开发环境搭建
- 优化 WindowsXPSP2 系统服务项设置
- 静态背景下运动目标检测 matlab_动态拉伸、静态拉伸你做对了么?
- 2022-09-12 mysql语法分析实现
- 已解决 阿里云盘 应用网络状况不佳,扫码,用账号登录,用手机号登录都不可以