mysql怎么过滤数据_MySQL基础之过滤数据

使用WHERE子句

通常会根据操作或报告的需要提取表中的数据的子集。只检索所需数据需要指定的搜索条件, 搜索条件也称为过滤条件

在SELECT语句中, 数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出。

MariaDB [crashcourse]> SELECT prod_name, prod_price FROM products WHERE prod_price=2.50;+---------------+------------+

| prod_name | prod_price |

+---------------+------------+

| Carrots | 2.50 |

| TNT (1 stick) | 2.50 |

+---------------+------------+

2 rows in set (0.002sec)

MariaDB[crashcourse]>

这个例子采用了简单的相等测试: 它检查一个列是否具有指定的值, 据此进行过滤。

WHERE子句的位置

在同时使用ORDER BY和WHERE子句时, 应该让ORDER BY位于WHERE之后, 否则将会产生错误。

WHERE子句操作符

MySQL支持表中所有条件的操作符

操作符

说明

=

不等于

<>

不等于

!=

不等于

<

小于

<=

小于等于

>

大于

>=

大于等于

BETWEEN

在指定的两个值之间

检查单个值

测试相等的例子

MariaDB [crashcourse]> SELECT prod_name, prod_price FROM products WHERE prod_name='fuses';+-----------+------------+

| prod_name | prod_price |

+-----------+------------+

| Fuses | 3.42 |

+-----------+------------+

1 row in set (0.001sec)

MariaDB[crashcourse]>

MySQL不区分大小写, 所以fuses与Fuses相匹配

测试小于的例子

MariaDB [crashcourse]> SELECT prod_name, prod_price FROM products WHERE prod_price < 10;+---------------+------------+

| prod_name | prod_price |

+---------------+------------+

| .5 ton anvil | 5.99 |

| 1 ton anvil | 9.99 |

| Carrots | 2.50 |

| Fuses | 3.42 |

| Oil can | 8.99 |

| Sling | 4.49 |

| TNT (1 stick) | 2.50 |

+---------------+------------+

7 rows in set (0.002sec)

MariaDB[crashcourse]>

不匹配检索

MariaDB [crashcourse]> SELECT vend_id, prod_name FROM products WHERE vend_id <> 1003;+---------+--------------+

| vend_id | prod_name |

+---------+--------------+

| 1001 | .5 ton anvil |

| 1001 | 1 ton anvil |

| 1001 | 2 ton anvil |

| 1002 | Fuses |

| 1005 | JetPack 1000 |

| 1005 | JetPack 2000 |

| 1002 | Oil can |

+---------+--------------+

7 rows in set (0.001sec)

MariaDB[crashcourse]>

何时使用引号

单引号用来限定字符串。如果将值与串类型的列进行比较则需要使用单引号, 用来与数值列进行比较的值不用引号

范围值检查

为了检查某个范围的值, 可使用BETWEEN操作符。BETWEEN需要两个值, 即范围的开始值和结束值。

MariaDB [crashcourse]> SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;+----------------+------------+

| prod_name | prod_price |

+----------------+------------+

| .5 ton anvil | 5.99 |

| 1 ton anvil | 9.99 |

| Bird seed | 10.00 |

| Oil can | 8.99 |

| TNT (5 sticks) | 10.00 |

+----------------+------------+

5 rows in set (0.001sec)

MariaDB[crashcourse]>

在使用BETWEEN时, 必须指定两个值-所需范围的低端值和高端值。这两个值必须用AND关键字分割。BETWEEN匹配范围中的所有值, 包括指定的开始值和结束值

空值检查

在一个列不包含值时, 称其为包含空值NULL

NULL: 无值, 它与字段包含0、空字符串或仅仅包含空格不同

SELECT语句中有一个特殊的WHERE子句, 可用来检查具有NULL的值, 这个WHERE子句就是IS NULL子句。

MariaDB [crashcourse]> SELECT cust_id FROM customers WHERE cust_email IS NULL;+---------+

| cust_id |

+---------+

| 10002 |

| 10005 |

+---------+

2 rows in set (0.001sec)

MariaDB[crashcourse]>

这条语句返回没有邮箱(空cust_email字段, 不是邮箱为0)的所有顾客id。

NULL与不匹配

在通过过滤选择出不具有特定值的行时, 可能希望返回具有NULL的值的行, 但是不行, 因为未知具有特殊的含义, 数据库不知道它们是否匹配, 所以在匹配过滤或不匹配过滤时不返回它们。

因此, 在过滤数据时, 一定要验证返回数据中确实给出了被过滤列具有NULL的行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值