美文网首页
Mysql 的数据过滤(四)

Mysql 的数据过滤(四)

作者: 改昵称已被占用 | 来源:发表于2020-04-11 00:19 被阅读0次
timg.jpeg

本节将介绍如何组合 where 子句以建立功能更强的更高级的搜索条件

组合 where 子句

and 操作符

select *
from sc
where score > 60 and score < 80;

此 sql 语句检索 sc 表中 score 字段值大于 60 并且小于 80 的所有数据,输出为:

+------+------+-------+
| SId  | CId  | score |
+------+------+-------+
| 02   | 01   |  70.0 |
| 04   | 01   |  72.0 |
| 05   | 01   |  76.0 |
+------+------+-------+

上述例子中使用了只包含一个关键字 and 的语句,把两个过滤条件组合在一起。还可以添加多个过滤条件,每添加一条就要使用一个 and

or 操作符

select *
from sc
where score = 70 or score = 80;

此 sql 语句检索 sc 表中 score 字段等于 70 或 等于 80 的所有数据,输出为:

+------+------+-------+
| SId  | CId  | score |
+------+------+-------+
| 01   | 01   |  80.0 |
| 02   | 01   |  70.0 |
| 02   | 03   |  80.0 |
| 03   | 01   |  80.0 |
| 03   | 02   |  80.0 |
| 03   | 03   |  80.0 |
+------+------+-------+

计算次序

where 可包含任意数目的 and 和 or 操作符。允许两者结合以进行复杂和高级的过滤

select *
from sc
where score = 70 or score = 80 and sid =1;

输出为:

+------+------+-------+
| SId  | CId  | score |
+------+------+-------+
| 01   | 01   |  80.0 |
| 02   | 01   |  70.0 |
+------+------+-------+

以上例子可以看出 sql(像多数语言一样)在处理 or 操作符前,优先处理 and 操作符,如果想优先处理 or 语句,则应改为:

select *
from sc
where (score = 70 or score = 80) and sid =1;

输出为:

+------+------+-------+
| SId  | CId  | score |
+------+------+-------+
| 01   | 01   |  80.0 |
+------+------+-------+

in 操作符

圆括号的另一种写法可以使用 in 操作符来代替,in 操作符用来指定条件范围,范围中的每个条件都可以进行匹配

select * 
from sc 
where score in (70,80)
order by cid;

此 sql 语句检索 sc 表中 score 字段值为 70 和 80 的所有数据,并按照 cid 的升序排序,输出为:

+------+------+-------+
| SId  | CId  | score |
+------+------+-------+
| 01   | 01   |  80.0 |
| 02   | 01   |  70.0 |
| 03   | 01   |  80.0 |
| 03   | 02   |  80.0 |
| 02   | 03   |  80.0 |
| 03   | 03   |  80.0 |
+------+------+-------+

使用 in 的优点:
1.在使用长的合法选项清单时, in 操作符的语法更清楚且更直观
2.在使用 in 时,计算的次序更容易管理(因为使用的操作符更少)
3.in 操作符一般比 or 操作符清单执行更快
4.in 的最大优点是可以包含其他 select 语句,使得能够更动态地建立 where 子句

not 操作符

where 子句中的 not 操作符有且只有一个功能,那就是否定它之后所跟的任何条件

select * 
from sc 
where score in (70,80)
order by cid;

输出为:

+------+------+-------+
| SId  | CId  | score |
+------+------+-------+
| 04   | 01   |  72.0 |
| 05   | 01   |  76.0 |
| 06   | 01   |  31.0 |
| 01   | 02   |  40.0 |
| 02   | 02   |  60.0 |
| 04   | 02   |  59.0 |
| 05   | 02   |  87.0 |
| 07   | 02   |  89.0 |
| 01   | 03   |  99.0 |
| 04   | 03   |  59.0 |
| 06   | 03   |  34.0 |
| 07   | 03   |  98.0 |
+------+------+-------+

Mysql 支持使用 not 对 in 、 between 和 exists 子句取反,这与多数其他 dbms 允许使用 not 对各种条件取反有很大的差别

相关文章

  • Mysql 的数据过滤(四)

    本节将介绍如何组合 where 子句以建立功能更强的更高级的搜索条件 组合 where 子句 and 操作符 此 ...

  • MySQL 学习 Part5 - MySQL数据过滤和正则匹配

    ? MySQL的一些数据过滤和正则匹配? 每天都要进步呐 1.MySQL的数据过滤 使用where子句 使用whe...

  • MySQL——数据过滤(高级)(四)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQ...

  • MySQL数据过滤

    数据过滤 1. 组合WHERE子句 ​ 为了进行更强的过滤控制,MySQL允许给出多个WHERE子句。这些子句...

  • MySQL学习系列之四——数据过滤和过滤数据

    在上一篇内容中我们介绍了简单的select查询、查询结果返回固定条数以及对查询结果进行排序。这一篇内容会介绍简单的...

  • python-读取mysql数据写入EXCEL(三)

    需求读取mysql数据,使用SQL过滤数据SQL结果追加数据到EXCEL 文件

  • 四、数据过滤

    1.过滤条件 测序得到的原始序列含有接头序列或低质量序列,为了保证信息分析的准确性, 需要对原始数据进行质量控制,...

  • 良好实践

    过滤输入: 是指转义或者删除不安全的字符。在数据到达应用的储存层(mysql or redis)之前,一定要过滤输...

  • MySQL主从复制过滤

    MySQL主从复制是逻辑复制,基于Binlog进行主从数据传输,MySQL提供了丰富的参数来配置主从复制过滤条件。...

  • MySQL 搜索语句--过滤数据

    MySQL使用SELECT语句的WHERE子句指定搜索条件。 使用WHERE子句 数据库表一般包含大量的数据,有时...

网友评论

      本文标题:Mysql 的数据过滤(四)

      本文链接:https://www.haomeiwen.com/subject/ixfsmhtx.html