Skip to content
-- Active: 1739250781633@@127.0.0.1@3090@my_shop

# 返回prod_price为3.49的行
SELECT prod_name, prod_price FROM Products WHERE prod_price = 3.49;

/* ♥️ 同时有WHERE和ORDER BY,ORDER BY在WHERE后面 */

/* ♥️ WHERE操作符

  =  等于
  <> 不等于
  != 不等于
  <  小于
  <= 小于等于
  !< 不小于
  >  大于
  >= 大于等于
  !> 不大于
  BETWEEN 在指定两个值之间 (搭配AND使用)
  IS NULL 为NULL值

 */

# 过滤价格小于10美元的产品
SELECT prod_name, prod_price FROM Products WHERE prod_price < 10;

# 过滤不是供应商DLL01制造的产品
SELECT vend_id, prod_name FROM Products WHERE vend_id <> 'DLL01';
SELECT vend_id, prod_name FROM Products WHERE vend_id != 'DLL01';


# 过滤价格在5美元~10美元之间的产品
SELECT prod_name, prod_price FROM Products WHERE prod_price BETWEEN 5 AND 10;

# 空值检查
SELECT cust_name FROM Customers WHERE cust_email IS NULL;


/* ❤️上面是单个 WHERE, 下面是多个WHERE子句,通过AND和OR */

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

# OR 第一个条件满足,无论第二个条件是否满足,都会被检索出来
SELECT prod_id, prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' ORDER BY prod_price;

# 求值顺序
# 希望的是找供应商为DLL01或BRS01且价格大于10的产品
# AND的优先级高于OR
# 所以在DBMS看来,这句话的意思是:供应商为DLL01或供应商为BRS01并且价格大于10的产品
SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' AND prod_price >= 10;

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


# IN操作符指定范围
SELECT prod_name, prod_price FROM Products WHERE vend_id IN ('DLL01', 'BRS01') ORDER BY prod_name;

# 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;