MySQL day03 MySQL多表查询、索引、事务

目录

    • MySQL多表查询
    • 索引
    • 事务

MySQL多表查询

MySQL day03 MySQL多表查询、索引、事务_第1张图片
表连接查询:

查询员工的信息, 包括所在的部门名称
SELECT * FROM tab_emp, tab_dept;
左表的每条数据和右表的每条数据组合,这种效果称为笛卡尔乘积。
过滤掉没用数据的条件称为表连接条件。

MySQL day03 MySQL多表查询、索引、事务_第2张图片
MySQL day03 MySQL多表查询、索引、事务_第3张图片

在这里插入图片描述

左外连接: 左表不满足要求的数据也显示。
可以省略OUTER

在这里插入图片描述

右外连接: 右表不满足要求的数据也显示。
可以省略OUTER

子查询:

子查询: 一个查询语句的结果作为另一个查询语句的一部分

在这里插入图片描述

子查询需要放在()中
先执行子查询,将子查询的结果作为父查询的一部分。

子查询的结果是单行单列:
在这里插入图片描述

子查询结果是多行单列:

在这里插入图片描述
子查询的结果是多行多列:

MySQL day03 MySQL多表查询、索引、事务_第4张图片

索引

MySQL day03 MySQL多表查询、索引、事务_第5张图片

索引的使用原则

在数据量大的表上建立索引才有意义(最起码十万级别数据才会考虑索引)
在经常查询的字段上使用索引,用在where子句后面或者是连接条件上的字段建立索引
表中数据修改频率高时,不建议建立索引(每插入、或者修改一条记录MySQL都要维护索引的顺序,这个过程不需要我们参与,但是非常消耗性能)

索引的不足

虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存更新索引文件。建立索引会占用磁盘空间的索引文件。

索引失效

如果条件中有OR,即使其中有条件带索引也不会使用。(例外:OR两边条件都是同一个字段 )
模糊LIKE查询以 '%xxx’开头的不会使用索引,以’xxx%'结尾会使用索引。
WHERE语句中使用不等于 <>和 != 不会使用索引
如果MySQL计算使用全表扫描要比使用索引快,则不使用索引。

事务

由多条SQL语句组成一个功能,这多条SQL语句就组成事务。

1、手动提交事务:
MySQL day03 MySQL多表查询、索引、事务_第6张图片
2、自动提交事务:

MySQL的每一条DML(增删改)语句都是一个单独的事务,每条语句DML执行完毕自动提交事务,MySQL默认开始自动提交事务。

MySQL day03 MySQL多表查询、索引、事务_第7张图片

MySQL day03 MySQL多表查询、索引、事务_第8张图片

MySQL day03 MySQL多表查询、索引、事务_第9张图片

3、事务原理
MySQL day03 MySQL多表查询、索引、事务_第10张图片
4、设置回滚点:
MySQL day03 MySQL多表查询、索引、事务_第11张图片
5、事务的隔离级别
MySQL day03 MySQL多表查询、索引、事务_第12张图片
MySQL day03 MySQL多表查询、索引、事务_第13张图片
MySQL day03 MySQL多表查询、索引、事务_第14张图片

MySQL day03 MySQL多表查询、索引、事务_第15张图片

你可能感兴趣的:(#,MySQL,Java小白的学习之路)