mysql . 过滤_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;

542f246f89067b1f1d842ca4db3e8f9b.png

2.比较运算符

33673510fe3a9ec433956b46a69a7a83.png

3.AND

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

298c1e07e3757913262880406f8d1bbe.png

4.表结构

desc customers;

d5fa397222296f293ff393cfd4401ede.png

三: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');

f4a1aec095bdda10a15b566c25b75085.png

也可以使用OR运算符执行得到与上面查询相同的结果

SELECT officeCode, city, phone FROM offices WHERE country = 'USA' OR country = 'France';

27a6344b77b4bad8dbdfb1b496a5959b.png

如果列表中有很多值,使用多个OR运算符则会构造一个非常长的语句。 因此,使用IN运算符则会缩短查询并使查询更易读。

2.NOT IN

SELECT officeCode, city, phone FROM offices WHERE country NOT IN( 'USA', 'France');

ca5c528615b6d9244ac3533180b19678.png

3.IN与子查询

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

使用表:

3aad7e5b9593dacd99ac33a11f34b9a2.png

例如,如果要查找总金额大于60000的订单,则使用IN运算符查询如下所示:

SELECT

orderNumber, customerNumber, status, shippedDate

FROM

orders

WHERE

orderNumber IN (SELECT

orderNumber

FROM

orderDetails

GROUP BY orderNumber

HAVING SUM(quantityOrdered * priceEach) > 60000);

d62f8e738eb3fa03ecb4ec57124a3e70.png

重要的是group by后,再根据分组的结果进行sum聚合。

四:Between

1.between

BETWEEN运算符允许指定要测试的值范围

SELECT

productCode, productName, buyPrice

FROM

products

WHERE

buyPrice BETWEEN 90 AND 100;

225856b8ceb3efea70bf0218614c9619.png

也可以通过使用大于或等于(>=)和小于或等于(<=)运算符来实现相同的结果。

2.NOT BETWEEN

要查找购买价格不在20到100(含20到100)之间的产品,可将BETWEEN运算符与NOT运算符组合使用

SELECT

productCode, productName, buyPrice

FROM

products

WHERE

buyPrice NOT BETWEEN 20 AND 100;

c66215235050af72cdf5af25de00567b.png

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);

274c008cd66d26d1d1b9878e7183157b.png

五:LIKE

1.LIKE

MySQL提供两个通配符,用于与LIKE运算符一起使用,它们分别是:百分比符号 - %和下划线 - _

百分比(%)通配符允许匹配任何字符串的零个或多个字符。

下划线(_)通配符允许匹配任何单个字符。

2.NOT与like语句

MySQL允许将NOT运算符与LIKE运算符组合,以找到不匹配特定模式的字符串。

SELECT

employeeNumber, lastName, firstName

FROM

employees

WHERE

lastName NOT LIKE 'B%';

a48b0cafcba8a612bcea99f9b08cb038.png

3.like与escape

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

SELECT

productCode, productName

FROM

products

WHERE

productCode LIKE '%\_20%';

9e577dd4b37d9a5c6620334cdd7de2c8.png

也可以使用ESCAPE子句指定一个不同的转义字符,例如$:

SELECT

productCode, productName

FROM

products

WHERE

productCode LIKE '%$_20%' ESCAPE '$';

2ae4eaafd61f9135915d9fbb32f78f20.png

六:LIMIT

1.LIMIT

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

语法:

d9ce262ae55ac7339b17a0a9d634544d.png

当您使用带有一个参数的LIMIT子句时,此参数将用于确定从结果集的开头返回的最大行数。

2.与order by一起使用

找到倒数5个的值。

SELECT customernumber, customername, creditlimit

FROM customers

ORDER BY creditlimit DESC

LIMIT 5;

eaed52b38b9a2b0021dab82970df2bf1.png

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

5c7ba65ca68b454fd3ec0ca362124a5b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值