mysql过滤数据
1.大纲
- WHERE - 学习如何使用
WHERE子句根据指定的条件过滤行记录。 - AND运算符 - 介绍如何使用
AND运算符以组合布尔表达式以形成用于过滤数据的复杂条件。 - OR运算符 - 介绍
OR运算符,并展示如何将OR运算符与AND运算符组合以过滤数据。 - IN运算符 - 学习如何在
WHERE子句中使用IN运算符来确定值是否匹配列表或子查询中的指定值。 - BETWEEN运算符 - 显示如何使用
BETWEEN运算符来根据指定范围查询数据。 - LIKE - 提供基于特定模式匹配查询数据的技术示例,以执行一些模糊查询。
- LIMIT子句 - 使用
LIMIT来限制SELECT语句返回的行数 - IS NULL - 使用
IS NULL运算符测试值是否为NULL。
2.where
WHERE子句允许根据指定的过滤表达式或条件来指定要选择的行。
您还将学习如何使用LIMIT子句来限制SELECT语句返回的行数。
即使WHERE子句出现在语句的末尾,但MySQL会首先使用WHERE子句中的表达式来选择匹配的行。
MySQL从SELECT子句中的选择列表中选择列。
可以像上面的查询一样形成一个简单的条件,或者是将多个表达式与逻辑运算符(如AND,OR等)组合在一起的一个非常复杂的例子。
二:AND
1.举例
SELECT lastname, firstname, jobtitle FROM employees WHERE jobtitle = 'Sales Rep' AND officeCode = 1;

2.比较运算符

3.AND
SELECT lastname, firstname, officeCode FROM employees WHERE officecode > 5;

4.表结构
desc customers;

三:IN
1.IN
运算符来确定指定列的值是否匹配列表中的值或子查询中的任何值。
IN运算符允许您确定指定的值是否与列表中的值或子查询中的任何值匹配
用法:
SELECT
column1,column2,...
FROM
table_name
WHERE
(expr|column_1) IN ('value1','value2',...);
解释:
可以在WHERE子句中与IN运算符一起使用,可使用列或表达式(expr)。
列表中的值必须用逗号(,)分隔。
IN操作符也可以用在其他语句(如INSERT,UPDATE,DELETE等)的WHERE子句中
SELECT officeCode, city, phone, country FROM offices WHERE country IN ('USA' , 'France');

也可以使用OR运算符执行得到与上面查询相同的结果
SELECT officeCode, city, phone FROM offices WHERE country = 'USA' OR country = 'France';

如果列表中有很多值,使用多个OR运算符则会构造一个非常长的语句。 因此,使用IN运算符则会缩短查询并使查询更易读。
2.NOT IN
SELECT officeCode, city, phone FROM offices WHERE country NOT IN( 'USA', 'France');

3.IN与子查询
IN运算符通常用于子查询。子查询不提供常量值列表,而是提供值列表。
使用表:

例如,如果要查找总金额大于60000的订单,则使用IN运算符查询如下所示:
SELECT
orderNumber, customerNumber, status, shippedDate
FROM
orders
WHERE
orderNumber IN (SELECT
orderNumber
FROM
orderDetails
GROUP BY orderNumber
HAVING SUM(quantityOrdered * priceEach) > 60000);

重要的是group by后,再根据分组的结果进行sum聚合。
四:Between
1.between
BETWEEN运算符允许指定要测试的值范围
SELECT
productCode, productName, buyPrice
FROM
products
WHERE
buyPrice BETWEEN 90 AND 100;

也可以通过使用大于或等于(>=)和小于或等于(<=)运算符来实现相同的结果。
2.NOT BETWEEN
要查找购买价格不在20到100(含20到100)之间的产品,可将BETWEEN运算符与NOT运算符组合使用
SELECT
productCode, productName, buyPrice
FROM
products
WHERE
buyPrice NOT BETWEEN 20 AND 100;

3.Be't'ween与日期类型
当使用BETWEEN运算符与日期类型值时,要获得最佳结果,应该使用类型转换将列或表达式的类型显式转换为DATE类型。
要查询获取所需日期(requiredDate)从2013-01-01到2013-01-31的所有订单
SELECT orderNumber,
requiredDate,
status
FROM orders
WHERE requireddate
BETWEEN CAST('2013-01-01' AS DATE)
AND CAST('2013-01-31' AS DATE);

五:LIKE
1.LIKE
MySQL提供两个通配符,用于与LIKE运算符一起使用,它们分别是:百分比符号 - %和下划线 - _
百分比(%)通配符允许匹配任何字符串的零个或多个字符。
下划线(_)通配符允许匹配任何单个字符。
2.NOT与like语句
MySQL允许将NOT运算符与LIKE运算符组合,以找到不匹配特定模式的字符串。
SELECT
employeeNumber, lastName, firstName
FROM
employees
WHERE
lastName NOT LIKE 'B%';

3.like与escape
有时想要匹配的模式包含通配符,例如10%,_20等这样的字符串时。在这种情况下,您可以使用ESCAPE子句指定转义字符,以便MySQL将通配符解释为文字字符。如果未明确指定转义字符,则反斜杠字符\是默认转义字符。
SELECT
productCode, productName
FROM
products
WHERE
productCode LIKE '%\_20%';

