开开心心带你学习MySQL数据库之第六篇下

news2024/11/13 13:05:03

插入查询结果

把查询和新增联合起来.
把查询结果作为新增的数据
例子:把student1表的查询结果作为新增数据插入到student2表中.

 create table student1(id int, name varchar(20));
 create table student2(id int, name varchar(20));
 insert into student1 values(1, '张三'), (2, '李四'), (3, '王五');
 insert into student2 select * from student1;

约束要求:

  • 查询结果得到的列数,类型需要和插入的表的列数,类型匹配 => 表结构相同

聚合查询

在查询过程中,表的行与行之间进行一定的运算
依赖聚合函数 => SQL提供的库函数
常见的聚合函数

函数说明
COUNT([DISTINCT] expr)返回查询到的数据的数量 => 查询结果的行数
SUM([DISTINCT] expr)返回查询到的数据的总和,不是数字没有意义 => 求和
AVG([DISTINCT] expr)返回查询到的数据的平均值,不是数字没有意义 => 平均值
MAX([DISTINCT] expr)返回查询到的数据的最大值,不是数字没有意义 => 最大值
MIN([DISTINCT] expr)返回查询到的数据的最小值,不是数字没有意义 => 最小值

count => 计算一下按select * from 表名得到的结果行数
这个操作可以理解成先执行select *, 然后去计算select *查询结果有多少行

create table student(id int, name varchar(20));
insert into student values(1, '张三'), (2, '李四'), (3, '王五'), (4, NULL);
select count(*) from student;

sum求和 => 只是针对数子列有效,如果是字符串列,则无法计算
求一个班级里面所有同学的语文成绩总分和是多少

-- 创建考试成绩表
drop table if exists exam_result;
create table exam_result (
	id int,
	name varchar(20),
	chinese decimal(3,1),
	math decimal(3,1),
	english decimal(3,1)
);

-- 插入测试数据
insert into exam_result (id, name, chinese, math, english) values
	(1,'唐三藏', 67, 98, 56),
	(2,'孙悟空', 87.5, 78, 77),
	(3,'猪悟能', 88, 98.0, 90),
	(4,'曹孟德', 82, 84, 67),
	(5,'刘玄德', 55.5, 85, 45),
	(6,'孙权', 70, 73, 78.5),
	(7,'宋公明', 75, 65, 30);

-- 求全班语文成绩和
select sum(chinese) from exam_result;

-- 往表中插入含有null的一行数据
insert into exam_result values (8, '如来佛主', null, null, null);
select sum(chinese) from exam_result;
-- 数据结果没变,正常显示

sum操作会自动跳过结果null的行
avg计算语文平均值
image-20230908113008248
聚合函数还能搭配表达式使用
求总分的平均值
image-20230908115329333
求班上语文的最高分和最低分
image-20230908121114106

~~sql是有一定的"统计计算"能力的!这就像excel一样 => 正因为sql有这样的统计能力,有的时候, sql也是非技术岗(产品经理)要掌握的技能
能不能再聚合函数里面再放一个聚合函数?
答:(1)sql表达逻辑的能力是有限的,如果有这样的需求,可以使用java操作sql,复杂逻辑用java来表达, sql只是做简单的查询和统计 => 常见做法⭐️ ⭐️ ⭐️
(2)其实sql也能写复杂的,但是可读性和执行效率都会很差

这些聚合函数,默认都是针对这个表里的所有类进行了聚合
有时候,还需要分组聚合(按照制定的字段,把记录分成若干组.每一组分别使用聚合函数)

-- 创建员工表
create table employee(id int, name varchar(20), post varchar(20), salary int);

-- 往表中插入几条记录
insert into employee values (1, '初一', '讲师', 10000);
insert into employee values (2, '初二', '讲师', 11000);
insert into employee values (3, '初三', '讲师', 12000);
insert into employee values (4, '初四', '学管师', 10000);
insert into employee values (5, '初五', '学管师', 9000);
insert into employee values (6, '如来佛祖', '老板', 100000);
insert into employee values (7, '太上老君', '老板', 120000);

