数据库学习总结

Mysql学习总结

汇总数据

聚集函数:

函数

说明

AVG()

返回某列的平均值

COUNT()

返回某列的行数

MAX()

返回某列的最大值

MIN()

返回某列的最小值

SUM()

返回某列值之和

例:

AVG函数:

select avg(grade) from topic;

COUNT函数:

select count(grade) from topic;

MAX函数:

select max(grade) from topic;

MIN函数:

select min(grade) from topic;

SUM函数:

select sum(grade) from topic;

以上的五个函数都有以下用法

  • 对所有的行执行计算,指定ALL参数或不给参数(ALL为默认)
  • 只包含不同的值,指定DISTINCT参数

如果指定列,那么distinct只能用于count函数,且distinct只能用于列名。

例:

select count(distinct *) from topic; (X)

select count(distinct grade) from topoc; (√)

分组数据

创建分组

例:

select homeworkid,count(*) as num from topic group by homeworkid;

注意:

1.GROUP BY 子句可以包含任意数目的列,使得能对分组进行嵌套,为数据分组提供更细致的控制。

2.如果GROUP BY子句中中嵌套了分组,数据将在最后规定的分组上进行汇总。

3.GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。

4.如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。

5.GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。

举例:

假设我们有以下员工表格(employees):

employee_id

department_id

salary

1

1

50000

2

1

60000

3

2

45000

4

2

55000

现在,我们想要按部门计算平均工资和每个部门的员工数目。如果我们使用以下查询:

sqlCopy CodeSELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;

结果将是:

department_id

avg_salary

1

55000

2

50000

这个查询计算了每个部门的平均工资,但没有计算每个部门的员工数目。现在,如果我们想要同时显示平均工资和员工数目,我们需要修改查询:

sqlCopy CodeSELECT department_id, COUNT(employee_id) AS num_employees, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;

结果将是:

department_id

num_employees

avg_salary

1

2

55000

2

2

50000

在第二个查询中,我们不仅计算了每个部门的平均工资,还计算了每个部门的员工数目。这就是在SELECT语句中引入了另一个列(num_employees)的区别。

过滤分组

过滤分组可以只显示满足条件的组,过滤分组使用的关键字是having。

例:(过滤掉分数大于5的行,然后按照homeworkid对挑选出来的数据进行分组,最后过滤掉组中数据小于3的组)

select homeworkid,sum(grade) as sum from topic where grade<6 group by homeworkid having count(*)>2;

SELECT子句顺序

SELECT子句及其顺序

子句

说明

是否必须使用

SELECT

要返回的列或表达式

FROM

要查找数据的表

WHERE

要查找的数据的特征

仅在从表选择数据时使用

GROUP BY

分组说明

尽在按组计算聚集是使用

HAVING

组级过滤

ORDER BY

输出排序顺序

LIMIT

要检索的行数

数据库运行顺序:FROM->WHERE->GROUP UP->HAVING->SELECT->ORDER BY->LIMIT;

子查询

在主查询的每一行中再次执行查询(允许查询不同的表中的信息)。

注意:

当使用子查询需要查询其他表中的数据时,为了区分列所在的表,子查询中的列名有格式上的要求(表名.列名)

例:

select id,homeworkid,(select studenttopic.grade from studenttopic where studenttopic.topicid=topic.id) as grade from topic;

联结表

表的连结是通过共享表中的一个或多个列的值,来将两个或多个表关联起来的过程。

外键:某一个表里的一列,是另一个表的主键,表示了两个表的关系。

联接类型

内联结:返回两个表中满足联结条件的数据

左联结:返回左边表中的所有数据和右边表中满足联结条件的数据。

右联结:返回右边表中的所有数据和左边表中满足联结条件的数据。

外连接:返回两个表中的所有数据。

自联结:是指在单个表内进行联结操作的情况,即将表中的一部分与该表的另一部分进行联结。自联结通常用于需要比较同一表中不同行之间的数据的情况。

自然联结:是在两个表中具有相同名称的列之间进行联结的操作。

例:

假设我们有一个名为 "Students" 的表,其中包含学生的信息,以及一个名为 "Grades" 的表,其中包含学生的考试成绩。我们希望获取所有学生的信息,以及他们可能的考试成绩。

Students 表:

Student_ID

Name

Age

1

John

20

2

Alice

22

3

Bob

21

