博客
关于我
MySQL(4)运算符 | 关联查询详解
阅读量:803 次
发布时间: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/

你可能感兴趣的文章
PyQt5 和 Django:如何使用 HTTP 请求(Multipart-form)上传图像?
查看>>
PyQt5 按钮运行功能和更新 LCD
查看>>
pyqt5 获取Qlabel中的图片并对其进行处理(包括Qimage转换为Mat)
查看>>
pyqt5 设置控件在最上层或者在下层
查看>>
pyqt5 设置网格布局的间距
查看>>
pyTorch Hub 系列#4:PGAN — GAN 模型
查看>>
PyQt5-基本窗口控件-QMainWindow
查看>>
PyQt5:如何安装/运行 Qt 设计器
查看>>
PyQt5——pyqtgraph绘图大招
查看>>
PyQt5——多窗口之间数据处理
查看>>
PyQt5——多线程、信号与槽
查看>>
PyQt5——开发地图软件
查看>>
PyQt5——装饰器信号与槽
查看>>
PyQt5——软件密码登陆跳转主界面
查看>>
PyQt5——通过信号与槽进行数据传输
查看>>
PyQt5“定时器不能从另一个线程启动“更改 QLabel 的大小时出错
查看>>
pyqt5不显示窗口
查看>>
pyqt5任意组件的拖拽问题
查看>>
SpringBoot中集成MobileIMSDK并实现记录所有用户以实现消息群发
查看>>
PyQt5信号与槽学习笔记——自定义信号与槽(二)
查看>>