求出每个岗位的平均薪资
~~就需要使用分组查询
~~使用group by进行分组
指定一个列,把列里相同的值,相同的分到同一个组中
image-20230908155901036
image-20230908155752335

select 指定的列,要么是带有聚合函数的,要么就得是指定的group by的列…不能指定一个非聚合非group by 的列~~比如写个name , name 不是group by 的列也不带聚合函数,此时这里的查询结果无意义!!!(不会报错)

分组的时候,可以指定条件筛选,
~~先搞清楚,筛选条件是分组前,还是分组后
求出除孙悟空外的每个岗位的平均薪资
1.分组前,筛选,使用where条件.
求每个岗位的平均薪资,但是刨除初一同学
image-20230908162814632
2.分组后,筛选,使用having条件
求每个岗位的平均薪资,但是刨除老板
image-20230908163212437
3.可以同时在分组前和分组后筛选!!
求每个岗位的平均薪资,但是刨除初一同学和老板这个岗位
image-20230908163940500

联合查询(多表查询)

把多个表联合到一起进行查询
~~笛卡尔积(一种运算),联合查询就是基于这个运算进行拓展的
~~我们熟悉的平面直角坐标系也叫笛卡尔坐标系笛卡尔积,其实就是一种排列组合.把两张表的记录尽可能的排列组合出N种情况

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

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

相关文章

NFT 合约部署教程

本篇文章主要介绍如何将您的 NFT(ERC-721 Token) 通过智能合约部署到去中心化网络中 Init Project //创建一款ocean的NFT mkdir nft-ocean//进入目录 cd nft-ocean//初始化项目,根据提示填写即可,packname和description填写即可 npm init//添加hardhat…

【JAVA】Object类与抽象类

作者主页:paper jie_的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和…

批量剪辑神器:AI智剪技巧全攻略

在视频剪辑的工作流程中,效率和质量都是至关重要的。有时候,我们需要对大量的视频进行剪辑,这可能会耗费大量的时间和人力。然而,随着技术的发展,AI智能剪辑工具如固乔智剪软件的出现,大大提高了剪辑的效率…

架构师之如何定位问题

1. 什么是问题 很多人对问题的理解不一样,有人认为问题就是解决方案中的难点,有人认为问题是现实和目标的差距,这些解读我觉得都还不够精确,尝试从毛主席的矛盾论中得到比较合理的解释: 问题就是事物的矛盾。哪里有没…

Ubuntu22.04 安装 MongoDB 7.0

稍微查了一些文章发现普遍比较过时。有的是使用旧版本的Ubuntu,或者安装的旧版本的MongoDB。英语可以的朋友可以移步Install MongoDB Community Edition on Ubuntu — MongoDB Manual,按照官方安装文档操作。伸手党或者英语略差的朋友可以按照本文一步步…

计算机重点学科评级B-,山东省属重点高校考情分析

山东科技大学(B-) 考研难度(☆☆) 内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1175字预计阅读:3分钟 2023考情概况 山东科技大学计…

stable diffusion webui升级bug问题解决思路(纯干货)

个人网站:https://tianfeng.space/ 文章目录 一、前言二、个人方案1.扼杀在萌芽中A.解压后点击启动器运行依赖,然后点击A启动器B.更新本体和扩展(全部到最新版本)C.把controlnet1.1放入stable diffusion 中D.插件转移E.模型转移F…

怎么选动捕设备?惯性动作捕捉还是光学动捕?

动捕设备在3D角色动画、影视制作中使用,通过动捕设备记录真人演员的动作,然后将其转换为数字模型的动作生成三维的计算机动画,使用动捕设备可以让动画角色更逼真地移动。 目前市面上主要分为光学动捕设备与惯性动作捕捉设备,这二…

