当前位置: 首页 > news >正文

MySQL 保姆级教程(五):数据过滤

第 7 章 数据过滤

7.1 组合 WHERE 子句

MySQL 允许给出多个 WHERE 子句,这些子句可用用两种方式使用:AND 或 OR 操作符

7.1.1 AND 操作符

输入: SELECT server_cost.cost_name,server_cost.cost_value,server_cost.default_value FROM server_cost WHERE server_cost.cost_value IS NULL AND server_cost.default_value < 1;
输出: 
+---------------------------+------------+---------------+
| cost_name                 | cost_value | default_value |
+---------------------------+------------+---------------+
| disk_temptable_row_cost   |       NULL |           0.5 |
| key_compare_cost          |       NULL |          0.05 |
| memory_temptable_row_cost |       NULL |           0.1 |
| row_evaluate_cost         |       NULL |           0.1 |
+---------------------------+------------+---------------+
分析: 这条 SELECT 语句包含两个条件,并且用 AND 关键字连接它们,用来指示检索满足所有给定条件的行

7.1.2 OR 操作符

输入: SELECT server_cost.cost_name,server_cost.cost_value,server_cost.default_value FROM server_cost WHERE server_cost.default_value = 666 OR server_cost.default_value = 0.5;
输出: 
+-------------------------+------------+---------------+
| cost_name               | cost_value | default_value |
+-------------------------+------------+---------------+
| disk_temptable_row_cost |       NULL |           0.5 |
+-------------------------+------------+---------------+
分析: OR 操作符告诉 DBMS 匹配任一条件而不是同时匹配两个条件

7.1.3 计算次序

输入: SELECT server_cost.cost_name,server_cost.cost_value,server_cost.default_value FROM server_cost WHERE server_cost.default_value = 666 OR server_cost.default_value = 0.5 AND server_cost.cost_value IS NULL;
输出: 结果有偏差
分析: AND 在计算次序中优先级更高,所以会优先处理 AND 操作符,所以会按照 WHERE server_cost.default_value = 666 AND server_cost.cost_value IS NULL  顺序来处理,应该使用圆括号明确地分组相应的操作符,如下
​
输入: SELECT server_cost.cost_name,server_cost.cost_value,server_cost.default_value FROM server_cost WHERE (server_cost.default_value = 666 OR server_cost.default_value = 0.5) AND server_cost.cost_value IS NULL;
输出: 
+-------------------------+------------+---------------+
| cost_name               | cost_value | default_value |
+-------------------------+------------+---------------+
| disk_temptable_row_cost |       NULL |           0.5 |
+-------------------------+------------+---------------+

7.2 IN 操作符

输入: SELECT server_cost.cost_name,server_cost.cost_value,server_cost.default_value FROM server_cost WHERE server_cost.default_value IN (0.5,1);
输出: 
+------------------------------+------------+---------------+
| cost_name                    | cost_value | default_value |
+------------------------------+------------+---------------+
| disk_temptable_row_cost      |       NULL |           0.5 |
| memory_temptable_create_cost |       NULL |             1 |
+------------------------------+------------+---------------+
分析: IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN 取合法值由逗号分隔,全都包括在圆括号中
​
优点: 1. IN 的语法更清楚且更直观2. 计算的次序更容易管理3. IN 操作符比 OR 更快4. 可以包含其他 SELECT 语句

7.3 NOT 操作符

输入: SELECT server_cost.cost_name,server_cost.cost_value,server_cost.default_value FROM server_cost WHERE server_cost.default_value NOT IN (0.5,1);
输入: 
+----------------------------+------------+---------------+
| cost_name                  | cost_value | default_value |
+----------------------------+------------+---------------+
| disk_temptable_create_cost |       NULL |            20 |
| key_compare_cost           |       NULL |          0.05 |
| memory_temptable_row_cost  |       NULL |           0.1 |
| row_evaluate_cost          |       NULL |           0.1 |
+----------------------------+------------+---------------+
分析: NOT 否定跟在它之后的条件

http://www.lryc.cn/news/374019.html

相关文章:

  • 《全职猎人》
  • Linux各目录的作用
  • Windows Docker Desktop 安装 postgres
  • C# OpenCvSharp Mat操作-创建Mat-构造函数
  • 【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)
  • 稀疏矩阵是什么 如何求
  • 57.Linux/Unix 系统编程手册(下) -- SOCKET : Unix domain
  • Hvv--知攻善防应急响应靶机--Linux1
  • Solus Linux: 有自己的软件包管理器
  • Java GUI编程
  • ROS机器人小车建模仿真与SLAM
  • Windows10安装Docker Desktop(实操步骤版)
  • Leetcode 45. 跳跃游戏 II(DP 双指针)
  • Codeforces Round 952 (Div. 4)(实时更新)
  • 【AI实践】Dify开发应用和对接微信
  • 精准定位,智慧提纯:高级数据提取策略
  • USB转I2C转SPI芯片CH341与CH347比较
  • 期权无风险套利(Risk-Free Arbitrage)举例以及期权无套利定价公式
  • Java基础知识巩固自测(上)
  • 通过 Python+Nacos实现微服务,细解微服务架构
  • 如何使用new和delete操作符进行动态内存分配和释放?
  • 【SCAU数据挖掘】数据挖掘期末总复习题库选择题及解析
  • 顶顶通呼叫中心中间件-限制最大通话时间(mod_cti基于FreeSWITCH)
  • 深度学习:使用argparse 模块
  • unity text根据文本内容自动设置高度
  • ARM 汇编 C语言 for循环
  • java:【@ComponentScan】和【@SpringBootApplication】扫包范围的冲突
  • 本学期嵌入式期末考试的综合项目,我是这么出题的
  • CSS概述
  • Tensorflow-GPU工具包了解和详细安装方法