目录
?????????????好啦今天就到这里了哦!!!希望能帮到你哦!!!?
含义 :在数据库中,视图是一种虚拟表,它是基于一个或多个实际表的查询结果。视图提供了一种抽象层,允许用户以一种更简单或更特定的方式查看数据。视图并不存储实际数据,而是根据定义在其上的查询实时生成数据。虚拟表,和普通表一样使用。
操作:
创建视图: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;
建好之后直接查询一手
?只能查看字段
?查看视图相关语句
?
?删除视图
?
使用EXPLAIN 关键字可以模拟优化器执行SQL查询语句,从而知道MYSQL是如何处理你的sql语句的。分析你的查询语句或是表结构的性能瓶颈
- 表的读取顺序
- 数据的读取操作类型
- 那些索引可以使用
- 那些索引被实际使用
- 表之间的引用
- 每张表有多少行被优化器查
- 01)查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数
- 涉及表:t_mysql_student , t_mysql_score
- 连接方式:内连接?
- 行转列:流程控制函数? ??
- 02)查询同时存在" 01 "课程和" 02 "课程的情况
- 涉及表:t_mysql_student , t_mysql_score
- 连接方式:内连接?
- 行转列:流程控制函数? ??
?
- 03)查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
- 涉及表:t_mysql_score
- 连接方式:外连接?
- 以01课表为主
推荐:上面的这种查询方式看着不太友好,所以还有另外的一种,加上学生的信息:?
- 涉及表:t_mysql_student , t_mysql_score
- 连接方式:内连接,外连接
- 行转列:流程控制函数? ??
- 可以更加直接的看到那个学生哪门课程没有学习,一目了然,是看的舒服多了
?
- 04)查询不存在" 01 "课程但存在" 02 "课程的情况
- 涉及表:t_mysql_student , t_mysql_score
- 查询方式:子查询
- 行转列:流程控制函数? ??
?
- 05)查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
- 涉及表:t_mysql_student , t_mysql_score
- 查询方式:外连接
- 聚合函数:四舍五入(?round()?),平均值(?avg()?)
- 有聚合函数意味着分组( GROUP BY )
?
- 06)查询在t_mysql_score表存在成绩的学生信息
- 涉及表:t_mysql_student , t_mysql_score
- 查询方式:内连接
- 最后建议进行一次分组,不然数据过多
?
?07)查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )
涉及表:t_mysql_student , t_mysql_score
查询方式:外连接
聚合函数:计数( count() ),求和( sum() )
有聚合函数意味着分组( GROUP BY )
?
- 08)查询「李」姓老师的数量
?