MySQL:表的内连接和外连接、索引

文章目录

  • 1.内连接
  • 2.外连接
    • 2.1 左外连接
    • 2.2 右外连接
  • 3.综合练习
  • 4.索引
    • 4.1见一见索引
    • 4.2 硬件理解
    • 4.3 MySQL 与磁盘交互基本单位(软件理解)
    • 4.4 (MySQL选择的数据结构)索引的理解
    • 4.5 聚簇索引 VS 非聚簇索引
  • 5.索引操作
    • 5.1 创建索引
    • 5.2 查询索引
    • 5.3 删除索引


1.内连接

内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连
接,也是在开发过程中使用的最多的连接查询。
在这里插入图片描述
前面学习的都是内连接!
在这里插入图片描述

2.外连接

外连接分为左外连接和右外连接

2.1 左外连接

如果联合查询,左侧的表完全显示我们就说是左外连接
右侧的表按条件进行拼接!
在这里插入图片描述
在这里插入图片描述

2.2 右外连接

如果联合查询,右侧的表完全显示我们就说是右外连接。
在这里插入图片描述
在这里插入图片描述

3.综合练习

在这里插入图片描述

4.索引

索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的 create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值,在于提高一个海量数据的检索速度。

索引你就可以理解成数据结构,链表啊啥的。

常见索引分为:
主键索引(primary key)
唯一索引(unique)
普通索引(index)
全文索引(fulltext)–解决中子文索引问题。

索引需要大量的数据才能体现效果,所以这里给大家准备了一个表,大家可以导入

链接:https://pan.baidu.com/s/1q6nPDLYCLiVprfnqensU0g 提取码:563w
–来自百度网盘超级会员V3的分享
在这里插入图片描述

这个表里面有800万条记录,所以导入可能需要花费一段时间!

4.1见一见索引

在这里插入图片描述

4.2 硬件理解

在这里插入图片描述

4.3 MySQL 与磁盘交互基本单位(软件理解)

MySQL 作为一款应用软件,可以想象成一种特殊的文件系统。它有着更高的IO场景,所以,为了提高基本的IO效率, MySQL 进行IO的基本单位是 16KB
在这里插入图片描述

4.4 (MySQL选择的数据结构)索引的理解

在这里插入图片描述

为何MySQL和磁盘进行IO交互的时候,要采用Page的方案进行交互呢?用多少,加载多少不香吗?

如上面的5条记录,如果MySQL要查找id=2的记录,第一次加载id=1,第二次加载id=2,一次一条记录,那
么就需要2次IO。如果要找id=5,那么就需要5次IO。

但,如果这5条(或者更多)都被保存在一个Page中(16KB,能保存很多记录),那么第一次IO查找id=2的时
候,整个Page会被加载到MySQL的Buffer Pool中,这里完成了一次IO。但是往后如果在查找id=1,3,4,5
等,完全不需要进行IO了,而是直接在内存中进行了。所以,就在单Page里面,大大减少了IO的次数。

为啥选择B+树:
在这里插入图片描述

4.5 聚簇索引 VS 非聚簇索引

其中, InnoDB 这种用户数据与索引数据在一起索引方案,叫做聚簇索引
当然, MySQL 除了默认会建立主键索引外,我们用户也有可能建立按照其他列信息建立的索引,一般这
种索引可以叫做辅助(普通)索引。
对于 MyISAM ,建立辅助(普通)索引和主键索引没有差别,无非就是主键不能重复,而非主键可重复。
在这里插入图片描述
提示:索引的本质就是数据结构(B+树)!!!

5.索引操作

5.1 创建索引

在这里插入图片描述

5.2 查询索引

在这里插入图片描述

5.3 删除索引

①第一种方法-删除主键索引:

alter table 表名 drop primary key;

②第二种方法-其他索引的删除:

alter table 表名 drop index 索引名;
例:mysql> alter table user10 drop index idx_name;

索引名就是show keys from 表名中的 Key_name 字段

③第三种方法方法: drop index 索引名 on 表名

mysql> drop index name on user8;

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

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

相关文章

Keepalive技术

文章目录 一、Keepalive基础vrrp技术Keepalived介绍Keepalived架构 二、 Keepalived 相关文件配置文件组成全局配置虚拟路由器配置 三、配置lvs和keepalive联动服务器架构抢占模式配置配置单播、组播配置通知模块日志功能脑裂现象 四、keepalived和nginx联动keepalive和其他应用…

嵌入式Linux系统编程 — 5.5 sleep、usleep和nanosleep系统休眠函数

目录 1 为什么需要休眠 2 sleep、usleep和nanosleep函数 2.1 sleep函数 2.2 usleep函数 2.3 nanosleep函数 3 示例程序 1 为什么需要休眠 有时需要将进程暂停或休眠一段时间, 进入休眠状态之后,程序将暂停运行,直到休眠结束。 以下是一…

Is ChatGPT a Good Personality Recognizer? A Preliminary Study?