也可以使用ESCAPE子句指定一个不同的转义字符,例如$:
SELECT
productCode, productName
FROM
products
WHERE
productCode LIKE '%$_20%' ESCAPE '$';

六:LIMIT
1.LIMIT
在SELECT语句中使用LIMIT子句来约束结果集中的行数。LIMIT子句接受一个或两个参数。两个参数的值必须为零或正整数。
语法:

当您使用带有一个参数的LIMIT子句时,此参数将用于确定从结果集的开头返回的最大行数。
2.与order by一起使用
找到倒数5个的值。
SELECT customernumber, customername, creditlimit
FROM customers
ORDER BY creditlimit DESC
LIMIT 5;

找出结果集中价格第二高的产品。可以使用LIMIT子句来选择第二行,如以下查询(注意:偏移量从0开始,所以要指定从1开始,然后取一行记录):

mysql过滤数据的更多相关文章
- MySQL 过滤数据(WHERE子句)
WHERE子句操作符 从表products中检索prod_name,prod_price列,返回prod_price=2.5的行 mysql> SELECT prod_name, prod_p ...
- 《MySQL必知必会》过滤数据,数据过滤(where ,in ,null ,not)
<MySQL必知必会>过滤数据,数据过滤 1.过滤数据 1.1 使用 where 子句 在SEL ECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤. WHERE子句在表名(FR ...
- 【MySQL】使用WHERE子句 - 过滤数据
第6章 过滤数据 文章目录 第6章 过滤数据 1.使用WHERE子句 2.WHERE子句操作符 2.1.检查单个值 2.2.不匹配检查 2.3.范围值检查 2.4.空值检查 3.小结 简单记录 - M ...
- mysql必知必会(四、检索数据,五、排序检索数据,六、过滤数据,七、数据过滤)
四.select语句 1.检索单个列 select prod_name from products; 2.检索多个列 select prod_name, prod_price from product ...
- MySQL学习笔记(二)——检索数据与过滤数据
检索数据和过滤数据也就是平时用到最多的增删改查里面的查了. 一.数据检索 检索单个列: select column from table; 检索多个列: select colunm1,colu ...
- MySQL:基础—数据分组
MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
- MySQL 误删数据、误更新数据(update,delete忘加where条件)
MySQL 误操作后数据恢复(update,delete忘加where条件) 关键词:mysql误删数据,mysql误更新数据 转自:https://www.cnblogs.com/gomysql/p ...
- 数据仓库:Mysql大量数据快速导出
背景 写这篇文章主要是介绍一下我做数据仓库ETL同步的过程中遇到的一些有意思的内容和提升程序运行效率的过程. 关系型数据库: 项目初期:游戏的运营数据比较轻量,相关的运营数据是通过Java后台程序聚合 ...
随机推荐
- 【bzoj4009】 HNOI2015—接水果
http://www.lydsy.com/JudgeOnline/problem.php?id=4009 (题目链接) 题意 给出一颗无根树.有一些路径记为$P_i$,这些路径有两个端点和一个权值$W ...
- 【bzoj3172】 Tjoi2013—单词
http://www.lydsy.com/JudgeOnline/problem.php?id=3172 (题目链接) 题意 $n$个单词组成文本,问每个单词在文本中出现了几次. Solution 题 ...
- SQLServer过期的解决方案
看图吧,不喜欢说话,图里面我都打备注了 0SQLService异常 1找到安装中心 2升级版本 3监测ing 4输入升级key 5同意并下一步 6下一步 7下一步 8下一步 9收工 10可以打开了
- Libre 6005 「网络流 24 题」最长递增子序列 / Luogu 2766 最长递增子序列问题(网络流,最大流)
Libre 6005 「网络流 24 题」最长递增子序列 / Luogu 2766 最长递增子序列问题(网络流,最大流) Description 问题描述: 给定正整数序列x1,...,xn . (1 ...
- 洛谷P3241 开店
题意:紫妹和幽香是17岁的少女,喜欢可爱的东西. 给定一棵树,有点权,边权.每次求所有权值在[l, r]范围内的点到点x的距离和.强制在线. 解:动态点分治怎么搞啊...... 一开始想的是权值的限制 ...
- 2017年8道php面试题(真题+答案)
1.<?php echo count(strlen(“http://php.net”)); ?>的执行结果是? 答案:1 .如果var是普通变量,则返回1.正常情况下返回var中的元素或属 ...
- 网络编程之tcp窗口滑动以及拥塞控制
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部 ...
- vue之props父子组件之间的谈话
眨眼就来杭州两年了,时间真快. 我们今天来说说vue的一个api---->props 首先我们先看看一个例子,是我一个项目中写的. 看到这个:有木有一点懂了.要是没懂,继续往下看 这里我们用到了 ...
- Git与GitHub学习笔记(三).gitignore文件忽略和删除本地以及远程文件
一.Git提供了文件忽略功能.当对工作区某个目录或者某些文件设置了忽略后,git将不会对它们进行追踪 HELP:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 问题:最近 ...
- 一些javascript的工具书
http://pan.baidu.com/s/1jGj9CvO