基于SSM的学生课外知识学习网站

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

电水壶上要求亚马逊美国站SOR/2016-181和CSA22.1标准?

电水壶作为一种常见的小家电,受到了广大消费者的喜爱。然而,由于安全问题的日益重视,亚马逊加拿大站决定加强对电水壶产品的审核,以确保消费者的安全和权益。 近日,亚马逊平台发布公告,要求在加拿大站销售…

跨越时空,亲临其境:3D展示技术让你在家就能游览全球旅游景区

随着科技的不断发展,3D虚拟现实技术在文旅景区中的应用越来越广泛。相比传统的游览方式,3D展示技术具有以下优点: 一、真实感强 3D全景展示可以将文旅景区的真实场景以三维的方式呈现出来,让游客可以在虚拟的环境中感受到真实的场…

电子产品出口欧盟做什么认证?电子产品CE认证标准有哪些?

CE认证是产品出口到欧盟的通行证,没有CE认证标志的产品是不允许在欧盟市场上销售的,今天就给大家介绍常见的电子产品的CE认证标准有哪些? 电子产品CE认证标准有哪些? 常见的电子产品办理CE认证,做的认证指令是EMC指令…

方案丨TSINGSEE青犀视频AI智能算法助力智慧农业高质量建设

我国是农业大国,随着AI等新兴技术的飞速发展,大数据、互联网等技术业运用到了农业生产的各个环节,为提高土地利用率、减少热工成本,提高生产效率,智慧农业应运而生。 旭帆科技TSINGSEE青犀视频AI智慧农业解决方案&…

如何在SOLIDWORKS中更改单位-硕迪科技

SOLIDWORKS中的单位系统 SOLIDWORKS中的单位系统可以针对单个文件修改、一次修改多个文件以及在默认模板中进行修改。每个SOLIDWORKS文件都有一个单位系统,该单位系统由该文件的文档属性控制。默认情况下,SOLIDWORKS零件、装配体和工程图模板各自规定了…

外贸erp软件条码管理解决方案,应对外贸客户变化多样性

在国际贸易市场下,仓库对于市场和企业之间是商品的流量和储存是必不可少的。其中,条形码在仓储物流中,主要的作用是对物料跟踪管理、建立完整的产品档案,保障仓储的稳定运行,利用仓储空间,提高服务质量。 …

(DXE_DRIVER)PciHostBridge

UEFI-PciHostBridge 1、PciHostBridge简介 PciHostBridge: 提供PCI配置空间,IO,MEM空间访问接口以及统一维护平台相关的PCI资源,提供gEfiPciHostBridgeResourceAllocationProtocolGuid,创建RootBridge等为PciBusDxe提供服务; 2、PciHostBridge 配置空间 PCI桥可管理其下PCI子…

table 单元格中嵌套子表格 样式撑开问题

如图,表格中的td嵌套表格,里边表格把外层撑开,不能按100%显示; 解决办法 给父级table 加一个table-layout:fixed;样式

Tomcat启动! 一文带你知道什么是Tomcat以及如何安装

前言: Tomcat(全称为Apache Tomcat)是一个开源的Java Servlet容器,也是JavaServer Pages(JSP)的引擎。它是Apache软件基金会的一个项目,用于使Java应用能够在Web服务器上运行。Tomcat充当Web服务…

小节2:Python数学运算

1、Python的运算优先级顺序和平时数学中的一样,都是先括号,再乘方,再乘除,再加减。 PS:乘方符号再Python中用**表示,如2的三次方用2**3表示 2、用Python做更高级的运算(如:三角函数…

敏捷开发、V模型开发、瀑布模型

在软件开发领域,敏捷开发和V模型开发是两种主要的开发方法。它们之间的差异主要体现在开发过程的结构和组织方式上。在以下讨论中,我们将深入探讨这两种方法的特点和差异。 敏捷开发 敏捷开发是一种迭代和增量的软件开发方法,它强调灵活性和…