博客
关于我
MySQL(4)运算符 | 关联查询详解
阅读量:801 次
发布时间:2023-02-13

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

MySQL 运算符与关联查询指南

一、MySQL 运算符

1. 算术运算符

MySQL支持常见的算术运算符,包括加、减、乘、除、模运算。需要注意的是,除法默认会返回浮点数结果,若需要整数结果,可以使用DIV函数。

  • 例子
    • 筛选出 eid 是偶数的员工:
      SELECT eid FROM t_employee WHERE eid % 2 = 0;
    • 查看每天的基本工资值,每个月按22天算:
      SELECT eid, basic_salary / 12 AS "日薪" FROM t_salary;
    • 计算基本工资(假设 performance_salary 表存在):
      SELECT eid, basic_salary + performance_salary * (1 + commission_pct) FROM t_salary;

2. 比较运算符

比较运算符用于筛选数据,常用的包括等于、不等于、大于、小于等于等操作。注意 NULL 值的处理,建议使用 IS NULLIS NOT NULL 来判断,而不是直接比较 NULL 与其他值。

  • 例子
    • 查询 basic_salary 不等于 10000 的员工信息:
      SELECT eid, basic_salary FROM t_salary WHERE basic_salary != 10000;
    • 查询 commission_pct 等于 0.40 的员工信息:
      SELECT eid, commission_pct FROM t_salary WHERE commission_pct = 0.40;
    • 查询 commission_pct 等于 NULL 的员工信息:
      SELECT eid, commission_pct FROM t_salary WHERE commission_pct IS NULL;

3. 逻辑运算符

逻辑运算符用于组合多个条件,常用来筛选复杂的数据。AND 用于同时满足多个条件,OR 用于满足任意一个条件。NOT 用于否定条件。

  • 例子
    • 查询性别为男且在1990年前出生的员工信息:
      SELECT * FROM t_employee WHERE gender = '男' AND birthday < '1990-01-01';
    • 查询职位编号为 1 或 2 的员工基本薪资:
      SELECT eid, basic_salary FROM t_salary WHERE job_id = 1 OR job_id = 2;

4. 范围与集合

BETWEEN 用于在两个值之间筛选数据,NOT BETWEEN 用于排除该范围。INNOT IN 则用于筛选集合中的元素。

  • 例子
    • 查询基本薪资在 9000 到 12000 之间的员工信息:
      SELECT eid, basic_salary FROM t_salary WHERE basic_salary BETWEEN 9000 AND 12000;
    • 查询 eid 为 1、3、5 的员工基本薪资:
      SELECT eid, basic_salary FROM t_salary WHERE eid IN (1, 3, 5);

5. 模糊查询

LIKE 和通配符 %_ 用于进行模糊查询,匹配部分字符。NOT LIKE 则用于排除不符合的结果。

  • 例子
    • 查询名字中包含“冰”的员工信息:
      SELECT * FROM t_employee WHERE ename LIKE '%冰%';
    • 查询姓李且名字只有一个字的员工信息:
      SELECT * FROM t_employee WHERE ename LIKE '李_';

6. 位运算符

位运算符用于对二进制数据进行操作,常见的包括按位与、或、异或、取反等操作。

  • 例子
    • 查询 2 与 3 的按位与、或、异或结果:
      SELECT 2 & 3, 2 | 3, 2 ^ 3, ~3;

二、关联查询

关联查询用于从多个表中获取相关数据,常见的有内连接、外连接和自连接等。

1. 笛卡尔积

笛卡尔积是将两张或多张表的所有行组合在一起,通常会因为缺少关联条件而导致大量冗余数据。

  • 例子
    • 查询员工姓名和部门名称(没有关联条件):
      SELECT ename, dname FROM t_employee, t_department;

2. 关联条件

关联条件可以通过 WHEREONUSING 等方式指定。WHERE 可用于所有关联类型,而 ONUSING 只能与 JOIN 结合使用。

  • 例子
    • 将关联条件放在 WHERE 后面:
      SELECT ename, dname FROM t_employee, t_department WHERE t_employee.dept_id = t_department.did;
    • 将关联条件放在 ON 后面(显式内连接):
      SELECT ename, dname FROM t_employee INNER JOIN t_department ON t_employee.dept_id = t_department.did;

3. 内连接(INNER JOIN)

内连接用于保留仅有匹配的行,通常用于两个表之间的关联。

  • 例子
    • 查询员工姓名和部门名称(显式内连接):
      SELECT ename, dname FROM t_employee INNER JOIN t_department ON t_employee.dept_id = t_department.did;

4. 外连接(OUTER JOIN)

外连接用于保留没有匹配的行,通常用于左连接或右连接。

  • 左外连接(LEFT JOIN)示例
    SELECT emp.ename, mgr.ename FROM t_employee AS empLEFT JOIN t_employee AS mgr ON emp.mid = mgr.eid;

5. 自连接

自连接用于将同一张表视为两个不同的表进行操作。

  • 例子
    • 查询员工姓名及其领导姓名(仅显示有领导的员工):
      SELECT emp.ename, mgr.ename FROM t_employee AS empLEFT JOIN t_employee AS mgr ON emp.mid = mgr.eid;

希望这些内容能帮助你更好地理解和使用MySQL运算符及关联查询!

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

你可能感兴趣的文章
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>