mysql之视图mysql连接案例索引

文章目录

  • 一、视图
    • 1.1 含义
    • 1.2 操作
      • 1.2.1 创建视图
      • 1.2.2 视图的修改
      • 1.2.3 删除视图
      • 1.2.4 查看视图
  • 二、连接案例
    • 01)查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数
    • 02)查询同时存在" 01 "课程和" 02 "课程的情况
    • 03)查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
    • 04)查询不存在" 01 "课程但存在" 02 "课程的情况
    • 05)查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
    • 06)查询在t_mysql_score表存在成绩的学生信息
    • 07)查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )
  • 三、流程图
  • 四、索引
    • 4.1 什么是索引
    • 4.2 为什么要使用索引
    • 4.3 优点
    • 4.4 缺点
    • 4.5何时不使用索引
    • 4.6 索引何时失效
    • 4.7 索引分类

一、视图

1.1 含义

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

1.2 操作

1.2.1 创建视图

create view 视图名
as
查询语句;

1.2.2 视图的修改

方法①:create or replace view 视图名 as 查询语句;

方法②:alter view 视图名 as 查询语句;

1.2.3 删除视图

drop view 视图名,视图名,…

1.2.4 查看视图

DESC 视图名;–查看视图相关字段

SHOW CERATE VIEW 视图名;–查看视图相关语句

二、连接案例

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

