博客
关于我
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/

你可能感兴趣的文章
python mac地址_python中MAC地址打包问题
查看>>
python manage.py syncdb Unknown command: 'syncdb'问题解决方法
查看>>
Python map() 函数 和 numpy mean()函数
查看>>
Python Matplotlib Box并排绘制两个数据集
查看>>
Python Matplotlib 中如何用 plt.savefig 存储图片
查看>>
Python matplotlib 中更换画布背景颜色
查看>>
Python进阶03 模块
查看>>
python matplotlib简单使用
查看>>
Python mock Patch os.environ 和返回值
查看>>
Python mock 修补另一个函数调用的函数
查看>>
python mqtt 客户端实现
查看>>
Python Multiprocessing - 将类方法应用于对象列表
查看>>
Python multiprocessing.Queue 与 multiprocessing.manager().Queue()
查看>>
Python multiprocessing使用详解
查看>>
python mysql 基于 sqlalvhrmy_Python操作MySQL:pymysql和SQLAlchemy
查看>>
python mysql 布尔类型_python语言的基础学习:基本类型,函数,面向对象,模块,mysql数据库...
查看>>
Python NLP完整项目实战教程(1)
查看>>
Python NLP自然语言处理详解
查看>>
python nltk nltk_data 离线安装,chatterbot
查看>>
Redis 限流的 3 种方式,还有谁不会?
查看>>