【MySQL必知必会(四)】【数据过滤】

上一篇:【MySQL必知必会(三)】【过滤数据】

文章目录

  • 一、 数据过滤
    • 1.1 组合WHERE子句
      • 1.1.1 AND操作符
      • 1.1.2 OR操作符
      • 1.1.3 计算次序
    • 1.2 IN操作符
    • 1.3 NOT操作符

一、 数据过滤

如何组合WHERE子句以建立功能更强的更高级的搜索条件和如何使用NOT和IN操作符

1.1 组合WHERE子句

MySQL允许给出多个WHERE子句,以AND子句的方式或OR子句的方式使用

1.1.1 AND操作符

通过不止一个列进行过滤

mysql> SELECT prod_id, prod_price, prod_name
    -> FROM products
    -> WHERE vend_id = 1003 AND prod_price <= 10;

【MySQL必知必会(四)】【数据过滤】_第1张图片

1.1.2 OR操作符

匹配任一条件的行

mysql> SELECT prod_name, prod_price
    -> FROM products
    -> WHERE vend_id = 1002 OR vend_id = 1003;

【MySQL必知必会(四)】【数据过滤】_第2张图片

1.1.3 计算次序

WHERE可含任意数目的AND和OR操作符

mysql> SELECT prod_name, prod_price
    -> FROM products
    -> WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;

【MySQL必知必会(四)】【数据过滤】_第3张图片

分析
返回的行中有两行价格小于10美元,返回的行未按预期的进行过滤。SQL理解为由供应商1003制造的任何价格为10美金及以上的产品,或者由供应商1002制造的任何产品。
AND在计算次序中优先级更高,操作符被错误地组合

mysql> SELECT prod_name, prod_price
    -> FROM products
    -> WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;

【MySQL必知必会(四)】【数据过滤】_第4张图片

1.2 IN操作符

IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配

mysql> SELECT prod_name, prod_price
    -> FROM products
    -> WHERE vend_id IN (1002,1003)
    -> ORDER BY prod_name;

【MySQL必知必会(四)】【数据过滤】_第5张图片

IN操作符完成与OR相同的功能

mysql> SELECT prod_name, prod_price
    -> FROM products
    -> WHERE vend_id = 1002 OR vend_id = 1003
    -> ORDER BY prod_name;

【MySQL必知必会(四)】【数据过滤】_第6张图片

1.3 NOT操作符

WHERE子句中的NOT操作符有且只有一个功能,否定它之后的任何条件

mysql> SELECT prod_name, prod_price
    -> FROM products
    -> WHERE vend_id NOT IN (1002,1003)
    -> ORDER BY prod_name;

【MySQL必知必会(四)】【数据过滤】_第7张图片

你可能感兴趣的:(MySQL必知必会,mysql)