MySQL之视图案例

目录

    • 一.视图
      • 1.1 含义
      • 1.2 操作
    • 二.案例
    • 三.思维导图

一.视图

1.1 含义

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

1.2 操作

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

2.视图的修改
方式一:
create or replace view 视图名
as
查询语句
方式二:
alter view 视图名
as
查询语句

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

4.查看视图
DESC 视图名:查看视图相关字段
SHOW CREATE VIEW 视图名:查看视图相关语句

二.案例

01)查询" 01 “课程比” 02 "课程成绩高的学生的信息及课程分数
1.涉及表:t_mysql_student,t_mysql_score
2.链接方式:内链接
3.行转列:流程函数
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
s.*,
( CASE WHEN t1.cid = ‘01’ THEN t1.score END ) 语文,
( CASE WHEN t2.cid = ‘02’ THEN t2.score END ) 数学
FROM
t_mysql_student s
INNER JOIN ( SELECT * FROM t_mysql_score WHERE cid = ‘01’ ) t1 ON s.sid = t1.sid
LEFT JOIN ( SELECT * FROM t_mysql_score WHERE cid = ‘02’ ) t2 ON t1.sid = t2.sid;
在这里插入图片描述

04)查询不存在" 01 “课程但存在” 02 "课程的情况
SELECT
s.*,
( CASE WHEN sc.cid = ‘01’ THEN sc.score END ) 语文,
( CASE WHEN sc.cid = ‘02’ THEN sc.score END ) 数学
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 ), 2 ) 平均成绩
FROM
t_mysql_student s
LEFT JOIN t_mysql_score sc ON s.sid = 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.score ) 选课总数,
sum( sc.score ) 总成绩
FROM
t_mysql_student s
LEFT JOIN t_mysql_score sc ON s.sid = sc.sid
GROUP BY
s.sid,
s.sname
在这里插入图片描述

三.思维导图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/326499.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 【专题详解 -- 时间】云数据库时间类型设计,时间生成、时间格式化渲染(uni-dateformat 组件的使用)

云数据表的时间类型设计 推荐使用时间戳 timestamp "createTime": {"bsonType": "timestamp","label": "创建时间:" }时间生成 获取当前时间 Date.now() .add({createTime: Date.now() })时间格式化渲染 下载安…

电脑出现msvcp140.dll丢失怎么办,分钟四种msvcp140.dll丢失的解决办法

如果你的电脑出现了关于msvcp140.dll丢失的情况那么大家一定要及时去解决msvcp140.dll丢失的问题,msvcp140.dll丢失可能会导致电脑出现各类的问题,今天就教大家四种关于msvcp140.dll丢失的解决办法,有效的解决msvcp140.dll丢失。 一.针对msvc…

【H3C】Console口密码配置

配置方法 console口密码主要配置 line con0 //进入con0用户线视图 #line aux0 //S5024X-EI使用该命令进入用户视图 authentication-mode password //认证模式为密码模式,其他还有无密码和…

启动IDEA报错,web servcer failed to start.port 8080 was already in use.

启动IDEA报错,web servcer failed to start.port 8080 was already in use. 问题现状 启动IDEA失败,端口被占用。 解决办法: 使用netstat -ano指令,查看端口占用情况 因为我是win11的系统,使用指令时出现如下提示。…

数字孪生在增强现实(AR)中的应用

数字孪生在增强现实(Augmented Reality,AR)中的应用可以提供更丰富、交互性更强的现实世界增强体验。以下是数字孪生在AR中的一些应用,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&#xff…

踩内存问题分析方法

什么是踩内存? 读写不属于自己的内存就是踩内存,而解决踩内存的方法就是先找出何处代码踩了内存,然后再仔细检查代码逻辑修复问题。找出何处代码踩了内存通常很难,因为通常踩内存和程序崩溃没有任何关系,这导致踩内存问题很难调试,必须深入了解踩内存原理才能解决它。 如…

Docker 发布自定义镜像到公共仓库

Docker 发布自定义镜像到公共仓库 引言 Docker 是一种轻量级、便携式的容器化技术,可以使应用程序在不同环境中更加可移植。在本文中,我们将学习如何使用 Docker 从公共仓库拉取 Nginx 镜像,定制该镜像,添加自定义配置文件&…

HttpRunner自动化测试工具之获取响应数据extract提取值到变量

获取响应数据 extract: 提取 注:extract 应与request保持同一层级 1、响应行,响应头;通过 extract 提取响应的数据并存储到变量中,如下图: 注:变量名的前面要有 - # 获取响应数据: 响应行(…

【C++】内存对齐

本篇文章介绍C中的内存对齐,后续介绍C的union和C的variant的时候,需要用到这部分的知识。 占用内存 先回忆下C各个数据类型占用的内存大小: int:所占内存大小:4byte 32bit;char:所占内存大小…

【C初阶——指针3】鹏哥C语言系列文章,基本语法知识全面讲解——指针(3)

本文由睡觉待开机原创,转载请注明出处。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言,共同进步! 这里写目录标题 前言:1.字符指针变量1.1一般用法1.2指向常量字符串 2.数组指针变量2.1数组指针变量…

分布式锁3: zk实现分布式锁4 使用临时顺序节点+watch监听+可重入(threadLocal)

一 zk实现分布式锁的可重入性 1.1 使用ThreadLocal属性 引入ThreadLocal线程局部变量保证zk分布式锁的可重入性。 1.2 关键代码说明 1.3 代码 1.3.1 初始化客户端 1.3.2 分布式锁代码 package com.atguigu.distributed.lock.config;import com.baomidou.mybatisplus.core…

《剑指 Offer》专项突破版 - 面试题 3 :前 n 个数字二进制形式中 1 的个数(C++ 实现)

目录 前言 方法一 方法二 方法三 前言 题目链接:338. 比特位计数 - 力扣(LeetCode) 题目: 输入一个非负数 n,请计算 0 到 n 之间每个数字的二进制形式中 1 的个数,并输出一个数组。例如&#xff0…