云计算百科
云计算领域专业知识百科平台

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

多表查询

:指从多张表中查询数据

笛卡尔积:笛卡尔乘积是指在数学中,两个集合(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 连条件…;

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

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 表名;

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

赞(0)
未经允许不得转载:网硕互联帮助中心 » javaWeb从入门到进阶(MYSQL多表查询及案例分析,事务,索引)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!