【 Python 全栈开发 - WEB开发篇 - 32 】MySQL高级查询

news2024/11/27 21:35:23

文章目录

  • 一、LIMIT限制查询结果的数量
  • 二、使用GROUP BY进行分组查询
    • 1.GROUP BY和聚合函数一起使用
    • 2.GROUP BY和聚合函数以及HAVING一起使用
  • 三、使用ORDER BY对查询结果排序


一、LIMIT限制查询结果的数量

开始之前,我们先准备一下数据,打开cmd,输入:

mysql -u root -p

进行登录,登录后:

  1. 创建数据库:
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;
  1. 创建 student 表:
CREATE TABLE student (
    id CHAR(6),
    name VARCHAR(50),
    age INT,
    gender VARCHAR(50) DEFAULT 'male'
);
  1. 向 student 表插入数据:
INSERT INTO student (id,name,age,gender) VALUES ('01', 'lili', 14, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('02', 'wang', 15, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('03', 'tywd', 16, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('04', 'hfgs', 17, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('05', 'qwer', 18, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('06', 'zxsd', 19, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('07', 'hjop', 16, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('08', 'tyop', 15, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('09', 'nhmk', 13, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('10', 'xdfv', 17, 'female');
INSERT INTO student (id,name,age,gender) VALUES ('12', 'lili', 14, 'male');
INSERT INTO student (id,name,age,gender) VALUES ('13', 'wang', 15, 'female');

当执行查询数据时可能会返回很多条记录,而用户需要的数据可能只是其中的一条或者几条。

查询年纪最小的 3 位同学:

select * from student order by age asc limit 3;

在这里插入图片描述

查询编号前五的学生:

select * from student order by id asc limit 5;

在这里插入图片描述

二、使用GROUP BY进行分组查询

GROUP BY 子句可像切蛋糕一样将表中的数据进行分组,再进行查询等操作。换言之,可通俗地理解为:通过GROUP BY将原来的表拆分成了几张小表。
接下来,我们通过一个新的例子开始学习GROUP BY,代码如下

创建数据库:

DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;

创建员工表:

CREATE TABLE employee (
    id int,
    name varchar(50),
    salary int,
    departmentnumber int
);

向员工表中插入数据:

INSERT INTO employee values(1,'tome',2000,01); 
INSERT INTO employee values(2,'lucy',9000,02); 
INSERT INTO employee values(3,'joke',5000,03); 
INSERT INTO employee values(4,'wang',3000,04); 
INSERT INTO employee values(5,'chen',3000,01); 
INSERT INTO employee values(6,'yukt',7000,02); 
INSERT INTO employee values(7,'rett',6000,03); 
INSERT INTO employee values(8,'mujk',4000,04); 
INSERT INTO employee values(9,'poik',3000,01);

1.GROUP BY和聚合函数一起使用

统计各部门员工个数:

select count(*), departmentnumber from employee group by departmentnumber;

统计部门编号大于 01 的各部门员工个数:

select count(*), departmentnumber from employee where departmentnumber>01 group by departmentnumber;

在这里插入图片描述

2.GROUP BY和聚合函数以及HAVING一起使用

统计工资总和大于 8000 的部门:

select sum(salary),departmentnumber from employee group by departmentnumber having sum(salary)>8000;

在这里插入图片描述

三、使用ORDER BY对查询结果排序

从表中査询出来的数据可能是无序的或者其排列顺序不是我们期望的。为此,我们可以使用ORDER BY对查询结果进行排序
其语法格式如下所示:

SELECT 字段名1,字段名2,FROM 表名
ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC];

在该语法中:字段名1、字段名2是查询结果排序的依据;参数 ASC 表示按照升序排序,DESC 表示按照降序排序;默认情况下,按照 ASC 方式排序。通常情况下,ORDER BY子句位于整个SELECT语句的末尾。

查询所有员工并按照薪水多少升序排列:

select * from employee order by salary asc;

在这里插入图片描述

查询所有员工并按照薪水多少降序排列:

select * from employee order by salary desc;

在这里插入图片描述


本文参考:MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)

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

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

相关文章

MsSqlServer2008R2移动数据库迁移复制粘贴附加.mdf不要.ldf日志 230609记录

MsSqlServer2008R2数据库迁移复制粘贴附加.mdf 230609记录 将一个SqlServer的某个数据文件.mdf拷贝到另一个数据库当中,并启用 操作工具为 SSMS(SQL Server Management Studio) 19.1 免费下载 SQL Server Management Studio (SSMS) 19.1 .mdf文件 SQL Server 数据库中的三…

【数据结构】何为数据结构。

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…

chatgpt赋能python:Python循环暂停和继续的方法

Python循环暂停和继续的方法 Python是一种高级编程语言,在编程中使用循环结构非常常见。很多情况下,我们需要在循环中暂停或者继续执行。在本文中,我们将介绍如何在Python中实现循环暂停和继续的方法。 循环暂停和继续的意义 在Python编程…

打死也要学的VUE.js(中文官方文档)

VUE.js中文官方文档 文章目录 VUE.js中文官方文档 创建一个 Vue 应用[#](https://cn.vuejs.org/guide/essentials/application.html#creating-a-vue-application)应用实例[#](https://cn.vuejs.org/guide/essentials/application.html#the-application-instance)根组件[#](http…

微信小程序抓包你会吗?不会我来教你

目录 前言 先来说小程序抓包问题 再说下小程序调试问题 解包wxapkg 调试小程序 总结: 前言 今天聊下微信小程序的抓取,其实小程序的抓取不难,主要解决抓包和如何调试小程序这两个问题。如果你运用chrome调试已经比较熟练了的话,就…

Java多线程、进程、并行、并发的理解(通俗易懂)

程序(programm) 概念:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。 进程(process) 概念:程序的一次执行过程,或是正在运行的一个程序。 说明:进程作为资源分配的单位,系统在运行时会为每…

基于VITS-fast-fine-tuning构建多speaker语音训练

1 VITS模型介绍 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)是一种语音合成方法,它使用预先训练好的语音编码器 (vocoder声码器) 将文本转化为语音。 VITS 的工作流程如下: &#xff0…

【CSS按钮特效】css如何实现科技感好看按钮效果(尾附源码下载)

【写在前面】这两天还是比较痴迷于CSS特效的,甚至还想着去用CSS做动画片呢,希望后面能做到,今天主要讲的是我们页面常见的元素-按钮,很多时候按钮也需要高级化,但是很多人苦于没有途径去寻找,于是乎借这个机…

jsx底层渲染机制,函数组件的底层渲染机制

jsx底层渲染机制!! 1.第一大步创建virtualDom 首先把我们编写的JSX语法,编译为虚拟DOM对象「virtualDOM」,这一步也分为两小步 虚拟DON对象∶框架自己内部构建的一套对象体系(对象的相关成员都是React内部规定的)&a…

深入理解深度学习——注意力机制(Attention Mechanism):多头注意力(Multihead Attention)

分类目录:《深入理解深度学习》总目录 在实践中,当给定相同的查询、键和值的集合时,我们希望模型可以基于相同的注意力机制学习到不同的行为, 然后将不同的行为作为知识组合起来, 捕获序列内各种范围的依赖关系 &#…

论文解读:GBPNet:蛋白质结构的通用几何表示学习

GBPNet: Universal Geometric Representation Learning on Protein Structures DOI:https://doi.org/10.1145/3534678.3539441 Github:GBPNet/gbpnet/datamodules at main sarpaykent/GBPNet GitHub 摘要: 蛋白质3D结构的表示学习对于例如计算蛋白质设计或蛋白…

单链表OJ题:LeetCode--160.相交链表

朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第160道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏:数据结构与算法 个 人…

Lecture 19 Question Answering

目录 introductionIR-based QA (dominant approach)Knowledge-based QAHybrid QAConclusion introduction Definition: question answering (“QA”) is the task of automatically determining the answer for a natural language questionMostly focus on “factoid” quest…

牛客网论坛最具争议的Linux内核成神笔记,GitHub已下载量已过百万

原文地址:牛客网论坛最具争议的Linux内核成神笔记,GitHub已下载量已过百万 1、前言 Linux内核是一个操作系统(OS)内核,本质上定义为类Unix。它用于不同的操作系统,主要是以不同的Linux发行版的形式。Linu…

网红如何创建百度百科词条?

随着互联网的发展,越来越多的人开始从事网红行业。对于网红来说,提升自己的个人形象至关重要,一个提升品牌形象的快速方式就是创建百度百科词条。网红如何创建百度百科词条?如何创建一个高质量的百度百科词条?下面伯乐…

万维网服务器

一、域名解析gethostbyname函数 struct hostent {char *h_name; /* 官方域名 */char **h_aliases; /* 别名*/int h_addrtype; /* 地址族(地址类型) */int h_length; /* 地址长度 */char **h_addr_list; …

Qt扫盲-Qt事件系统概述

Qt事件系统概述 一、概述二、事件类型 - Event Types三、事件处理程序 - Event Handlers四、事件过滤器 - Event Filters五、发送事件 - Sending Events1. sendEvent()2. postEvent() 一、概述 在Qt中,事件是由抽象的QEvent类派生而来的对象,表示发生在…

凌恩全新育种分析流程!助力种质资源高分文章发表!

种质资源又称遗传资源。种质是指生物体亲代传递给子代的遗传物质,它往往存在于特定品种之中。如古老的地方品种、新培育的推广品种、重要的遗传材料,野生近缘植物以及利用上述繁殖材料创造的各种遗传材料,都属于种质资源的范围,是…

为什么要使用微软的 Application Framework?

我是荔园微风,作为一名在IT界整整25年的老兵,今天来看一下我们为什么要使用微软的 Application Framework? 虽然Application Framework 并不是新观念,它们却在最近数年才成为 PC 平台上软件开发的主流工具。面向对象语言是具体实…

【Spring Boot 初识丨三】starter

Soring Boot 初识 【Spring Boot 初识丨一】入门实战 【Spring Boot 初识丨二】maven 本篇来讲一讲 starter 依赖项 Starter 一、定义二、启动器2.1 应用启动器2.2 生产启动器2.3 技术启动器 一、定义 启动器是一组方便的依赖关系描述符,它包含了一系列可以集成到应…