ChatGPT是一个很好的人格识别者吗?初步调研 摘要1 介绍2 背景和相关工作3 实验3.1 数据集3.2 提示策略3.3 基线3.4 评估指标3.5 实现细节3.6 Overall Performance (RQ1)3.7 ChatGPT在人格识别上的公平性 (RQ2)3.8 ChatGPT对下游任务的人格识别能力(RQ3&a…

javaEE——Servlet

1.web开发概述 所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行交互 2.java后端开发环境搭建 web后端(javaEE)程序需要运行在服务器中的,这样前端才可以访问得到 3.服务器是什么? ①服务器就是一款软件,可以向其发送请求&#…

深入解析HDFS:定义、架构、原理、应用场景及常用命令

引言 Hadoop分布式文件系统(HDFS,Hadoop Distributed File System)是Hadoop框架的核心组件之一,它提供了高可靠性、高可用性和高吞吐量的大规模数据存储和管理能力。本文将从HDFS的定义、架构、工作原理、应用场景以及常用…

【UML用户指南】-24-对高级行为建模-进程和线程

目录 1、概念 2、主动类 3、通信 4、同步 5、常用建模技术 5.1、对多控制流建模 5.2、对进程间通信建模 在UML中,可以将每一个独立的控制流建模为一个主动对象,它代表一个能够启动控制活动的进程或线程。 进程是一个能与其他进程并发执行的重量级…

2024新版大屏互动微信上墙源码大屏互动神器年会婚庆微现场3D签到

2024年大屏幕互动源码动态背景图和配乐素材搭建教程 php宝塔搭建部署活动现场大屏幕互动系统php源码,可以用来构建具有互动功能的大屏幕系统,为活动现场提供各种互动体验。 修复版的系统源码在原有功能的基础上,增加了更加完善的用户体验和稳…

002-关于Geogebra软件的介绍及与MatLab的区别

为什么要学Geogebra? 因为和MatLab的科学计算相比,GeoGebra重点突出教学展示,对于教师、学生人群来讲再合适不过了,尤其是可以融入到PPT里边呈现交互式动画,想想听众的表情!这不就弥补了看到PPT播放数学公…

GIT 基于master分支创建hotfix分支的操作

基于master分支创建hotfix分支的操作通常遵循以下步骤: 切换到master分支: 首先,确保你的工作区是最新的,并且你在master分支上。如果不在master分支,你需要先切换过去。 Bash git checkout master 拉取最新的master…

STM32第十二课:ADC检测烟雾浓度(MQ2)

文章目录 需求一、MQ-2 气体传感器特点应用电路及引脚 二、实现流程1.开时钟,分频,配IO2.配置ADC的工作模式3.配置通道4.复位,AD校准5.数值的获取 需求实现总结 需求 使用ADC将MQ2模块检测到的烟雾浓度模拟量转化为数字量。 最后&#xff0c…

2.00004 优化器执行计划生成的流程是怎么样的?

文章目录 整体架构关键结构体PlannerInfo (pathnodes.h:195)PlannerGlobal (pathnodes.h:95)函数栈关键函数pg_plan_query (postgres.c:885)planner (planner.c:274)standard_planner (planner.c:287)subquery_planner (planner.c:628)整体架构 关键结构体 PlannerInfo (pathn…

Servlet_Web小结

1.web开发概述 什么是服务器? 解释一:服务器就是一款软件,可以向其发送请求,服务器会做出一个响应. 可以在服务器中部署文件,让他人访问 解释二:也可以把运行服务器软件的计算机也可以称为服务器。 web开发: 指的是从网页中向后…

JUC工具类: Semaphore详解

Semaphore底层是基于AbstractQueuedSynchronizer来实现的。Semaphore称为计数信号量,它允许n个任务同时访问某个资源,可以将信号量看做是在向外分发使用资源的许可证,只有成功获取许可证,才能使用资源。立刀旁 目录 # 带着BAT大厂…

EDA 虚拟机 Synopsys Sentaurus TCAD 2016.03 下载

下载地址(制作不易,下载使用需付费,不能接受的请勿下载): 链接:https://pan.baidu.com/s/1baw0IhmnFOKVkJMI3zkD_A?pwdcheo 提取码:cheo

联邦的基础配置

一、联邦的定义 联邦:在AS内部部署全互联的IBGP对等体可以很好解决IBGP路由传递的问题,但是扩展性低,大型网络中会带来沉重负担,针对此问题可以用路由反射器解决,也可以利用联邦解决,联邦也被称为联盟。大…

使用Qt制作一个简单的界面

1、创建工程 步骤一: 步骤二: 步骤三: 选择 build system,有qmake、CMake 和 Qbs 三个选项。 CMake 很常用,功能也很强大,许多知名的项目都是用它,比如 OpenCV 和 VTK,但它的语法繁…

2024最新!将mysql的数据导入到Solr

Solr导入mysql的数据 如何安装导入数据前准备配置Solr的Jar包以及Mysql驱动包1.1、将solr-8.11.3\dist下的两个包进行移动1.2、将mysql-connect包也移动到该位置1.3、重启Solr项目 配置xml2.1、第一步我们需要创建核心2.2、第二步修改xml(这里是结合19年的教程)2.3、 创建data-…

mybatis延迟加载

mybatis延迟加载 1、延迟加载概述 应用场景 ​ 如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。 延迟加载的好处 ​ 先从单表查询、需要时再从关联表去关联查…

C++ 数据库MySQL 学习笔记(3) - 数据库操作

C 数据库MySQL 学习笔记(3) - 数据库操作 视图操作 视图是从一个或多个表中导出来的表,是一种虚拟存在的表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样用户可以不看整个数据库表中的数据,而只关心对自己有…

讨论Nginx服务器的反爬虫和反DDoS攻击策略

Nginx服务器是一个高性能的Web服务器和反向代理服务器,具有强大的反爬虫和反DDoS攻击能力。本文将讨论Nginx服务器的反爬虫和反DDoS攻击策略,并给出相关的代码示例。 一、反爬虫策略 爬虫是一种自动化程序,用于从互联网上收集特定网站的数据…