MySQL视图以及常见面试题

本文介绍了MySQL中的视图概念,包括其定义为虚拟表以及基本的创建、查看、修改和删除操作。同时涵盖了MySQL面试中关于视图和复杂查询的问题,如多表关联查询、缺失值处理等。
摘要由CSDN通过智能技术生成

一.视图

1.介绍什么是视图

随着数字化时代的飞速发展,数据库技术,特别是MySQL,已经成为IT领域中不可或缺的一环。从简单的数据存储到复杂的数据分析,从个人博客到大型企业的核心系统,MySQL都在背后默默地发挥着作用。而在这不断演变的过程中,我们对于MySQL的了解和掌握也需要与时俱进。

含义

虚拟表,和普通表一样使用

2.视图的用法

语法

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

CREATE VIEW aa as SELECT s.*,sc.cid,sc.score FROM t_mysql_student s, t_mysql_score sc WHERE s.sid = sc.sid;

在这里插入图片描述

查看:

show create view 视图名;

修改:

create or replace view 视图名
as 查询语句

删除:
drop view 视图名
在这里插入图片描述

操作

二.MySQL面试题

面试题

1.查询" 01 “课程比” 02 "课程成绩高的学生的信息及课程分数

SELECT
s.*,
( CASE WHEN t1.cid = ‘01’ THEN t1.score END ) 语文,
( CASE WHEN t2.cid = ‘02’ THEN t2.score END ) 数学
FROM
t_mysql_student s,
( SELECT * FROM t_mysql_score WHERE cid = ‘01’ ) t1,
( SELECT * FROM t_mysql_score WHERE cid = ‘02’ ) t2
WHERE
s.sid = t1.sid
AND t1.sid = t2.sid
AND t1.score > t2.score
在这里插入图片描述
02)查询同时存在" 01 “课程和” 02 "课程的情况

SELECT
s.*,
( CASE WHEN t1.cid = ‘01’ THEN t1.score END ) 语文,
( CASE WHEN t2.cid = ‘02’ THEN t2.score END ) 数学
FROM
t_mysql_student s,
( SELECT * FROM t_mysql_score WHERE cid = ‘01’ ) t1,
( SELECT * FROM t_mysql_score WHERE cid = ‘02’ ) t2
WHERE
s.sid = t1.sid
AND t1.sid = t2.sid

在这里插入图片描述

03)查询存在" 01 “课程但可能不存在” 02 "课程的情况(不存在时显示为 null )

SELECT * from
( SELECT * FROM t_mysql_score WHERE cid = ‘01’ ) t1
LEFT JOIN
( SELECT * FROM t_mysql_score WHERE cid = ‘02’ ) t2
on t1.sid=t2.sid

在这里插入图片描述

04)查询不存在" 01 “课程但存在” 02 "课程的情况

SELECT
* 

FROM
t_mysql_student s,
t_mysql_score sc
WHERE
s.sid = sc.sid
AND s.sid NOT IN ( SELECT sid FROM t_mysql_score WHERE cid = ‘01’ )
AND sc.cid = ‘02’

在这里插入图片描述

05)查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
SELECT
s.sid,
s.sname,
ROUND( AVG( sc.score ) ) 分数
FROM
t_mysql_student s
LEFT JOIN t_mysql_score sc ON s.1sid = sc.sid
GROUP BY
s.sid,
s.sname
HAVING
分数 >= 60

在这里插入图片描述

06)查询在t_mysql_score表存在成绩的学生信息

SELECT
s.sid,
s.sname
FROM
t_mysql_student s
INNER JOIN t_mysql_score sc ON s.sid = sc.sid
GROUP BY
s.sid,
s.sname

在这里插入图片描述

07)查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )

SELECT
s.sid,
s.sname,
COUNT( sc.cid ),
SUM( sc.score )
FROM
t_mysql_score sc,
t_mysql_student s
WHERE
sc.sid = s.sid
GROUP BY
s.sid,
s.sname

在这里插入图片描述

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

select count(*) from t_mysql_teacher where tname like ‘李%’
在这里插入图片描述

三.思维导图

在这里插入图片描述

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值