您的位置:首页 > 文旅 > 美景 > 外贸seo博客_济南又出了一例_优化网站关键词排名软件_百度搜索什么关键词排名

外贸seo博客_济南又出了一例_优化网站关键词排名软件_百度搜索什么关键词排名

2025/4/18 23:23:27 来源:https://blog.csdn.net/2402_88047672/article/details/147114018  浏览:    关键词:外贸seo博客_济南又出了一例_优化网站关键词排名软件_百度搜索什么关键词排名
外贸seo博客_济南又出了一例_优化网站关键词排名软件_百度搜索什么关键词排名

目录

WHERE 子句 

条件判断(IN 和 NOT IN) 

 范围查询(BETWEEN ... AND ...)

模糊匹配搜索 (LIKE)

排序结果(ORDER BY)

去除重复记录(DISTINCT) 

 限制查询返回结果(LIMIT)

列别名(Alias)

WHERE 子句 

🎯 WHERE 是什么?

WHERE 是 SQL 中用于筛选数据的条件语句,可以用在:

  • SELECT 查询中:筛选要查看的行

  • UPDATE 操作中:只更新满足条件的行

  • DELETE 操作中:只删除满足条件的行

示例:用SELECT 查询:

SELECT * FROM products
WHERE price < 3.00;

👉 这条语句的作用是:只查询价格低于 3 元的咖啡产品 

 WHERE 支持的比较方式

类型示例含义
等于price = 3.00精确匹配
不等price != 3.00<> 3.00排除匹配
大于price > 3.00
小于等于price <= 2.50
范围price BETWEEN 2.00 AND 3.00包括边界
列表name IN ('Latte', 'Espresso')多选匹配
模糊name LIKE 'Cap%'模糊匹配:以 Cap 开头
空值offee_orgin IS NULL检查是否为空

 🌟 组合多个条件(AND / OR)

SELECT * FROM products
WHERE price > 2.50 AND offee_orgin = 'Brazil';

👉 两个条件都满足才会被选中。 

❗ 小心逻辑优先级 

WHERE price > 2.00 OR name = 'Espresso' AND offee_orgin = 'Ethiopia';

要注意 AND 的优先级高于 OR,所以最好加括号明确逻辑: 

WHERE price > 2.00 OR (name = 'Espresso' AND offee_orgin = 'Ethiopia');

 

 

条件判断(INNOT IN) 

🔍 什么是 INNOT IN

  • IN (...):判断某个值是否在某个集合中

  • NOT IN (...):判断某个值是否不在某个集合中

这两个是 WHERE 条件里的“多选匹配器”,比多个 OR 更简洁。

INSERT INTO products(name,price,coffee_orgin)
VALUES
('Pencil', 0.50, NULL),
('Notebook', 2.20, NULL),
('Eraser', 0.80, 'Colombia'),
('Ruler', 1.50, NULL),
('Pen', 1.00, NULL),
('Espresso Beans', 2.90, 'Colombia'),
('Arabica Coffee', 1.75, 'Ethiopia'),
('Robusta Coffee', 2.50, 'Vietnam'),
('Mocha Blend', 2.30, 'Yemen'),
('House Blend', 2.10, NULL);INSERT INTO customers(first_name,last_name,gender,phone_number)
VALUES
('Alice', 'Smith', 'F', '12345678901'),
('Bob', 'Johnson', 'M', '12345678902'),
('Carol', 'Williams', 'F', NULL),
('David', 'Brown', 'M', '12345678904'),
('Eva', 'Jones', 'F', '12345678905'),
('Frank', 'Garcia', 'M', NULL),
('Grace', 'Miller', 'F', '12345678907'),
('Henry', 'Davis', 'M', NULL),
('Isabel', 'Rodriguez', 'F', '12345678909'),
('Jack', 'Martinez', 'M', NULL);INSERT INTO orders(product_id,customer_id,order_time)
VALUES
(1, 2, '2025-04-01 10:15:00'),
(3, 1, '2025-04-02 09:30:00'),
(5, 4, '2025-04-02 11:45:00'),
(6, 5, '2025-04-03 14:00:00'),
(7, 3, '2025-04-04 16:30:00'),
(8, 7, '2025-04-05 13:20:00'),
(9, 6, '2025-04-06 10:50:00'),
(10, 8, '2025-04-07 09:10:00'),
(2, 9, '2025-04-08 17:25:00'),
(4, 10, '2025-04-09 15:40:00');

