博客
关于我
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 NULL 或 IS 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 用于排除该范围。IN 和 NOT 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. 关联条件

关联条件可以通过 WHERE、ON、USING 等方式指定。WHERE 可用于所有关联类型,而 ON 和 USING 只能与 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中文件最重要的功能是什么-学 Python 都用来干嘛的?
查看>>
python中文版语言_高盛最新调查:Python超过汉语成为未来最重要技能,你准备学哪种编程语言?...
查看>>
Python中文问题SyntaxError
查看>>
Python中方括号和括号括起来的列表有什么区别?
查看>>
python中时间处理_Python中处理时间的几种方法小结
查看>>
Python中枚举串口(包括虚拟端口)的跨平台方法是什么?
查看>>
python中根号下a怎么写_python中根号怎么表示
查看>>
Python中正则表达式的巧妙使用
查看>>
Python中浮点数的二进制表示(位不是十六进制)
查看>>
Python中特殊函数和表达式 filter,map,reduce,lambda
查看>>
python中用socket检测端口_Python 用socket模块实现检测端口和检测web服务
查看>>
python中用于列表操作的plus和append有什么区别?
查看>>
python中用递归求和
查看>>
python中的@staticmethod
查看>>
python中的array函数作用_NumPy 数组使用大全
查看>>
python中的isinstance判断多个对象类型
查看>>
python中的keys、values、items
查看>>
Python中的lambda和apply结合使用
查看>>
python中的map函数
查看>>
Python中的numpy模块解析
查看>>