视图与索引&连表查询(内/外联)和子查询

目录

一、视图

 1.1、概念:

1.2、场景:

1.3、用视图的意义

1.2、创建(增加)视图

1.3、修改视图

1.4、删除视图

1.5、查看视图

​编辑

二、索引

2.1、概念

2.2、优缺点

优点:

缺点:

2.3、应用场景

2.4、会失效

2.5、分类:

2.6、语法

创建索引的语法

三、复杂SQL语句

3.1、用处

3.2、内联(inner join/ join)

概念:

应用场景:

3.3、外联(left join\right join或full outer join)

概念:

分类:

应用场景:

3.3、子查询

概念:

面试题

3.4、案例(运用两种方式实现)

sql文件获取:

导入sql文件

代码演示

四、思维导图总结


一、视图

 1.1、概念:

在MySQL中,视图是一种虚拟表,它是基于数据库表的查询结果集。视图本身并不包含实际存储的数据,而是根据查询语句动态生成的数据集合。通过创建视图,用户可以将复杂的查询逻辑封装起来,简化对数据的访问和操作。视图可以像普通表一样被查询和引用,同时也可以对视图进行增删改查操作,这些操作会被转换成对基础表的操作。MySQL中的视图可以提高数据的安全性、简化复杂查询、提高数据的可重用性等。(在查询中,和普通的表一样使用)

1.2、场景:

开发会用到视图,而我们实施要查看视图的里面有那些属性

1.3、用视图的意义

用在多表联查中,把复杂查询变简单

没有用视图的效果:每一次都要写这么长的语句很麻烦

用了视图的效果:简单

注:duplicate column重复列,会导致创建不成功

1.2、创建(增加)视图

语法:

create view 视图名

as

查询语句;

1.3、修改视图

语法:两种方式

方式一:create or replace

create or replace view 视图名

as

查询语句;

方式二:alter

现在的连表已经不能满足需求,需要再加表

alter view 视图名

as

查询语句;

1.4、删除视图

drop view 视图名,视图名.....;

1.5、查看视图

语法:两种方式

方式一:desc

查看视图里面的字段

 desc  视图名;

方式一:show create

查看视图的sql语句(用于别人创建的视图然后查看情况)

show create view  视图名;

查出结果再把它复制,粘贴出来,就可以看见语句了

二、索引

2.1、概念

在MySQL中,索引是一种数据结构,用于加快对数据库表中数据的检索速度。通过在表的一个或多个列上创建索引,可以使数据库系统更快地找到所需的数据行,从而提高查询性能。MySQL支持多种类型的索引,包括普通索引、唯一索引、主键索引、全文索引等(是一种特殊的数据结构,由数据表中的一列或者多列组和而成,可以用来快速查询数据表中有某一特定值的记录)。

学的原因:适当地创建索引,可以提高数据库的查询性能和效率。

但是,过多或不恰当地使用索引也可能会导致性能下降,因此在设计索引时需要综合考虑查询频率、数据分布、表的大小等因素。

2.2、优缺点

优点:

1. 提高查询性能:索引可以加快对表中数据的检索速度,特别是对大型表的查询。
2. 加速排序:索引可以加速对数据的排序操作,提高排序的效率。
3. 提高数据唯一性约束:唯一索引和主键索引可以确保表中的每一行数据唯一性
4. 加速连接操作:对于连接查询(JOIN)操作,索引可以减少查询的时间复杂度。

缺点:

1. 占用存储空间:索引需要占用额外的存储空间,特别是对于大型表来说,可能会占用较多的存储空间。
2. 增加写操作的成本:对表进行更新、插入、删除等操作时,索引也需要进行相应的维护,可能会增加写操作的成本。
3. 索引维护成本高:当表中的数据发生变化时,索引需要进行维护和更新,可能会导致性能下降。
4. 可能引发查询优化器错误:过多或不恰当地使用索引可能会导致查询优化器选择错误的执行计划,从而影响查询性能。

2.3、应用场景

1. 频繁的查询:对于经常需要进行查询操作的表,通过在查询条件的列上创建索引可以加快查询速度。

2. 连接操作(JOIN):对于需要进行连接查询的表,通过在连接条件的列上创建索引可以加速连接操作。

3. 排序和分组:对于需要进行排序和分组操作的列,通过创建索引可以提高排序和分组的效率。

4. 唯一性约束:对于需要确保数据唯一性的列,可以通过创建唯一索引或主键索引来实现。

5. 全文搜索:对于需要进行全文搜索的文本列,可以创建全文索引来加速全文搜索操作。

6. 大型表:对于数据量较大的表,通过创建索引可以提高对表中数据的检索速度。

7. 频繁的更新操作:对于频繁进行更新操作的表,需要谨慎选择索引,以避免过多的索引导致更新操作的性能下降。

2.4、会失效

1. 对索引列进行了函数操作:如果在查询条件中对索引列进行了函数操作(例如使用了函数、类型转换等),则可能导致索引失效。例如,对于列age,如果查询条件为WHERE ABS(age)=10,则无法使用age列上的索引。

2. 对索引列进行了计算:如果在查询条件中对索引列进行了计算,可能会导致索引失效。例如,对于列salary,如果查询条件为WHERE salary*2=10000,则无法使用salary列上的索引。

3. 对索引列进行了隐式类型转换:如果查询条件中的值与索引列的类型不匹配࿰

  • 31
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桃花坞生动的芒果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值