博客
关于我
mysql之条件查询06
阅读量:226 次
发布时间:2019-03-01

本文共 2025 字,大约阅读时间需要 6 分钟。

条件查询

在SQL中,条件查询是为了从数据库中筛选出符合特定条件的数据。以下是条件查询的基本语法和实用技巧。


一、按条件表达式筛选

1. 简单条件运算符

  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于
  • !=:不等于
  • <>:不等于(与!=效果相同)

示例:

  • 查询工资超过12000的员工信息:
    SELECT * FROM employees WHERE salary > 12000;
  • 查询部门编号不等于90的员工名和部门编号:
    SELECT last_name, department_id FROM employees WHERE department_id <> 90;

2. 逻辑表达式筛选

  • AND:与条件连接,要求所有条件同时满足。
  • OR:与条件连接,满足任意一个条件即可。
  • NOT:否定逻辑表达式。

示例:

  • 查询工资在10000到20000之间的员工信息:
    SELECT last_name, salary, commission_pct FROM employees WHERE salary >= 10000 AND salary <= 20000;
  • 查询部门编号不在90到110之间,或者工资高于15000的员工信息:
    SELECT * FROM employees WHERE NOT (department_id >= 90 AND department_id <= 110) OR salary > 15000;

二、模糊查询

模糊查询用于匹配部分数据,常用于处理不确定信息。

1. LIKE

  • **特点:**通常与通配符配合使用,通配符包括 %(任意多个字符,包含0个字符)和 _(任意单个字符)。
  • **用途:**快速定位包含特定字符的记录。

示例:

  • 查询员工名中包含字符“a”的员工信息:
    SELECT * FROM employees WHERE last_name LIKE '%a%';
  • 查询员工名中第三个字符为“n”,第五个字符为“l”的员工名和工资:
    SELECT last_name, salary FROM employees WHERE last_name LIKE '__n_l%';

注意事项:

  • 如果需要匹配特殊字符(如_),需要使用ESCAPE声明,例如:
    SELECT last_name FROM employees WHERE last_name LIKE '_\_%';

2. BETWEEN AND

  • **特点:**用于在已知范围内筛选数据,语句更简洁。
  • **注意事项:**两个临界值的顺序不可调换。

示例:

  • 查询员工编号在100到120之间的员工信息:
    SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;

3. IN

  • **特点:**用于判断某字段的值是否属于指定列表,语句更简洁。
  • **注意事项:**列表中的值类型必须一致或兼容,且不支持通配符。

示例:

  • 查询员工的工种编号是IT_PROGAD_VPAD_PRES中的一个员工信息:
    SELECT last_name, job_id FROM employees WHERE job_id IN ('IT_PROG', 'AD_VP', 'AD_PRES');

4. IS NULL/IS NOT NULL

  • IS NULL:判断字段值为NULL。
  • IS NOT NULL:判断字段值不为NULL。

示例:

  • 查询没有奖金的员工名和奖金率:
    SELECT last_name, commission_pct FROM employees WHERE commission_pct IS NULL;
  • 查询有奖金的员工信息:
    SELECT last_name, commission_pct FROM employees WHERE commission_pct IS NOT NULL;

注意事项:

  • IS NULL<=>(安全等于)可以用来判断NULL值,但IS NULL更易于阅读且更常用。

三、综合案例

查询员工号为176的员工的姓名、部门号和年薪。

查询语句:

SELECT last_name, department_id, salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees WHERE employee_id = 176;

解释:

  • employee_id = 176:筛选员工编号为176的记录。
  • last_name:返回员工姓名。
  • department_id:返回部门编号。
  • salary*12*(1+IFNULL(commission_pct,0)) AS 年薪:计算年薪,IFNULL(commission_pct,0)用于处理奖金率为NULL的情况,默认将奖金率视为0进行计算。

转载地址:http://qtfv.baihongyu.com/

你可能感兴趣的文章
OpenCV与AI深度学习 | 基于深度学习的轮胎缺陷检测系统
查看>>
OpenCV与AI深度学习 | 如何在 Docker 容器中使用 GPU
查看>>
OpenCV与AI深度学习 | 实战 | OpenCV传统方法实现密集圆形分割与计数(详细步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)
查看>>
OpenCV与AI深度学习 | 实战 | 使用YOLOv8 Pose实现瑜伽姿势识别
查看>>
OpenCV与AI深度学习 | 实战 | 使用YoloV8实例分割识别猪的姿态(含数据集)
查看>>
OpenCV与AI深度学习 | 实战 | 使用姿态估计算法构建简单的健身训练辅助应用程序
查看>>
OpenCV与AI深度学习 | 实战 | 基于YoloV5和Mask RCNN实现汽车表面划痕检测(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 实战 | 文本图片去水印--同时保持文本原始色彩(附源码)
查看>>
OpenCV与AI深度学习 | 实战—使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战篇——基于YOLOv8和OpenCV实现车速检测(详细步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战|OpenCV实时弯道检测(详细步骤+源码)
查看>>
OpenCV与AI深度学习 | 实践教程|旋转目标检测模型-TensorRT 部署(C++)
查看>>
OpenCV与AI深度学习 | 工业缺陷检测中数据标注需要注意的几个事项
查看>>
OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
查看>>
OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 深度学习检测小目标常用方法
查看>>
OpenCV与AI深度学习 | 超越YOLOv10/11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务
查看>>