Grades 表:

Student_ID

Subject

Grade

1

Math

A

2

Science

B

4

English

A

内联结:

select students.name,grades.subject,grades.grade

from students

inner join grades on grades.student_id=students.student_id;

name

subject

grade

John

Math

A

Alice

Science

B

左联结:

select students.name,grades.subject,grades.grade

from students

left join grades on grades.student_id=students.student_id;

name

subject

grade

John

Math

A

Alice

Science

B

Bob

NULL

NULL

右联结:

select students.name,grades.subject,grades.grade

from students

right join grades on grades.student_id=students.student_id;

name

subject

grade

John

Math

A

Alice

Science

B

NULL

English

A

外联结:

select students.name,grades.subject,grades.grade

from students

full join grades on grades.student_id=students.student_id;

name

subject

grade

John

Math

A

Alice

Science

B

Bob

NULL

NULL

NULL

English

A

两个表可以用where语句进行联结,但不建议使用。

例:

SELECT vend_name, prod_name, prod_price

FROM vendors, products

WHERE vendors.vend_id = products.vend_id

ORDER BY vend_name, prod_name;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WiFi蓝牙模块促进传统零售数字化转型:智能零售体验再升级

随着科技的不断发展&#xff0c;数字化转型已经成为了各行各业的必然趋势。在传统零售业中&#xff0c;WiFi蓝牙模块的应用正逐渐推动着行业的数字化转型&#xff0c;为消费者带来更加智能化、便捷化的零售体验。本文MesoonRF美迅物联网将从以下几个方面阐述WiFi蓝牙模块在传统…

稍微学学react

文章开始前&#xff0c;先划划水~ 今日份开心&#xff1a; 今天看之前发布的按钮npm包下载量有162次&#xff0c;早知道好好做了 今日份不开心&#xff1a; 爬岗位看到一个整体都挺满意的岗位&#xff0c;公司位置和发展大方向都好喜欢&#xff01;&#xff01;&#xff01;…

机器学习学习(2)

基于数据流图的编程范式:声明式编程(Declarative Programming )、命令式编程(Imperative Programming ); 声明式编程(Declarative Programming ) 代表性框架:TensorFlow, CNTK, Caffe2 特点:用户只需要表达模型结构和需要执行的任务,无需关注底层的执行流程,框…

【UE+GIS】UE5GIS CAD或shp构建3D地形

贴合地形的矢量图形实现方法 一、灰度图的制作和拉伸换算1、基于高程点集实现2、基于等高线实现3、拉伸计算 二、生成地形模型的实现方案1、3Dmax导入灰度图2、使用ArcMap/Arcpro/FME等GIS数据处理工具3、UE导入灰度图 三、地形上叠加地形渲染效果的实现方案1、贴花2、数据渲染…

【transformers】pytorch基础

传送门&#xff1a;https://transformers.run/c2/2021-12-14-transformers-note-3/ pytorch基础知识 tensor &#xff1a; 张量。 需要知道的内容&#xff1a; 张量构建张量计算自动微分形状调整广播机制索引与切片升降维度 Tensor 张量&#xff1a;理解成高纬度的向量就完…

【最新鸿蒙应用开发】——什么是状态管理?

状态管理 在声明式UI编程框架中&#xff0c;UI是程序状态的运行结果&#xff0c;用户构建了一个UI模型&#xff0c;其中应用的运行时的状态是参数。当参数改变时&#xff0c;UI作为返回结果&#xff0c;也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染&#xf…

系统安全及其应用

系统安全&#xff1a; 1&#xff09;保护数据安全&#xff0c; 2&#xff09;互联网&#xff0c;网络业务服务等&#xff0c;必须要通过工信部的资质审核 3&#xff09;保护品牌形象 应用&#xff1a; 账号安全 1&#xff09;把不需要或者不想登录的用户设置为nologin us…

echarts绘制三维柱状图

echarts ECharts 是一个使用 JavaScript 实现的开源可视化库&#xff0c;主要用于数据的可视化展示。ECharts 支持丰富的图表类型&#xff0c;如折线图、柱状图、饼图、地图、K线图等&#xff0c;可以满足不同类型数据的展示需求。 文档地址&#xff1a;echarts 本次所绘制三…

Django request.POST获取提交的表单数据