✅ 示例:使用 IN 查询多个产地的咖啡 

SELECT * FROM products
WHERE coffee_orgin IN ('Colombia', 'Ethiopia', 'Vietnam');

👉 查询所有产地是 哥伦比亚、埃塞俄比亚、越南 的咖啡产品。

这比你写成这样清爽多了:

WHERE coffee_orgin = 'Colombia'OR coffee_orgin = 'Ethiopia'OR coffee_orgin = 'Vietnam'

❌ 示例:使用 NOT IN 排除某些产地 

SELECT * FROM products
WHERE coffee_orgin NOT IN ('Colombia', 'Ethiopia');

 👉 查询所有不是哥伦比亚和埃塞俄比亚的产品(注意包括 NULL 的行不会被选中,因为 NULL NOT IN (...) 是未知)

🔄 IN 搭配子查询使用

查询下单过“咖啡类商品”的顾客

先定义“咖啡类”产品,比如名字中含 Coffee

SELECT * FROM customers
WHERE id IN (SELECT customer_id FROM ordersWHERE product_id IN (SELECT id FROM productsWHERE name LIKE '%Coffee%')
);

这个嵌套查询的逻辑是:

  • products 表找出名称中带 Coffee 的产品

  • 查找谁买了这些产品

  • 返回这些顾客的信息

⚠️ 使用 NOT IN 时注意 NULL 的陷阱 

SELECT * FROM products
WHERE coffee_orgin NOT IN ('Colombia');

👉 你可能以为这会返回不属于哥伦比亚的所有产品,但如果有一行 coffee_orgin = NULL,那么整个判断是“不确定”,它不会包含 NULL 的那几行。

推荐用 IS NULL 显式处理:

SELECT * FROM products
WHERE coffee_orgin NOT IN ('Colombia') OR coffee_orgin IS NULL;

 

 

 范围查询(BETWEEN ... AND ...)

BETWEEN 是 SQL 中用于表示范围查询的操作符,它的语法是: 

表达式 BETWEEN 最小值 AND 最大值

 ✅ 示例:查询价格在 1.50 到 2.50 元之间的产品

SELECT * FROM products
WHERE price BETWEEN 1.50 AND 2.50;

 等价于:

WHERE price >= 1.50 AND price <= 2.50;

💡 也就是说:BETWEEN 包含边界值!

如果有一条记录价格正好是 1.50 或 2.50,它是会被选中的。

 

 

模糊匹配搜索 (LIKE)

LIKE 用于在 SQL 中进行模糊匹配搜索,常用于 WHERE 子句里。

✅ 基本语法 

SELECT * FROM 表名
WHERE 字符串列 LIKE 模式;

LIKE 支持两个通配符:

通配符含义
%任意数量字符(包括0个)
_任意单个字符

🧪 示例:从产品表中找出名字包含 Coffee 的商品

SELECT * FROM products 
WHERE name LIKE '%Coffee%';

👉 匹配任何包含“Coffee”这个词的产品,例如:

  • Arabica Coffee

  • Robusta Coffee

1️⃣ 以特定前缀开头(如找以“Mocha”开头的)

SELECT * FROM products 
WHERE name LIKE 'Mocha%';

匹配:Mocha Blend(但不会匹配 “Dark Mocha Blend”)

2️⃣ 以特定后缀结尾(如找以“Beans”结尾)

SELECT * FROM products 
WHERE name LIKE '%Beans';

匹配:Espresso Beans

3️⃣ 精确控制字符长度:用 _

SELECT * FROM customers 
WHERE first_name LIKE 'A_ice';

👉 匹配第一位是 A,第二位是任意字符,后面是 ice,比如 Alice

LIKE 与 NULL 的关系

SELECT * FROM products 
WHERE coffee_orgin LIKE 'C%';

这条语句不会匹配 coffee_orgin IS NULL 的行。因为LIKE 操作中,NULL LIKE 'xxx' 结果是 UNKNOWN,不会返回。

 

 

排序结果(ORDER BY)

ORDER BY 用于指定查询结果的排序顺序。可以按一个或多个字段进行排序,支持升序(ASC)或降序(DESC)。 

