java_web入门第5天
多表查询
概述
- 多表查询: 指从多张表中查询数据
- 笛卡尔积: 笛卡尔乘积是指在数学中,两个集合(A 集合 和 B 集合)的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积)

分类
- 连接查询
- 内连接:相当于查询 A、B 交集部分数据
- 外连接
- 左外连接:查询左表所有数据(包括两张表交集部分数据)
- 右外连接:查询右表所有数据(包括两张表交集部分数据)
- 子查询
内连接
语法:
- 隐式内连接:
select 字段列表 from 表1 , 表2 where 条件 ...; - 显式内连接:
select 字段列表 from 表1 [ inner ] join 表2 on 连接条件 ...;
外连接
语法:
- 左外连接:
select 字段列表 from 表1 left [ outer ] join 表2 on 连接条 件 ... ; - 右外连接:
select 字段列表 from 表1 right [ outer ] join 表2 on 连接条件 ... ;
子查询
- 概述
- 介绍:SQL 语句中嵌套 select 语句,称为嵌套查询,又称子查询。
- 形式:
select * from t1 where column1 = ( select column1 from t2 … ); - 子查询外部的语句可以是
insert / update / delete / select的任何一个,最常见的是select。
- 分类
- 标量子查询:子查询返回的结果为单个值
- 列子查询:子查询返回的结果为一列
- 行子查询:子查询返回的结果为一行
- 表子查询:子查询返回的结果为多行多列
- 标量子查询
- 子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式
- 常用的操作符:= <> > >= < <=
- 列子查询
- 子查询返回的结果是一列(可以是多行)
- 常用的操作符:
in 、not in等
- 行子查询
- 子查询返回的结果是一行(可以是多列)。
- 常用的操作符:
= 、<> 、in 、not in
- 表子查询
- 子查询返回的结果是多行多列,常作为临时表
- 常用的操作符:
in
事务
介绍 & 操作
- 概念:事务 是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作 要么同时成功,要么同时失败。
- 注意事项: 默认 MySQL 的事务是自动提交的,也就是说,当执行一条 DML 语句,MySQL 会立即隐式的提交事务。
- 操作
- 开启事务:
start transaction; / begin ; - 提交事务:
commit; - 回滚事务:
rollback;
- 开启事务:
四大特性
四大特性(ACID)
- 原子性(Atomicity):事务是不可分割的最小单元,要么全部成功,要么全部失败
- 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态
- 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
- 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
索引
介绍
索引(index)是帮助数据库 高效获取数据 的 数据结构 。
优缺点:
- 优点
- 提高数据查询的效率,降低数据库的 IO 成本。
- 通过索引列对数据进行排序,降低数据排序的成本,降低 CPU 消耗。
- 缺点
- 索引会占用存储空间。
- 索引大大提高了查询效率,同时却也降低了
insert、update、delete的效率。
结构
MySQL 数据库支持的索引结构有很多,如:Hash 索引、B+Tree 索引、Full-Text 索引等。我们平常所说的索引,如果没有特别指明,都是指默认的 B+Tree 结构组织的索引。
- 大数据量情况下,二叉树、红黑树层级深,检索速度慢。

语法
- 创建索引:
create [ unique ] index 索引名 on 表名 (字段名,... ) ; - 查看索引:
show index from 表名; - 删除索引:
drop index 索引名 on 表名; - 注意事项:
- 主键字段,在建表时,会自动创建主键索引。
- 添加唯一约束时,数据库实际上会添加唯一索引。
第 5 章 MyBatis
- MyBatis是一款优秀的 持久层(dao 层) 框架,用于简化 JDBC 的开发。
- MyBatis 本是 Apache 的一个开源项目 iBatis, 2010 年这个项目由 apache 迁移到了 google code,并且改名为 MyBatis 。2013 年 11 月迁移到 Github。
- 官网:https://mybatis.org/mybatis-3/zh/index.html