JavaWeb——MySQL-多表查询(2/7)-内连接(语法剖析、实战演练)

目录

内连接查询语法剖析

内连接查询实战演练


内连接查询语法剖析

  • 隐式内连接语法

        FROM子句罗列查询表(以逗号分隔),于WHERE子句设关联条件筛除无效笛卡尔积。如

SELECT *
FROM tb_emp,
     tb_dept
WHERE tb_emp.dept_id = tb_dept.id;

从员工与部门表查关联数据,此语法简洁直观,适用于简单连接查询场景,可快速检索满足条件数据,为数据整合提供基础支持。

  • 显示内连接语法

        FROM子句用[INNER] JOIN连接表,ON子句设关联条件,INNER关键字可省略。如

SELECT *
FROM tb_emp
         INNER JOIN tb_dept
                    ON tb_emp.dept_id = tb_dept.id;

明确指定连接类型与条件,增强查询逻辑可读性,适用于复杂多表关联查询,助开发者构建精准高效数据检索语句,提升数据库交互准确性与效率。

内连接查询实战演练

需求实现:员工姓名与所属部门名称查询(隐式内连接)

  • 查询构建

        依照隐式内连接语法,FROM子句列员工表(tb_emp)与部门表(tb_dept),WHERE子句设关联条件(tb_emp.dept_id = tb_dept.id),确保数据有效关联。初始SELECT *查所有字段,后依需求改仅查员工姓名与部门名称,提升查询针对性与数据精准度。

SELECT tb_emp.name, tb_dept.name
from tb_emp,
     tb_dept
where tb_emp.dept_id = tb_dept.id;
  • 结果解析:执行查询,获 16 条记录(员工表 17 条测试数据,第 17 条员工未分配部门,依内连接原理不显示)。结果清晰呈现员工姓名及所属部门名称,准确满足查询需求,为数据展示与分析提供有效信息,助业务人员深入了解员工组织架构关系。

需求实现:员工姓名与所属部门名称查询(显示内连接)

  • 查询转换

        基于显示内连接语法,将隐式内连接查询语句FROM子句改tb_emp INNER JOIN dpt ON tb_emp.dept_id = tb_dept.id,其余保持不变。此转换展示不同语法实现相同功能,方便开发者依代码风格与需求选择,增强多表查询灵活性与适应性。

SELECT tb_emp.name, tb_dept.name
from tb_emp
         INNER JOIN tb_dept ON tb_emp.dept_id = tb_dept.id
where tb_emp.dept_id = tb_dept.id;
  • 结果验证:执行显示内连接查询,结果仍为 16 条记录,与隐式内连接一致。再次证明查询准确性与稳定性,为多表关联数据检索提供可靠方案,确保不同语法形式在功能上等价,降低开发学习成本,提升开发效率与代码可维护性。

表别名应用优化

  • 别名定义与使用

        为简化查询语句、提升可读性,可给表起别名。如FROM tb_emp e, tb_dept d WHERE e.dept_id = d.id,分别为员工表与部门表起别名ed。后续查询条件与返回字段用别名代替表名,如

SELECT e.name, d.name
FROM tb_emp e,
     tb_dept d
WHERE e.dept_id = d.id;

使代码简洁紧凑,尤其适用于表名长或多表连接复杂场景,增强代码可维护性与开发效率。

  • 注意事项

        起别名后,后续查询必须用别名引用字段,用表名会报错。此规则确保别名使用一致性与正确性,避免因混用导致查询错误,保证查询逻辑严谨性与数据准确性,为多表查询优化提供有效手段。


END


学习自:黑马程序员——JavaWeb课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值