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

一、过滤数据

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 运算符搭配 % 和 _ 通配符提供强大的模式匹配功能。这些技巧帮助精准检索所需数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中工具条中的debug按钮不能用了显示灰色

IDEA中工具条中的debug按钮不能用了显示灰色 1. 问题描述 IDEA上的DEBUG按钮突然变成了灰色&#xff1a; 2. 解决办法 一通搜索&#xff0c;终于找到解决办法 点击 File -> Project Structure如下图操作 3. 重启&#xff0c;解决 4. 参考 https://www.cnblogs.com…

自学编程推荐一个容易学的中文编程工具,构件箱之单选框组简介

一、前言&#xff1a; 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具&#xff0c;零基础轻…

C语言之基本数据类型和数

目录 算数类型和基本数据类型 基数 基数转换 由八进制数、十六进制数、二进制数向十进制数转换 由十进制数向八进制数、十六进制数、二进制数转换 二进制和十六进制的基数转换 在学习基本数据类型之前我们先来学习数。 算数类型和基本数据类型 在前面的学习中我们可以使用…

c++常见函数处理

1、clamp clamp&#xff1a;区间限定函数 int64_t a Clamp(a, MIN_VALUE, MAX_VALUE); #include <iomanip> #include <iostream> #include <sstream>int main() {std::cout << "no setw: [" << 42 << "]\n"<&l…

Docker 设置国内镜像源

Docker 设置国内镜像源 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 具体配置如下&#xff1a; {"registry-mirrors" : ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirro…

Lombok使用方法和总结

Lombok使用方法和总结 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; Lombok使用方法和总结 1. 介绍 在Java开发中&#xff0c;有许多重复且繁琐的代码需要我们…

Flutter Dart FFI Pointer<Uint8>类型如何转成数组或String

前言 继上一次发布的 Flutter 直接调用so动态库&#xff0c;或调用C/C源文件内函数 内容&#xff0c;最终我选择了第二种方式&#xff0c;直接把整个 Native C 的项目源代码放进了 Flutter 工程里编译&#xff08;放在iOS的目录是因为它不支持自定义源码路径&#xff0c;Andro…

wget下载到一半断了,重连方法

我是使用wget去下载 data.tar.gz 压缩包 wget https://deepgo.cbrc.kaust.edu.sa/data/deepgozero/data.tar.gz一开始下载的挺快&#xff0c;然后随着下载继续&#xff0c;下载速度就一直在下滑 下了大概2个小时后&#xff0c;已经下载了78%(6G/7.7G&#xff09;就断了。无奈c…

SpringBoot - @Schedule 上次任务未结束,下次任务到时间是否会启动验证

任务案例 Scheduled(cron "0/3 * * * * ? ") public void run() {int sleep new Random().nextInt(10);log.info("say sleep: {}s", sleep);try {Thread.sleep(sleep * 1000);} catch (InterruptedException e) {e.printStackTrace();} } 任务设定的…

阶段十-java新特性

JDK9新特性 1.模块化系统 jar包结构的变化 jar -》model -》package -》class 通过不同的模块进行开发 每个模块都有自己的模块配置文件module-info.java 2.JShell JDK9自带的命令行开发&#xff0c;在进行简单的代码调试时可以直接编译使用 可以定义变量&#xff0c;方法&…

大数据与人工智能——神经网络是如何工作的?

大数据与人工智能——神经网络是如何工作的&#xff1f; 我们习惯于去了解所使用工具、中间件的底层原理&#xff0c;本文则旨在帮助大家了解AI模型的底层机制&#xff0c;让大家在学习或应用各种大模型时更加得心应手&#xff0c;更加适合没有AI基础的小伙伴们。 一、GPT与神…

Java实现机考程序界面

机考界面如下&#xff08;单选题&#xff09;&#xff0c;上方是题目状态&#xff0c;下方是题目&#xff0c;1/5/1是已做题目数量、总共题目数量和答对题目数量。 再看一下多选题的界面。 判断题的界面。 回答正确时的反馈&#xff0c;会给出用时。 回答错误时的反馈&#xff…

SQL命令---带关系运算符的条件查询

介绍 使用sql语句按条件查询 命令 select 字段1,字段2 from 表名 where 条件表达式;关系运算符&#xff1a; 关系运算符说明等于<>不等于!不等于<小于<小于等于>大于>大于等于 例子 查询a表中id等于4的数据&#xff1a; select id,name from a where …

社会不教,精英不讲,坎儿还得自己过(揭秘人才成长规律)

推荐大家去看看天涯社区的精华帖子&#xff1a;《社会不教&#xff0c;精英不讲&#xff0c;坎儿还得自己过&#xff08;揭秘人才成长规律&#xff09;》 原出处天涯精华帖&#xff1a;《社会不教&#xff0c;精英不讲&#xff0c;坎儿还得自己过&#xff08;揭秘人才成长规律&…

【教3妹学编程-算法题】消除相邻近似相等字符

插&#xff1a; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家一起学习鸭~~~ 3妹&#xff1a;好冷啊&#xff0c; 冻得瑟瑟发抖啦 2…

制造业对于IT软硬件监控和摄像头故障监控的需求

制造业对于生产线的自动化和智能化需求较高&#xff0c;IT监控运维管理软件在制造业的应用也日益普及。监控易为制造业提供了一系列定制化的解决方案&#xff0c;助力企业实现生产线的智能化和高效化。 随着制造业的数字化转型和智能化升级&#xff0c;IT运维管理软件的需求也在…

解决mfc140.dll丢失的方法有哪些?分享3个实测有效的方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中最常见的就是“找不到指定的模块”或“无法加载某某.dll文件”。这些错误通常会导致程序无法正常运行&#xff0c;给用户带来很大的困扰。而mfc140.dll文件丢失就是其中之一。本文将介绍3个解决mfc14…

深入理解Java虚拟机---类加载机制

类加载机制 什么是类加载机制类加载的时机类加载的过程加载验证文件格式验证元数据验证字节码验证符号引用验证 准备解析初始化 类加载器双亲委派模型 什么是类加载机制 虚拟机把描述类的数据从 Class 文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff…

《PySpark大数据分析实战》-06.安装环境准备

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

Kafka集成springboot

安装kafka&#xff0c;直接到官网下载bin文件&#xff0c;本文使用windows进行使用kafka。 下载之后&#xff0c;第一步&#xff0c;启动zookeeper&#xff1a; zookeeper-server-start.bat ..\..\config\zookeeper.properties 第二步&#xff0c;启动kafka&#xff1a; kafka…