MySQL之视图&索引&执行计划

发布时间:2024年01月07日

目录

一.视图

二.执行计划

2.1.什么是执行计划

2.2.执行计划的作用

三.使用外连接、内连接和子查询进行举例

四.思维导图

?????????????好啦今天就到这里了哦!!!希望能帮到你哦!!!?


一.视图

含义 :在数据库中,视图是一种虚拟表,它是基于一个或多个实际表的查询结果。视图提供了一种抽象层,允许用户以一种更简单或更特定的方式查看数据。视图并不存储实际数据,而是根据定义在其上的查询实时生成数据。虚拟表,和普通表一样使用。

操作:

创建视图:create view 视图名 as? 查询语句;

视图的修改:方式一:create or replace view 视图名 as 查询语句;

方式二:alter view 视图名 as 查询语句;

删除视图:drop view 视图名,视图名,…….;

查看视图:DESC? 视图名 (查看视图相关字段)

SHOW CREATE VIEW 视图名; (查看视图相关语句)

?例子:

CREATE VIEW v_student_score
as
SELECT s.*,sc.cid,sc.score from ?t_mysql_student s,t_mysql_score
sc where s.sid = sc.sid;


SELECT * from v_student_score;

desc v_student_score;

SHOW CREATE VIEW v_student_score;

CREATE VIEW v_student_score
as
SELECT s.*,sc.cid,sc.score from ?t_mysql_student s,t_mysql_score
sc where s.sid = sc.sid;

drop view v_student_score;

建好之后直接查询一手

?只能查看字段

?查看视图相关语句

?

?删除视图

?

二.执行计划

2.1.什么是执行计划

使用EXPLAIN 关键字可以模拟优化器执行SQL查询语句,从而知道MYSQL是如何处理你的sql语句的。分析你的查询语句或是表结构的性能瓶颈

2.2.执行计划的作用

  • 表的读取顺序
  • 数据的读取操作类型
  • 那些索引可以使用
  • 那些索引被实际使用
  • 表之间的引用
  • 每张表有多少行被优化器查

三.使用外连接、内连接和子查询进行举例

  • 01)查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数
  1. 涉及表:t_mysql_student , t_mysql_score
  2. 连接方式:内连接?
  3. 行转列:流程控制函数? ??

  • 02)查询同时存在" 01 "课程和" 02 "课程的情况
  1. 涉及表:t_mysql_student , t_mysql_score
  2. 连接方式:内连接?
  3. 行转列:流程控制函数? ??

?

  • 03)查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
  1. 涉及表:t_mysql_score
  2. 连接方式:外连接?
  3. 以01课表为主

推荐:上面的这种查询方式看着不太友好,所以还有另外的一种,加上学生的信息:?

  1. 涉及表:t_mysql_student , t_mysql_score
  2. 连接方式:内连接,外连接
  3. 行转列:流程控制函数? ??
  4. 可以更加直接的看到那个学生哪门课程没有学习,一目了然,是看的舒服多了

?

  • 04)查询不存在" 01 "课程但存在" 02 "课程的情况
  1. 涉及表:t_mysql_student , t_mysql_score
  2. 查询方式:子查询
  3. 行转列:流程控制函数? ??

?

  • 05)查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
  1. 涉及表:t_mysql_student , t_mysql_score
  2. 查询方式:外连接
  3. 聚合函数:四舍五入(?round()?),平均值(?avg()?
  4. 有聚合函数意味着分组( GROUP BY )

?

  • 06)查询在t_mysql_score表存在成绩的学生信息
  1. 涉及表:t_mysql_student , t_mysql_score
  2. 查询方式:内连接
  3. 最后建议进行一次分组,不然数据过多

?

?07)查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )
涉及表:t_mysql_student , t_mysql_score
查询方式:外连接
聚合函数:计数( count() ),求和( sum() )
有聚合函数意味着分组( GROUP BY )

?

  • 08)查询「李」姓老师的数量

?

四.思维导图

?


?????????????好啦今天就到这里了哦!!!希望能帮到你哦!!!?

文章来源:https://blog.csdn.net/m0_74915426/article/details/135426850
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。