本文共 1245 字,大约阅读时间需要 4 分钟。
笛卡尔积是数据库中多表查询没有连接条件时返回的结果。以实际例子来看,集合A={a, b}与集合B={1, 2, 3}的笛卡尔积为{ {a,1}, {a,2}, {a,3}, {b,1}, {b,2}, {b,3} },共计6条记录。
在实际开发中,笛卡尔积应尽量避免。通过在where
子句中添加有效的连接条件(如等值连接),可以有效减少笛卡尔积的数据量。对于n张表,至少需要n-1个连接条件。
外键约束(foreign key
)用于限定一张表的某一列数据来自另一张表的主键列,确保数据合法性。外键的作用包括:
InnoDB
存储引擎。外键通常用于多对多关系(如多个员工属于同一部门),开发中常通过下拉框选择“多的一方”。
等值连接
最常见的连接方式,通常基于主外键约束,连接条件为=
。非等值连接
连接条件不使用等号,常见于范围查询或排序。例如:select e.ename, e.sal, d.dname, s.grade from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal;
多表查询分类
多表查询图示
(图示内容已移除,仅保留文字描述)重名列处理
重名列需在前添加表名作为别名。例如:select e.ename, d.dname from emp e, dept d where e.deptno = d.deptno;select e.ename, d.dname from emp e join dept d on e.deptno = d.deptno;
内连接查询
select [字段列表] from 表A, 表B where 条件;
select [字段列表] from 表A inner join 表B on 条件;
外连接查询
null
。null
。自连接
一张表与自身连接,需通过别名区分不同记录。例如:select e1.ename, e2.ename from emp e1 join emp e2 on e1.mgr = e2.empno;
多表连接查询通过一个列名寻找对应的另一个列名,实现跨表数据关联。理解并掌握内连接、外连接、自连接等技术,是数据库开发的核心技能。
转载地址:http://bmbfk.baihongyu.com/