在Django中&#xff0c;request.POST 是一个特殊的属性&#xff0c;它是一个类似于字典的对象&#xff0c;用于访问通过POST方法提交的表单数据。如果你在视图中使用 print(request.POST.get(username))&#xff0c;这通常意味着你正在尝试从一个HTML表单中获取一个名为 userna…

数学建模之MATLAB入门教程(上)

前言&#xff1a; • MATLAB是美国Math Works公司出品的商业数学软件&#xff0c;用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人&#xff0c;控制系统等领域。 • MATLAB将数值分析、矩阵计算、科学数据可视化以及非线性动…

Ubuntu server 24 (Linux) 普通用户不能sudo 也不能使用root登录 忘记root密码 修复解决方案

一 普通用户无法sudo&#xff0c;同时也没有其他用户可用 #test用户使用sudo报错&#xff0c;没有权限 testtest:~$ sudo vi /etc/sudoers [sudo] password for test: test is not in the sudoers file. 二 关闭ubuntu 服务器&#xff0c;重新开机 按下ESC 键 1 出现GRUB…

【工具】探索 MOU:每用户通话时长

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 &#x1f3b5; 邓紫棋《光年之外》 什么是 MOU…

RunLoop小白入门

核心概念 什么是 RunLoop ? RunLoop 是 iOS 和 macOS 应用程序框架中的一个核心概念&#xff0c;用于管理线程的事件处理。它可以看作是一个循环&#xff0c;用于持续接收和处理各种事件&#xff0c;如用户输入、定时器、网络事件等。RunLoop 在保持应用程序响应用户交互和系…

【再探】设计模式—备忘录模式与解释器模式

备忘录模式是用于保存对象在某个时刻的状态&#xff0c;来实现撤销操作。而解释器模式则是将文本按照定义的文法规则解析成对应的命令。 1 备忘录模式 需求&#xff1a;保存对象在某个时刻的状态&#xff0c;后面可以对该对象实行撤销操作。 1.1 备忘录模式介绍 提供一种状…

Anaconda创建python环境默认C盘,如何修改路径

文章目录 前言解决方案1.找到Anaconda的根目录2. 找到根目录文件夹&#xff0c;右键-属性-安全 测试-重新创建新的python环境 前言 使用 Anaconda创建python环境&#xff0c;默认在C盘。 如何修改到别的路径呢&#xff1f; base环境 是安装 Anaconda是安装的默认环境&#x…

YOLOv8_obb训练流程-原理解析[旋转目标检测理论篇]

在旋转目标检测网络中,换了个顺序,先把训练流程捋一遍,然后再取捋一下测试的流程。由下图的YOLOv8l_obb网络结构图可以看到相对于目标检测网络,旋转目标检测网络只是在Head层不相同,在每个尺度特征层中增加了Angle分支(浅蓝色),通过两个卷积组和一个Conv卷积得到得到通…

隐马尔可夫链

1 马尔可夫链 马尔科夫链&#xff08;Markov Chain&#xff09;是一种数学模型&#xff0c;它描述了一系列可能事件的概率&#xff0c;其中每个事件的发生仅依赖于前一个事件的状态。这一特性称为“无记忆性”或“马尔可夫性质”。我将用一个简单的天气预测模型作为例子来解释马…

Docker的网络管理

文章目录 一、Docker容器之间的通信1、直接互联&#xff08;默认Bridge网络&#xff09;1.1、Docker安装后默认的网络配置1.2、创建容器后的网络配置1.2.1、首先创建一个容器1.2.2、ip a 列出网卡变化信息1.2.3、查看新建容器后的桥接状态 1.3、容器内安装常见的工具1.4、容器间…

记一次线上数据库连接超时异常问题

最近其他团队的开发人员告知我&#xff0c;我们项目有个feign接口调用失败了。我查看日志发现&#xff0c;其原因是尝试数据库连接超时&#xff0c;30秒内都没有连接成功。 我首先判断可能是网络不稳定&#xff0c;在一定时间内连接不上数据库。我登录到服务器环境看&#xff0…

内网域中NTLM中继那些事儿

0x01 初识NTLM协议 基本概念&#xff1a;NTLM(NT LAN Manager)认证是一种早期的Windows网络身份认证协议。它在Windows系统中用于验证用户的身份&#xff0c;并提供对网络资源的访问控制&#xff0c;它是一种基于Challenge/Response的认证机制。 认证流程 NTLM协议Challenge…