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.rhkb.cn/news/232854.html

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

相关文章

在IDEA中使用git分支进行开发然后合并到Master分支,2022.1.x版本

在实际开发过程中&#xff0c;为了避免因为在开发中出现的问题以及方便发布版本&#xff0c;如果是多版本发布的情况相下&#xff0c;我们通常需要采用分支进行开发&#xff0c;这个时候&#xff0c;我们就需要了解git分支的相关知识点了&#xff0c;本篇博客也是博主在实际公司…

Python基础知识总结3-面向对象进阶知识

面向对象三大特征介绍 继承子类扩展父类语法格式关于构造函数&#xff1a;类成员的继承和重写查看类的继承层次结构 object根类dir() 查看对象属性重写 __str__() 方法 多重继承MRO方法解析顺序super()获得父类定义多态特殊方法和运算符重载特殊属性 对象的浅拷贝和深拷贝组合_…

专为Mac用户设计的思维导图软件MindNode 2023 for Mac助您激发创意!

在现代快节奏的生活中&#xff0c;我们经常需要整理思绪、规划项目、记录灵感。而思维导图作为一种高效的思维工具&#xff0c;能够帮助我们更好地整理和展现思维。现在&#xff0c;我们介绍一款强大而直观的思维导图软件——MindNode 2023 for Mac&#xff0c;助您拓展思维边界…

SpingBoot的项目实战--模拟电商【5.沙箱支付】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一. 沙箱支付是什么 二.Sp…

ONLY在线商城系统设计与实现

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一 、设计说明 1.1 研究背景 当…

普中STM32-PZ6806L开发板(HAL库函数实现-访问多个温度传感器DS18B20)

简介 我们知道多个DS18B20的DQ线是可以被挂在一起的, 也就是一根线上可以访问不同的DS18B20而不会造成数据错乱, 怎么做到的&#xff0c;其实数据手册都有说到&#xff0c; 就是靠64-bit ROM code 进行识别, 也可以理解成Serial Number进行识别, 因为主要差异还是在Serial Numb…

实战Flink Java api消费kafka实时数据落盘HDFS

文章目录 1 需求分析2 实验过程2.1 启动服务程序2.2 启动kafka生产 3 Java API 开发3.1 依赖3.2 代码部分 4 实验验证STEP1STEP2STEP3 5 时间窗口 1 需求分析 在Java api中&#xff0c;使用flink本地模式&#xff0c;消费kafka主题&#xff0c;并直接将数据存入hdfs中。 flin…

【C++】类和对象详解(类的使用,this指针)

文章目录 前言面向过程和面向对象的初步认识类的引入类的定义类的访问限定符和封装性访问限定符封装性 类的作用域类的实例化类对象模型如何计算类对象的大小类对象的存储方式猜测结构体内存对齐规则 this指针this指针的引出this指针的特性 总结 前言 提示&#xff1a;这里可以…

linux反汇编工具: ida pro、rizinorg/cutter; ubuntu 22 flameshot延迟截图 以应对下拉菜单

rizinorg/cutter rizinorg/cutter 是 命令行反汇编工具 rizinorg/rizin 的图形化界面, 这比 ida pro跑在kvm虚拟机中方便多了, ubuntu22.04下直接下载Cutter-v2.3.2-Linux-x86_64.AppImage后即可运行,如下图: 注意 有个同名的报废品: radare2/Cutter 即 radare2的图形化界…

基于日照时数计算逐日太阳辐射

基于日照时数计算逐日太阳辐射

彻底认识Unity ui设计中Space - Overlay、Screen Space - Camera和World Space三种模式

文章目录 简述Screen Space - Overlay优点缺点 Screen Space - Camera优点缺点 World Space优点缺点 简述 用Unity中开发了很久&#xff0c;但是对unity UI管理中Canvas组件的Render Mode有三种主要类型&#xff1a;Screen Space - Overlay、Screen Space - Camera和World Spa…

【elfboard linux开发板】7.i2C工具应用与aht20温湿度寄存器读取

1. I2C工具查看aht20的温湿度寄存器值 1.1 原理图 传感器通过IIC方式进行通信&#xff0c;连接的为IIC1总线&#xff0c;且设备地址为0x38&#xff0c;实际上通过后续iic工具查询&#xff0c;这个设备是挂载在iic-0上 1.2 I2C工具 通过i2c工具可以实现查询i2c总线、以及上面…

普中STM32-PZ6806L 使用FlyMcu串口烧录程序

简介 我的串口下载电路坏掉了, 所以研究了下如何通过USB转TTL进行程序的下载, 为后续Bootloader部分做准备;连接 我的板几乎是十年前买的&#xff0c; 所以电路与现有网上的资料有些差异, 所以仅供参考 USB 转 TTL线 与开发板 连接&#xff0c; 如图图中 ①, 需要去掉第一个…

计算机组成原理 指令流水线

文章目录 指令流水线指令流水线的概念流水线性能分析流水线的吞吐率流水线的加速比流水线的效率 影响流水线的因素结构相关 (资源冲突)数据相关 (数据冲突)控制相关 (控制冲突) 流水线分类超量流水线 指令流水线 #mermaid-svg-VKNFSIxU0RiY8pAm {font-family:"trebuchet m…

XAgent调研

文章目录 1 简介2 快速测试 Quick Start3 结构分析 1 简介 XAgent&#xff08;链接&#xff09;是一个开源的&#xff0c;基于大语言模型的agent构建框架&#xff1b;其目标是构建出能够辅助人类处理各类任务的自动助手 定位&#xff1a;一个全能的&#xff0c;自动的辅助agen…

LeetCode-移动零(283)

题目描述&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 思路&#xff1a; 这里的思路跟以前做过的去重复数字的思路有点像&…

Java学习——设计模式——结构型模式2

文章目录 结构型模式装饰者模式桥接模式外观模式组合模式享元模式 结构型模式 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能&#xff0c;但结构型模式不仅仅简单地使用继承&#xff0c;而更多地通过…

IDEA 每次新建工程都要重新配置 Maven的解决方案

文章目录 IDEA 每次新建工程都要重新配置 Maven 解决方案一、选择 File -> New Projects Setup -> Settingsfor New Projects…二、选择 Build,Execution,Deployment -> Build Tools -> Maven IDEA 每次新建工程都要重新配置 Maven 解决方案 DEA 每次新建工程都要…

CSS基础笔记-04cascade-specificity-inheritance

CSS基础笔记系列 《CSS基础笔记-01CSS概述》《CSS基础笔记-02动画》CSS基础笔记-03选择器 前言 Cascading Style Sheets&#xff0c;关键就在于这个cascading&#xff0c;对于这个术语理解&#xff0c;感觉对于我这种CSS新手有点儿不太friendly。本文记录下我对这个术语的理…

Lumerical------关闭 drawing grid 去更好地显示 mesh grid

Lumerical------关闭 drawing grid 去更好地显示 mesh grid 引言正文 引言 在 Lumerical 结构设置的时候&#xff0c;有时候我们想要查看 mesh 结构的 grid&#xff0c;但是本身默认的 dtawing grid 黑框会阻碍我们的观察&#xff0c;这时&#xff0c;我们便可以通过设置关闭这…