✅ 基本语法

SELECT * FROM 表名 
ORDER BY 列名 [ASC|DESC];

ASC:升序(默认),小 → 大、A → Z

DESC:降序,大 → 小、Z → A

☕ 示例:按价格升序列出所有产品

SELECT * FROM products 
ORDER BY price ASC;

👉 最便宜的产品会排在最上面。

☕ 示例:按价格降序列出所有产品

SELECT * FROM products 
ORDER BY price DESC;

👉 最贵的咖啡排在最上面。

多字段排序

SELECT * FROM products 
ORDER BY coffee_orgin ASC, price DESC;

含义:

  • 先按 coffee_orgin 字母顺序排序

  • 如果产地一样,再按价格从高到低排序

🎯 搭配 LIMIT 获取“Top N”

比如查看最便宜的 3 个产品:

SELECT * FROM productsORDER BY price ASC 
LIMIT 3;

或者查看最新 5 个订单:

SELECT * FROM orders 
ORDER BY order_time DESC 
LIMIT 5;

注意事项

  1. ORDER BY 是在 所有筛选完成后执行,如果有 WHERE 条件,它先过滤再排序

  2. 如果字段中包含 NULL,默认在升序中排在前面,降序中排在最后(可用 IS NULL 精细控制)

  3. 排序字段可以用表达式或函数(例如 ORDER BY LENGTH(name)

 

 

去除重复记录(DISTINCT) 

什么是 DISTINCT

DISTINCT 是 SQL 中用于从结果集中去除重复记录的操作符。它通常用于 SELECT 查询中,帮助你获取唯一值的列表。

基本语法

SELECT DISTINCT 列名 FROM 表名;

它的作用是:只返回不同的(唯一的)列值。

☕ 示例:查询所有出现过的 coffee_orgin(咖啡产地)

SELECT DISTINCT coffee_orgin FROM products;

📋假设你现在的数据如下:

coffee_orgin
NULL
Colombia
Colombia
Ethiopia
Vietnam
Yemen
NULL

执行后的结果是:

coffee_orgin
NULL
Colombia
Ethiopia
Vietnam
Yemen

👉 重复的 Colombia、多个 NULL 都只显示一次! 

多列去重

SELECT DISTINCT coffee_orgin, price FROM products;

这条语句的意思是:只保留 coffee_orgin + price 组合唯一的行。不是每一列单独去重,而是把这几列看成一个整体。

 

 

 限制查询返回结果(LIMIT)

什么是 LIMIT

LIMIT 用于限制查询结果中返回的行数,特别适用于:

  • 只查看前几条记录

  • 分页显示

  • 测试查询效果(防止一次性返回大量数据)

 基本语法:

SELECT * FROM 表名
LIMIT 行数;

☕ 示例一:查看前 5 个产品

SELECT * FROM products LIMIT 5;

返回 products 表中的前 5 行(没有排序时,是任意顺序,根据存储或查询计划决定)

☕ 示例二:搭配 ORDER BY 获取“最便宜的3种商品”

SELECT * FROM products ORDER BY price ASC LIMIT 3;

先按价格升序排序,再只返回最前面的 3 条记录。

示例三:分页查询(跳过前面几条)

SELECT * FROM products ORDER BY id LIMIT 5 OFFSET 5;

这条语句意思是:

  • 跳过前 5 条

  • 然后返回接下来的 5 条

简化写法: 

LIMIT 起始位置, 返回行数LIMIT 5, 5  -- 从第6行开始,取5行

 

 

列别名(Alias)

列别名(Alias) 是用 AS 关键字或直接跟一个名称,为查询结果中的列起一个临时的名称。 

基本语法:

SELECT 列名 AS 别名
FROM 表名;

也可以省略AS:

SELECT 列名 别名
FROM 表名;

☕ 示例一:给产品名字和价格加上友好的名字 

SELECT name AS product_name,price AS unit_price
FROM products;

输出结果就像这样:

product_nameunit_price
Espresso Beans2.90
Arabica Coffee1.75

 ☕ 示例二:表达式起别名

SELECT name,price * 1.1 AS price_with_tax
FROM products;

 这里 price_with_tax 就是表达式 price * 1.1 的别名。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com