SELECTs.*,(CASE WHEN t1.cid = '01' THEN t1.score END ) 语文,(CASE WHEN t2.cid = '02' THEN t2.score END ) 数学 
FROMt_mysql_student s,( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1,( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2 
WHEREs.sid = t1.sid AND t1.sid = t2.sid AND t1.score > t2.score	

02)查询同时存在" 01 “课程和” 02 "课程的情况

SELECTs.*,(CASE WHEN t1.cid = '01' THEN t1.score END ) 语文,(CASE WHEN t2.cid = '02' THEN t2.score END ) 数学 
FROMt_mysql_student s,( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1,( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2 
WHEREs.sid = t1.sid AND t1.sid=t2.sid

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

SELECTs.*,( CASE WHEN t1.cid = '01' THEN t1.score END ) 语文,( CASE WHEN t2.cid = '02' THEN t2.score END ) 数学 
FROMt_mysql_student sINNER JOIN ( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1 ON s.sid = t1.sidLEFT JOIN ( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2 ON t1.sid = t2.sid;

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

selects.*,(case when sc.cid='01' then sc.score end) 语文,(case when sc.cid='02' then sc.score end) 数学
fromt_mysql_student s,t_mysql_score sc
wheres.sid=sc.sidands.sid not in(select sid from t_mysql_score where cid='01')
and sc.cid='02';

05)查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

selects.sid,s.sname,avg(sc.score) n
fromt_mysql_student s left joint_mysql_score sc on s.sid = sc.sid
GROUP BY s.sid,s.sname
HAVING n>=60

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

selects.*
fromt_mysql_student s INNER JOINt_mysql_score sc on s.sid = sc.sid
GROUP BY s.sid,s.sname

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

selects.sid,s.sname,count(sc.score) 选课总数,sum(sc.score) 总成绩
fromt_mysql_student s LEFT JOINt_mysql_score sc on s.sid = sc.sid
GROUP BY s.sid,s.sname

三、流程图

在这里插入图片描述

四、索引

4.1 什么是索引

索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录

4.2 为什么要使用索引

使用索引可以很大程度上提高数据库的查询速度,还有效的提高了数据库系统的性能。

4.3 优点

  • 通过创建唯一索引可以保证数据库表中每一行数据的唯一性
  • 可以给所有的 MySQL列类型设置索引。
  • 可以大大加快数据的查询速度,这是使用索引最主要的原因
  • 在实现数据的参考完整性方面可以加速表与表之间的连接。
  • 在使用分组和排序子句进行数据查询时也可以显著减少查询中分组和排序的时间

4.4 缺点

  • 创建和维护索引组要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
  • 索引需要占强盘空间,除了数据表占数据空间以外,每一个索引还要占一定的物理空间。如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。
  • 当对表中的数据进行增加、删除和修改的时候,索引也要动态维护,这样就降低了数据的维护速度。

4.5何时不使用索引

  • 表记录太少
  • 经常增删改的表
  • 数据重复且分布均匀的表字段,只应该为经常查询和最经常排序的数据列建立索引(如果某个数据类包含太多的重复数据,建立索引没有太大意义)
  • 频繁更新的字段不适合创建索引(会增加10负担)
  • where条件里用不到的字段不创建索引

4.6 索引何时失效

  • like以通配符%开头索引失效
  • 当全表扫描比走索引查询的快的时候,会使用全表扫描,而不走索引
  • 字符串不加单引号索引会失效
  • where中索引列使用了函数 (例如substring字符串截取函数)
  • where中索引列有运算(用了< or> 右边的索引会失效,用<= or>= 索引不会失效)
  • is null可以走索引,is not null无法使用索引 (取决于某一列的具体情况)
  • 复合索引没有用到左列字段(最左前缀法则,如果没用用到最左列索引,或中间跳过了某列有索引的列,索引会部分失效)
  • 条件中有or,前面的列有索引,后面的列没有,索引会失效。想让索引生效,只能将or条件中的每个列都加上索引

4.7 索引分类

CREATE TABLEt ‘Iog’(
‘id’ varchar(32) NOT NULL COMMENT唯一标识
‘ip’ varchar(15) NOT NULL COMMENT ‘IP地址’,
‘userid’ varchar(32) NOT NULL COMMENT ‘用户ID’,
‘moduleid’ varchar(32) NOT NULL COMMENT ‘模块ID’,
‘content’ varchar(500) NOT NULL COMMENT ‘日志内容’,
‘createdate’ timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建日期’,
‘url’ varchar(100) DEFAULT NULL COMMENT ‘请求URL地’,
PRIMARY KEY (‘id’)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
–1)普通索引:是最基本的索引,它没有任何限制;
–0.762s
select * from t_log;
– 建索引前0.12s
select * from t log where moduleid =10040199’;
– 创建索引所花费的时间:1.593s
Create index idx_moduleid on t_log(moduleid);
– 建索引前 0.001s
select from t_log where moduleid =10040199’;
– 可以查看走过的索引
EXPLAIN select * from t_log where moduleid =‘10040199’;
2)唯一索引:与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;
– Duplicate entry ‘/quartz/queryJobLst’ for key ‘idx_ur’ 有重复列段
create UNIQUE index idx_url on t_log(url);
drop index idx_url on t_log;
– 3)主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;
– 主键索引所花费的时间: 0s
select * from t_log where id =‘07489cdafd6d4a3489884cd3c00c7b27’;
EXPLAIN select * from t log where id =07489cdafd6d4a3489884cd3c00c7b27’
– 4)组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时道循量左前缀集合;
– 花费的时间:3.959s
create index idx_userid_moduleid_url on t_log(userid,moduleid,url);
– 走组合索引
EXPLAIN select * from t_log where userid = " and moduleid = " and url = ";
EXPLAIN select * from t_log where userid = " and moduleid = ";
EXPLAIN select * from t_log where userid = ";
EXPLAIN select * from t_log where userid = " and url = ";
– 不走组合索引
EXPLAIN select * from t_log where moduleid = ";
EXPLAIN select * from t log where url = ";
EXPLAIN select * from t_log where moduleid = " and url = ";
4.创建索引
CREATE[UNIQUE]FULLTEXT]INDEX 索引名 ON 表名(字段名[(长度][ASCIDESCJ)

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

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

相关文章

【信息论与编码】习题-判断题-第二部分

目录 判断题 第二部分24. 信道矩阵 代表的信道的信道容量C125. 信源熵具有严格的下凸性。26. 率失真函数对允许的平均失真度具有上凸性。27. 信道编码定理是一个理想编码的存在性定理&#xff0c;即&#xff1a;信道无失真传递信息的条件是信息率小于信道容量 。28. 信道的输出…

修改 Ubuntu 的配置

目录 一、修改地址 1. 修改本机IP 二、修改网关 1. 查看网关地址 2. 设置默认网关 三、重启网络 1. 重启网络 2. 刷新网络 四、修改主机名 1. 查看主机名 2. 修改主机名 一、修改地址 1. 修改本机IP sudo ifconfig en…

【视频图像篇】模糊图像增强技术之视频平均帧处理

【视频图像篇】模糊图像增强技术之视频平均帧处理 0、目录 1、实验环境 2、集成和超级分辨率 3、色彩清晰化 4、翻转 总结 1、实验环境 系统环境Windows 11 专业版&#xff0c;[23H2&#xff08;22631.2715&#xff09;Impress&#xff0c;[v8.0.3.2] 2、集成和超级分辨…

如何使用VsCode编译C语言?

下载VsCode (1) 解压到D盘跟目录 (2) 运行[vscode.reg]&#xff0c;注册右键菜单 (3) 进入[pack]文件夹&#xff0c;运行[install.bat]。安装基本插件。 下载mingw32 (1) 解压任意目录 (2) 我的电脑右键–高级系统设置–高级–环境变量–系统变量–Path(双击)–空白行(双击)–…

MySQL之视图索引执行计划

目录 一.视图 二.执行计划 2.1.什么是执行计划 2.2.执行计划的作用 三.使用外连接、内连接和子查询进行举例 四.思维导图 好啦今天就到这里了哦&#xff01;&#xff01;&#xff01;希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.视图 含义 &#xff1a;在数…

二手买卖、废品回收小程序 在app.json中声明permission scope.userLocation字段 教程说明

处理二手买卖、废品回收小程序 在app.json中声明permission scope.userLocation字段 教程说明 sitemapLocation 指明 sitemap.json 的位置&#xff1b;默认为 ‘sitemap.json’ 即在 app.json 同级目录下名字的 sitemap.json 文件 找到app.json这个文件 把这段代码加进去&…

@Transactional 注解的12种失效场景

请直接看原文: 原文链接:啪&#xff01;啪&#xff01;Transactional 注解的12种失效场景&#xff0c;这坑我踩个遍-腾讯云开发者社区-腾讯云 (tencent.com) ------------------------------------------------------------------------------------------------------------…

Kafka(四)Broker

目录 1 配置Broker1.1 Broker的配置broker.id0listererszookeeper.connectlog.dirslog.dir/tmp/kafka-logsnum.recovery.threads.per.data.dir1auto.create.topics.enabletrueauto.leader.rebalance.enabletrue, leader.imbalance.check.interval.seconds300, leader.imbalance…

在VM下使用Composer完成快照方式的软件制作

Composer允许您构建软件、应用程序、偏好设置文件或是文档的安装包&#xff0c;安装包可以部署到远程电脑或是作为镜像流程的一部分。构建软件包的第一步就是创建包源&#xff0c;根据要打包的软件&#xff0c;Composer允许您监视软件的安装和使用驱动器上已存在的文件来创建包…

旋转图像【矩阵】

Problem: 48. 旋转图像 文章目录 思路 & 解题方法复杂度Code 思路 & 解题方法 用深拷贝就行了。 复杂度 时间复杂度: 添加时间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) Code class Solution:d…

Redis小计(4)

目录 1.Set和Get操作 2.mset和mget 3.mset&#xff0c;mget&#xff0c;set后加参数的优点 4.incr,incrby&#xff0c;incrbyfloat 1.Set和Get操作 flushall&#xff1a;清除所有k-v键值对。&#xff08;删库跑路小技巧&#xff09; set k v[ex | px]&#xff1a;设置超时…

利用python将excel文件转成txt文件,再将txt文件上传hdfs,最后传入hive中

将excel文件转成txt文件&#xff0c;再将txt文件上传hdfs&#xff0c;最后传入hive中 注意的点 &#xff08;1&#xff09;先判断写入的txt文件是否存在&#xff0c;如果不存在就需要创建路径 &#xff08;2&#xff09;如果txt文件已经存在&#xff0c;那么先将对应的文件进行…

高性能、可扩展、分布式对象存储系统MinIO的介绍、部署步骤以及代码示例

详细介绍 MinIO 是一款流行的开源对象存储系统&#xff0c;设计上兼容 Amazon S3 API&#xff0c;主要用于私有云和边缘计算场景。它提供了高性能、高可用性以及易于管理的对象存储服务。以下是 MinIO 的详细介绍及优缺点&#xff1a; 架构与特性&#xff1a; 开源与跨平台&am…

软测思考题:自动化测试重运行是好是坏?

如果有人手动运行测试&#xff0c;那么他们会暂停并了解更多信息。但是&#xff0c;当自动测试失败时&#xff0c;其余部分可能会继续运行。在套件完成之前&#xff0c;你是没有办法看到测试报告的&#xff0c;并且自动化程序不会在故障时执行任何额外的操作尝试找出问题。当剩…

【深度deepin】深度安装,jdk,tomcat,Nginx安装

目录 一 深度 1.1 介绍 1.2 与别的操作系统的优点 二 下载镜像文件及VM安装deepin 三 jdk&#xff0c;tomcat&#xff0c;Nginx安装 3.1 JDK安装 3.2 安装tomcat 3.3 安装nginx 一 深度 1.1 介绍 由深度科技社区开发的开源操作系统&#xff0c;基于Linux内核&#xf…

VQ-VAE(Neural Discrete Representation Learning)论文解读及实现

pytorch 实现git地址 论文地址&#xff1a;Neural Discrete Representation Learning 1 论文核心知识点 encoder 将图片通过encoder得到图片点表征 如输入shape [32,3,32,32] 通过encoder后输出 [32,64,8,8] (其中64位输出维度) 量化码本 先随机构建一个码本&#xff0c;维度…

ROS2/ROS+conda+pytorch配置

0、需求 项目开发中遇到在ROS2中调用pytorch&#xff0c;但pytorch安装在了conda环境下。如果独立安装ros和conda会存在python版本、ubuntu系统版本的问题。网上还没看到比较好的解决方案&#xff0c;通过探索发现以下方案&#xff0c;实现的效果是在一个conda环境中&#xff…

Linux操作系统基础(14):文件管理-文件属性命令

1. 查看文件属性 stat命令用于显示文件的详细信息&#xff0c;包括文件的权限、所有者、大小、修改时间等。 #1.显示文件信息 stat file.txt#2.显示文件系统状态 stat -f file.txt#3.显示以时间戳的形式文件信息 stat -t file.txt2. 修改文件时间戳 touch命令用于创建新的空…

window.print打印事件,固定打印界面,打印成功或取消返回打印前界面,再次点击打印事件不生效

我是弹框中有打印&#xff0c;然后如果还原界面后在点打印事件不生效 我用 window.location.reload() 后刷新界面有返回的界面是关闭了弹框。我需要的是打印成功或取消返回打印不关闭弹框 之前打印代码 我这是是vue3 &#xff0c;我打印界面是单独写的 <printPag ref"…

GitHub Copilot 功能介绍和使用场景

原文 &#xff1a; https://openaigptguide.com/github-copilot/ GitHub Copilot是一款由GitHub、OpenAI和Microsoft联合开发的AI辅助开发工具&#xff0c;它以人工智能的方式提供语法结构、表达式、变量名等的自动补全建议&#xff0c;并对代码进行注释解释&#xff0c;将代码…