当前位置:Gxlcms > 数据库问题 > SQLServer:《SQL必知必会》一书的读书笔记(五)

SQLServer:《SQL必知必会》一书的读书笔记(五)

时间:2021-07-01 10:21:17 帮助过:2人阅读

prod_id, prod_price, prod_name FROM Products WHERE vend_id = DLL01 AND prod_price <= 4;

技术分享

 

5.1.2 OR 操作符

  检索任一个指定供应商制造的所有产品的名称和价格:

SELECT prod_name, prod_price
FROM Products
WHERE vend_id = DLL01 OR vend_id = BRS01;

技术分享

 

5.1.3 求值顺序(( ))

  需要列出价格为 10 美元以上,且由 DLL01 或 BRS01 制造的所有产品:

SELECT prod_name, prod_price
FROM Products
WHERE vend_id = DLL01 OR vend_id = BRS01
    AND prod_price >= 10;

 技术分享 

 

  观察结果,发现有 4 行价格小于 10 美元的。

  【原因】SQL 在处理 OR 操作符前,优先处理 AND 操作符

SELECT prod_name, prod_price
FROM Products
WHERE (vend_id = DLL01 OR vend_id = BRS01)
    AND prod_price >= 10;

技术分享

 

  【提示】在 WHERE 子句中使用圆括号:

    改变优先级;

    明确操作顺序,增强可读性。

 

5.2 IN 操作符

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

  检索由供应商 DLL01 和 BRS01 制造的所有产品:

SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN (DLL01, BRS01)
ORDER BY prod_name;
-- 用 IN 完成和 OR 同样的操作
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = DLL01 OR vend_id = BRS01
ORDER BY prod_name

技术分享

 

  使用 IN 操作符的原因
    --在有很多合法选项时,IN 的语法更直观;
    --在与其它 AND 和 OR 组合使用 IN 时,求值顺序容易管理;
    --IN 一般比一组 OR 执行得快;
    --最大优点--可以包含其它 SELECT 语句,能动态地建立 WHERE 子句。

 

5.3 NOT 操作符

  用来否定其后所跟的任何条件

  NOT 从不单独使用

  NOT 可以用在要过滤的列前或后

  列出除 DLL01 之外的所有供应商制造的产品:

SELECT prod_name
FROM Products
WHERE NOT vend_id = DLL01
ORDER BY prod_name;
--也可以使用<>,结果一样
SELECT prod_name
FROM Products
WHERE vend_id <> DLL01
ORDER BY prod_name;

技术分享

 

5.4 小结

  • AND 和 OR 组合的 WHERE 子句
  • 求值顺序
  • IN 和 NOT

 

续集:

  SQLServer:《SQL必知必会》一书的读书笔记(四)

SQLServer:《SQL必知必会》一书的读书笔记(五)

标签:

人气教程排行