MYSQL必知必会 | 查询相关
汇总数据
聚集函数
有时只需要汇总数据,并不需要把数据实际检索出来,所以MySql提供了专门的函数
聚集函数:运行在行组上,计算和返回单个值的函数
| 函数 | 说明 |
|---|---|
| AVG() | 返回某列平均值 |
| COUNT() | 返回某列的行数 |
| MAX() | 返回某列最大值 |
| MIN() | 返回某列最小值 |
| SUM() | 返回某列值之和 |
COUNT()中,如果指定列名,则忽略NULL值,如果为*,则不忽略NULL
AVG() \ MAX() \ MIN() \ SUM() 函数忽略列值为NULL的行使用 DISTINCT 参数,可以让聚合函数忽略相同的值
分组数据
主要介绍 group by 和 having
创建分组
使用 group by 创建分组
SELECT col_name_1, col_name_2
FROM table_name
Group by col_name_a,col_name_b
group by 子句可以包含任意数目的列
如果在 group by 子句中嵌套了分组, 数据将在最后规定的分组下进行会中
如果分组的列中具有NULL值,所有的NULL将被分成一个组返回
group by 子句必须在 where子句之后, order by子句之前
过滤分组
使用 having 过滤分组
having支持where的所有操作符
SELECT col_name
FROM table_name
GROUP BY col_name_a
HAVING condition
having 和 where 的差别
where在数据分组前进行过滤。where过滤的行不包含在分组中having在数据分组后进行过滤
分组和排序
我们有时需要 group by 以分组顺序输出,但实际情况并不总是这样。
所以我们需要使用 order by语句
使用子查询
- 子查询即嵌套在其他查询中的查询
- 对于嵌套的子查询数目没有限制,但是实际使用时由于性能的限制,不能嵌套太多的自查询
- 在 where 子句中使用自查询,应该保证 子查询的 select 语句具有与 where 子句中相同数目的列
- 相关子查询,涉及到外部查询的子查询。
联结表
基础知识
- 关系表
- 主键:可以唯一标识一行数据的属性
- 外键:定义两个表之间的联系,要么为空,要么为另一个表的主键
- 可伸缩性:能够适应不断增加的工作量而不失败的程度
使用联结的原因
为了有更好的可伸缩性,数据更有效、更方便的存储,我们将数据分解为多个表
数据存储在多个表中时,我们想要检索时,就需要联结多个表返回一个输出
创建链接
SELECT col_name_1, col_name_2, col_name_3
FROM table_name_1
WHERE table_name_1.col_name_a = table_name_2.col_name_b
当引用的列可能出现二义性时,必须使用完全限定列名,即表名+'.'+列名
如果不加入 where 子句,即没有联结条件,将返回两个表的笛卡尔积
内部联结
内部联结,又称等值联结
SELECT col_name_1, col_name_2
FROM table_name_1 INNER JOIN table_name_2
ON table_name_1.col_name_a = table_name_2.col_name_b
此处的 inner join 子句与 上面提到的 where 子句其相同的作用,但是使用明确的联结语法可以确保不会忘记联结条件,有时这样做也会影响到性能
MySql在运行时,关联指定的每个表以处理联结,这种处理非常消耗资源,所以,不要联结不必要的表,联结的表越多,性能下降的越厉害
自联结
SELECT a.col_name_1, a.col_name_2
FROM table_name as a, table_name as b
where a.col_name_a = b.col_name_a
自联结通常作为外部语句替代从相同表中检索数据时使用的子查询语句,虽然最终结果相同,但是处理联结比处理子查询快得多,应该试一下两种方式,以确定那种性能更好
自然连接
自然连接是一种特殊的内部联结,他要求两个表具有相同的属性列,同时在内部联结的基础上,去掉了重复的属性
外部链接
分为 左外连接 和 右外连接
连接时会产生一些在另一个表中没有数据的元组,这些元组成为悬浮元组
左外连接,使返回结果包含左边关系表联结后产生的的悬浮元组,这些元组在右边表的属性列值都为NULL
右外连接同上,两种类型的外连接可以互换使用,根据方便决定
注意事项
- 一般使用内部联结和外部链接
- 要保证使用正确的连接条件
- 应该总是提供联结条件(否则会出现笛卡尔积
- 在一个联结中可以包含多个表,对于每个联结可以采用不同的连接方式
组合查询
-
MySql允许执行多个查询,然后将结果作为单个查询结果集返回
-
这样的组合查询通常称为 并 或者 复合查询,使用
union关键字 -
需要使用组合查询的情况:
- 在单个查询中从不同的表返回类似结构的数据
- 对单个表执行多个查询,按单个查询返回数据
-
组合相同表的查询 = 具有多个 where 子句条件的单挑查询
- 这两种技术在不同的查询中性能不同,因此应该尝试两种方式,以确定对待特定的查询哪一种性能更好
UNION 规则
-
UNION 必须有两条即以上的 SELECT 语句组成
-
UNION 中的每个查询必须包含相同的列、表达式、聚合函数,但不需要各个列按照相同的次序列出
-
列数据类型不需要完全相同,但是一定要兼容,且使DBMS可以隐含转换的类型
-
UNION 会从查询结果集中自动去掉重复的行,如果想要返回所有的行,可以使用
union all关键字UNION ALL 完成了 WHERE 子句无法完成的工作 -
如果想对 UNION 组合查询进行排序,只能使用一条 ORDER BY 语句,且必须放在最后一条 SELECT 语句之后
相关文章:
MYSQL必知必会 | 查询相关
汇总数据 聚集函数 有时只需要汇总数据,并不需要把数据实际检索出来,所以MySql提供了专门的函数 聚集函数:运行在行组上,计算和返回单个值的函数 函数说明AVG()返回某列平均值COUNT()返回某列的行数MAX()返回某列最大值MIN()返…...
Java学习环境一站说明(保姆级详细教学)
1.Java开发环境搭建官网下载www.oracle.com2.安装注意:1.选择安装位置时尽量不要安装到C盘,路径中不要有空格以及中文的存在2.开发人员安装的jdk中包含了jre,所以不需要单独安装jre3.环境变量配置打开高级系统设置2.点击环境变量3.在系统变量…...
05-Oracle中的对象(视图,索引,同义词,系列)
本章主要内容: 1.视图管理:视图新增,修改,删除; 2.索引管理:索引目的,创建,修改,删除; 3.同义词管理:同义词的作用,创建࿰…...
如何通过websoket实现即时通讯+断线重连?
本篇博客只是一个demo,具体应用还要结合项目实际情况,以下是目录结构: 1.首先通过express搭建一个本地服务器 npm install express 2.在serve.js中自定义测试数据 const express require(express); const app express(); const http req…...
爽,我终于掌握了selenium图片滑块验证码
因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇文章主要是用selenium解决滑块验证码的个别案列。 思路: 用selenium打开浏览器指定网站 将残缺块图片和背景图片下载到本地 对比两张图片的相似地方&#x…...
二、SpringMVC注解式开发
1. RequestMapping注解 此注解就是来映射服务器访问的路径 可加在方法上,是为此方法注册一个可以访问的名称(路径) 可以加在类上,相当于是包名(虚拟路径),区分不同类中相同的action的名称 可区分get请求和post请求 package com.powernode.controller;import org.springframe…...
Java容器面试知识点总结
容器 java容器有哪些? String,数组以及Java.util 下面的集合类 List:存放有序,列表存储,元素可重复 ArrayList LinkedList Vector Set:无序,元素不可重复 HashSet TreeSet Map: 无序,元素可重复…...
增长:2023 IT运维发展趋势前瞻
根据IDC和智研咨询数据等平台公开数据显示,从2018年至2022年,全球ITOM行业市场规模以8.58%的年均复合增长率高速增长。其中,中国ITOM市场在2020-2023年的年复合增长率为10.7%,到2023年市场规模将达到165.7亿元。012022中国IT运维解…...
自己定义typescript的类型声明文件xx.d.ts
****内容预警***菜鸟新手内容,大佬请绕道,不对的请指出我们在使用typescript的使用,如果安装一个包没有相应的类型声明文件,ts的类型检查就会报错,所以我们经常会安装npm包对应的types类型声明包,比如uuid …...
数据分析方法及名词解释总结_(面试2)
1、用户画像 1.1、什么是用户画像?如何构建用户画像? - 知乎提到用户画像, 很多人都可能存在的错误认知,即把用户画像简单理解成用户各种特征,比如说姓名、性别、…https://www.zhihu.com/question/372802348/answer/2…...
【FLY】Java知识点总结
目录认识Java概念图名词解释历史版本基础知识编程规范关键字数据类型运算符数组Stringequals与流程控制引用数据结构常用数据结构HashMapLinkedHashMapWeakHashMapIdentityHashMapEnumMapTreeMapCopyOnWriteArrayList面向对象类反射注解IO异常线程EffectiveJava8JVM运行时数据区…...
SpringMVC-0307
三、RequestMapping注解1、RequestMapping注解的功能从注解名称上我们可以看到,RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理…...
华为OD机试 - 九宫格按键输入(C 语言解题)【独家】
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:九宫格按…...
Oracle 11g RAC群集部署
Oracle 11g RAC群集部署 1.环境介绍: 操作系统:Oracle Enterprise Linux 6.5 Oracle数据库:Oracle 11.2.0.4 集群软件:Oracle Grid Infrastructure 11.2.0.4 2.所需介质: p13390677_112040_Linux-x86-64_1of7 p133…...
【C++、C++11】列表初始化、右值引用
文章目录📖 前言1. 统一的列表初始化1.1 { } 花括号初始化:1.2 std::initializer_list:2. 右值引用2.1 什么是左值和右值:2.2 右值的分类:2.3 左值引用和右值引用的比较2.3 右值的使用场景:2.4 新的类功能&…...
CMU15-445 Project.3总结
在线测试 Project #3 - Query Execution 以下是Project #3的网址,2022FALL的Project #3是实现一个查询执行,实现一系列算子,用于实现数据库内的SQL计算。项目中的 Query Execution 主要分为三个任务: Access Method Executors…...
002+limou+HTML——(2)HTML文档
000、前言 一般来说一个静态网页拥有四种元素:文字、图片、超链接、音频和视频(注意,即使在web网页中植入Javascript语言,也不一定是动态网页,真正的动态网页判断标准:是否和服务器产生交互) …...
红外传感器模块与 Arduino 连接
红外传感器模块与 Arduino 连接 原文地址 Arduino 红外传感器接口 红外**接近传感器或红外传感器它发射红外光以感知周围环境,并可用于检测物体的运动。由于这是一个无源传感器,它只能测量红外辐射。如果您曾经尝试过设计避障机器人或任何其他基于接近…...
NC xml配置文件不能生产java文件
在NC开发过程中,新增、或修改了xml文件,在开发工具eclipse中生成或重新生成Java文件,发现生成不了相对应的Java文件。如下图,选中xml文件后,右键点击SpringXml to Java 这种情况其实一般都是xml配置文件有问题&#…...
华为OD机试 - 五键键盘(C 语言解题)【独家】
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:五键键盘…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
