首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >javaWeb从入门到进阶(MYSQL多表查询及案例分析,事务,索引)

javaWeb从入门到进阶(MYSQL多表查询及案例分析,事务,索引)

作者头像
北极的代码
发布2026-04-22 19:19:44
发布2026-04-22 19:19:44
720
举报

多表查询

:指从多张表中查询数据

笛卡尔积:笛卡尔乘积是指在数学中,两个集合(A集合和B集合)的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积)

具体详解:

我们在查询多张表的时候,会产生很多不需要或者说是不存在的数据,这中现象就成为笛卡尔积,这时我们需要在查询表的后面通过where关键字加上对应的条件来筛选出我们真正需要的,合理的数据。比如员工表和部门表之间的对应关系,一个员工对应一个部门,但我们同时查询时,会出现一个员工对应所有部门,这时我们通过where关键字将员工的id字段与部门表的id字段进行对应,这时就完成了筛选。

连接查询:

内连接:

查询两张表的交集部分。

隐式内连接:select 字段列表from 表1,表2 where条件...; 显式内连接:select 字段列表 from 表1[inner]join 表2 on 连接条件...;

给多表起别名

直接在表明后空格起名,用新的名字替代调用。

外连接

左外连接:select 字段列表from 表1 left[outer]join 表2 on 连条件...;

左半部分的全部数据,包括重叠的部分

代码语言:javascript
复制
select e.name,d.name  from tb_emp e left join tb_dept  d on e.dept_id=d.id;

右外连接:select 字段列表 from 表1 right[outer]join表2 on 连接条件...;

子查询

概述 介绍:SQL语句中嵌套select语句,称为嵌套查询,又称子查询。 形式: select * from t1 where columnl = (select columnl from t2 ... );子查询外部的语句可以是insert/update/delete/select 的任何一个,最常见的是 select。

分类 标量子查询

子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式 常用的操作符:= <> > >=   <    <=

列子查询

子查询返回的结果是一列(可以是多行) 常用的操作符:in、notin等

行子查询

:子查询返回的结果为一行

子查询返回的结果是一行(可以是多列)。常用的操作符:=、<>、in、not in

表子查询

:子查询返回的结果为多行多列

事务:

前言:当整个部门解散时,那么部门底下的员工都会被删除。所以我们执行SQL语句时需要先删除部门,在删除对应部门下的员工,但是如果员工删除因为操作不当失败了,就会造成数据的不一致性。这是我们就可以通过 事务来解决。

概念:

事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些 操作要么同时成功,要么同时失败。

注意事项 默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。因此我们需要把默认的两个事务组成一个事务,从而实现事务的功能。

操作:

事务控制 开启事务:start transaction;/ begin; 提交事务:commit; 回滚事务:rollback;当只有一个事务执行成功时,而另一个失败时,执行回滚事务,把数据回复原样,从新书写执行。

事务的四大特性:ACID

原子性

事务是不可分割的最小单元,要么全部成功,要么全部失败

一致性

事务完成时,必须使所有的数据都保持一致状态

隔离性

数据库系统提供的隔离机制,保证事务在不受外部并发操作影响 的独立环境下运行

持久性

事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

索引:

索引是数据库优化的一种方式,当数据库数据量非常大时,我们通过正常操作查询数据时就会显的非常的低效,而我们通过给数据添加索引,之后通过索引进行查询我们想要的数据,就会显的非常迅速,速度效率成几何的式的增长。

索引是帮助数据库高效获取数据的数据结构

优点

提高数据查询的效率,降低数据库的I0成本。 通过索引列对数据进行排序,降低数据排序的成本, 降低CPU消耗。

缺点 索引会占用存储空间。 索到大大提高了查询效率,同时却也降低了insert、 update、delete的效率。

索引结构:B +Tree

每一个节点,可以存储多个key(有n个key,就有n个指针) 所有的数据都存储在叶子节点,非叶子节点仅用于索引数据。 叶子节点形成了一颗双向链表,便于数据的排序及区间范围查询。

语法 创建索引 create[unique]index索引名 on表名(字段名....); 查看索引 show index from 表名; 删除索引 drop index 索名 on 表名;

注意事项 主键字段,在建表时,会自动创建主键索引。 添加唯一约束时,数据库实际上会添加唯一索引。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多表查询
    • 连接查询:
      • 内连接:
      • 外连接
    • 子查询
      • 分类 标量子查询
      • 列子查询
      • 行子查询
      • 表子查询
    • 事务:
    • 事务的四大特性:ACID
      • 原子性
      • 一致性
      • 隔离性
      • 持久性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档