前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数据库设计和SQL基础语法】--查询数据--过滤

【数据库设计和SQL基础语法】--查询数据--过滤

作者头像
喵叔
发布2023-12-18 12:30:51
1810
发布2023-12-18 12:30:51
举报
文章被收录于专栏:喵叔's 专栏
一、过滤数据
1.1 WHERE子句
  1. 基本条件过滤
    • 使用比较运算符 在SQL中,基本条件过滤是通过使用比较运算符来限定检索的数据。以下是一些常用的比较运算符和它们的用法:

    运算符说明示例等于 (=)用于检索列中与指定值相等的行。示例:SELECT * FROM employees WHERE department_id = 1;不等于 (<>, !=)用于检索列中与指定值不相等的行。示例:SELECT * FROM products WHERE category <> 'Electronics';大于 (>)用于检索列中大于指定值的行。示例:SELECT * FROM orders WHERE total_amount > 1000;小于 (<)用于检索列中小于指定值的行。示例:SELECT * FROM students WHERE age < 18;大于等于 (>=)用于检索列中大于或等于指定值的行。示例:SELECT * FROM employees WHERE salary >= 50000;小于等于 (<=)用于检索列中小于或等于指定值的行。示例:SELECT * FROM products WHERE price <= 50;这些比较运算符可以在WHERE子句中灵活使用,帮助过滤出满足特定条件的数据。在实际应用中,可以根据需要组合多个条件来实现更复杂的数据过滤。

    • 使用逻辑运算符 逻辑运算符在SQL中用于结合多个条件,从而实现更复杂的条件过滤。以下是一些常用的逻辑运算符及其用法:

    运算符说明示例AND 运算符用于结合两个条件,要求同时满足两个条件的行被检索示例:SELECT * FROM employees WHERE department_id = 1 AND salary > 50000;OR 运算符用于结合两个条件,只要满足其中一个条件的行就会被检索。示例:SELECT * FROM products WHERE category = 'Electronics' OR price > 1000;NOT 运算符用于否定一个条件,检索不满足指定条件的行。示例:SELECT * FROM students WHERE NOT age < 18;LIKE 运算符用于模糊匹配,检索满足指定模式的行。示例:SELECT * FROM employees WHERE first_name LIKE 'J%';这些逻辑运算符可以根据需要进行灵活组合,构建复杂的条件过滤条件,以满足各种查询需求。在实际使用中,了解逻辑运算符的功能和用法是进行高效数据检索的关键。

  2. 范围条件过滤 运算符说明示例IN 运算符用于检索属于指定值列表中的行示例:SELECT * FROM orders WHERE customer_id IN (1, 2, 3);BETWEEN 运算符用于检索在指定范围内的行。示例:SELECT * FROM products WHERE price BETWEEN 50 AND 100;
  3. 空值检查
    • 使用 IS NULL IS NULL 是一种条件过滤操作符,用于检索列中值为 NULL 的行。以下是一些关于 IS NULL 的用法示例: 描述示例基本用法SELECT * FROM employees WHERE email IS NULL;与其他条件结合使用:结合其他条件过滤,检索满足额外条件且特定列值为 NULL 的行。SELECT * FROM products WHERE category = 'Electronics' AND manufacturer IS NULL;使用 NOT 运算符:使用 NOT 运算符检索特定列值不为 NULL 的行。SELECT * FROM orders WHERE ship_date IS NOT NULL;在 UPDATE 语句中使用:在 UPDATE 语句中,将特定列的值设置为 NULLUPDATE employees SET phone_number = NULL WHERE employee_id = 101;IS NULL 是处理缺失值或未知值的一种常见方式。在使用时要注意,NULL 不同于空字符串或零,而是表示缺失或未知的值。因此,在查询和更新数据时,适当地使用 IS NULL 可以确保正确处理这些情况。
    • 使用 IS NOT NULL IS NOT NULL 是一种条件过滤操作符,用于检索列中值不为 NULL 的行。以下是一些关于 IS NOT NULL 的用法示例: 描述示例基本用法:用于检索某列中值不为 NULL 的行。SELECT * FROM employees WHERE email IS NOT NULL;与其他条件结合使用:结合其他条件过滤,检索满足额外条件且特定列值不为 NULL 的行。SELECT * FROM products WHERE category = 'Electronics' AND manufacturer IS NOT NULL;在 UPDATE 语句中使用:在 UPDATE 语句中,将特定列的值设置为非 NULLUPDATE employees SET phone_number = '123-456-7890' WHERE employee_id = 101;在插入数据时使用:在插入数据时,确保将非 NULL 的值插入相应的列。```INSERT INTO customers (customer_id, customer_name) VALUES (1, ‘ABC Corp’);IS NOT NULL 用于过滤出不包含 NULL 值的行,对于确保数据完整性和处理缺失值时很有用。在查询和更新数据时,适当地使用 IS NOT NULL 可以确保正确处理这些情况。
1.2 AND、OR、NOT
  1. 多条件组合
    • 使用 AND 连接条件 AND 是逻辑运算符之一,用于连接多个条件,要求所有条件同时满足。以下是使用 AND 连接条件的示例: 描述示例基本用法:检索同时满足两个条件的行。SELECT * FROM products WHERE category = 'Electronics' AND price > 500;多个条件:结合多个条件,检索满足所有条件的行。SELECT * FROM employees WHERE department = 'IT' AND salary > 60000 AND experience_years > 5;与其他条件结合使用:与其他条件组合,形成更复杂的筛选条件。SELECT * FROM orders WHERE order_date >= '2023-01-01' AND total_amount < 1000 AND customer_id = 101;UPDATE 语句中使用:在 UPDATE 语句中,使用 AND 更新同时满足多个条件的行。UPDATE products SET stock_quantity = 100 WHERE category = 'Clothing' AND price > 50;INSERT INTO 语句中使用:在插入数据时,使用 AND 以确保插入数据满足多个条件。INSERT INTO customers (customer_id, customer_name, country) VALUES (1, 'ABC Corp', 'USA') WHERE country = 'USA' AND credit_limit > 5000;通过使用 AND,可以将多个条件组合起来,以更精细地筛选和检索满足多个条件的数据。这对于构建复杂的查询或更新操作非常有用。
    • 使用 OR 连接条件 OR 是逻辑运算符之一,用于连接多个条件,要求至少一个条件满足。以下是使用 OR 连接条件的示例: 描述示例基本用法: 检索满足两个条件之一的行。SELECT * FROM products WHERE category = 'Electronics' OR price > 500;多个条件:结合多个条件,检索满足任一条件的行。SELECT * FROM employees WHERE department = 'IT' OR salary > 60000 OR experience_years > 5;与其他条件结合使用:与其他条件组合,形成更灵活的筛选条件。SELECT * FROM orders WHERE order_date >= '2023-01-01' OR total_amount < 1000 OR customer_id = 101;UPDATE 语句中使用:在 UPDATE 语句中,使用 OR 更新满足任一条件的行。UPDATE products SET stock_quantity = 100 WHERE category = 'Clothing' OR price > 50;INSERT INTO 语句中使用:在插入数据时,使用 OR 以确保插入数据满足至少一个条件。INSERT INTO customers (customer_id, customer_name, country) VALUES (1, 'ABC Corp', 'USA') WHERE country = 'USA' OR credit_limit > 5000;通过使用 OR,可以构建更灵活的条件,以检索或更新满足至少一个条件的数据。这对于处理多个可能情况的查询和更新操作非常有用。
    • 使用 NOT 反转条件 NOT 是一个逻辑运算符,用于反转条件的真假。以下是使用 NOT 反转条件的示例: 描述示例基本用法:检索不满足条件的行。SELECT * FROM products WHERE NOT category = 'Electronics';结合其他条件:与其他条件结合使用,检索不满足多个条件的行。SELECT * FROM employees WHERE NOT department = 'HR' AND NOT experience_years > 3;在 UPDATE 语句中使用:在 UPDATE 语句中,使用 NOT 更新不满足条件的行。UPDATE products SET stock_quantity = 50 WHERE NOT category = 'Clothing' AND NOT price > 50;在 INSERT INTO 语句中使用:在插入数据时,使用 NOT 以确保插入数据不满足某些条件。INSERT INTO customers (customer_id, customer_name, country) VALUES (1, 'ABC Corp', 'USA') WHERE NOT country = 'Canada' AND NOT credit_limit > 5000;通过使用 NOT,可以反转条件,从而检索或更新不满足条件的数据。这对于需要排除特定情况的查询和更新操作非常有用。
1.3 模糊查询
  1. 使用 LIKE
    • 匹配模式 LIKE 是 SQL 中用于匹配模式的关键字,通常与通配符一起使用。以下是使用 LIKE 进行模式匹配的一些示例: 描述示例基本用法:检索以特定字符或字符集开头的行。SELECT * FROM employees WHERE first_name LIKE 'A%';通配符 %% 通配符表示零个、一个或多个字符。检索以 ‘S’ 开头的任何行。:SELECT * FROM products WHERE product_name LIKE 'S%'; 检索以 ‘r’ 结尾的任何行:SELECT * FROM customers WHERE last_name LIKE '%r';检索包含 ‘a’ 的任何位置的行:SELECT * FROM orders WHERE order_description LIKE '%a%';通配符 __ 通配符表示一个单一的字符。检索第二个字符是 ‘o’,第四个字符是 ‘i’ 的行:SELECT * FROM products WHERE product_name LIKE '_o_i%';在 UPDATE 语句中使用:在 UPDATE 语句中,使用 LIKE 更新符合特定模式的行。UPDATE employees SET title = 'Manager' WHERE title LIKE '%Supervisor%'; 在 DELETE 语句中使用:在 DELETE 语句中,使用 LIKE 删除符合特定模式的行。DELETE FROM customers WHERE email LIKE '%example.com';使用 LIKE 可以进行灵活的模式匹配,适用于在查询中查找符合特定模式的数据。
    • % 和 _ 的使用 在 SQL 中,%_ 是通配符,用于在 LIKE 操作符中进行模式匹配。它们分别表示不同的匹配规则: 描述示例%(百分号):% 通配符用于表示零个、一个或多个字符。匹配以 ‘A’ 开头的任何字符串:SELECT * FROM employees WHERE first_name LIKE 'A%';匹配以 ‘S’ 开头的任何字符串:SELECT * FROM products WHERE product_name LIKE 'S%'; 匹配包含 ‘a’ 的任何位置的字符串:SELECT * FROM orders WHERE order_description LIKE '%a%';_(下划线):_ 通配符用于表示单个字符。匹配第二个字符是 ‘o’,第四个字符是 ‘i’ 的字符串:SELECT * FROM products WHERE product_name LIKE '_o_i%';这些通配符可以结合使用,使模式匹配更加灵活。例如,可以使用 % 来匹配任意数量的字符,而使用 _ 来匹配特定位置的单个字符。使用这些通配符,可以进行各种模糊查询和数据检索操作。
  2. 使用 wildcard 字符 在 SQL 中,通配符字符是用于进行模糊搜索和匹配的特殊字符。主要的通配符字符是 %_,但有时候也提到了 []^。下面是这些通配符的使用:

描述

示例

%(百分号): % 通配符用于匹配零个、一个或多个字符。

匹配以 ‘A’ 开头的任何字符串:SELECT * FROM employees WHERE first_name LIKE 'A%';匹配以 ‘S’ 开头的任何字符串:SELECT * FROM products WHERE product_name LIKE 'S%';匹配包含 ‘a’ 的任何位置的字符串:SELECT * FROM orders WHERE order_description LIKE '%a%';

_(下划线):_ 通配符用于匹配单个字符。

匹配第二个字符是 ‘o’,第四个字符是 ‘i’ 的字符串:SELECT * FROM products WHERE product_name LIKE '_o_i%';

[]:[] 用于指定字符集,匹配其中的任何一个字符。

匹配以 ‘C’ 或 ‘M’ 开头的字符串:SELECT * FROM customers WHERE customer_name LIKE '[CM]%';

^: ^ 用于在字符集中否定匹配,匹配不在指定字符集中的字符。

匹配不以 ‘A’ 或 ‘B’ 开头的字符串:SELECT * FROM products WHERE product_name LIKE '[^AB]%';

这些通配符可以根据实际需求组合使用,提供更灵活的模糊搜索和匹配功能。

三、总结

过滤数据是 SQL 中的关键操作之一。通过 WHERE 子句,可以使用比较运算符、逻辑运算符、模糊查询等条件进行灵活筛选。AND、OR、NOT 运算符支持多条件组合,而模糊查询的 LIKE 运算符搭配 % 和 _ 通配符提供强大的模式匹配功能。这些技巧帮助精准检索所需数据。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、过滤数据
    • 1.1 WHERE子句
      • 1.2 AND、OR、NOT
        • 1.3 模糊查询
        • 三、总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档