【MySQL】如何实现单表查询?

news2024/11/25 21:27:48

在这里插入图片描述

在我们对数据进行操作时,查询无疑是至关重要的,查询操作灵活多变,我们可以根据开发的需求,设计高效的查询操作,把数据库中存储的数据展示给用户。


文章目录

  • 前言
  • 1. 基础查询
    • 1.1 基础查询语法
    • 1.2 基础查询练习
  • 2. 条件查询
    • 2.1 条件查询语法
    • 2.2 条件查询练习
  • 3. 排序查询
    • 3.1 排序查询语法
    • 3.2 排序查询练习
  • 4. 聚合函数
    • 4.1 聚合函数语法
    • 4.2 聚合函数练习
  • 5. 分组查询
    • 5.1 分组查询语法
    • 5.2 分组查询练习
  • 6. 分页查询
    • 6.1 分页查询语法
    • 5.2 分页查询练习
  • 7. 总结

前言

查询是数据操作至关重要的一部分,比如说在所有商品中查找出价格在规定范围内的所有商品,要想把数据库中的数据在客户端中展示给用户,一般都进行了查询的操作。

在实际开发中,我们要根据不同的需求,并且考虑查询的效率来决定怎样进行查询,学习查询前,可以先看看查询的完整语法:

SELECT
	字段列表
FROM
	表名列表
WHERE
	条件列表
GROUP BY
	分组字段
HAVING
	分组后条件
ORDER BY
	排序字段
LIMIT
	分页限定

根据查询的完整语法中的关键字,我们分别来学习基础查询,条件查询,排序查询,分组查询和分页查询。

我们使用以下的案例学习单表查询:

-- 删除stu表
drop table if exists stu;
-- 创建stu表
CREATE TABLE stu (
id int, -- 编号
name varchar(10), -- 姓名
age int, -- 年龄
gender varchar(5), -- 性别
math double(5,2), -- 数学成绩
english double(5,2) -- 英语成绩

);
-- 添加数据
INSERT INTO stu(id,name,age,gender,math,english)
VALUES
(1,'小张',23,'男',66,78),
(2,'小李',20,'女',98,87),
(3,'小陈',55,'男',56,77),
(4,'小樊',20,'女',76,65),
(5,'小马',20,'男',86,NULL),
(6,'小赵',57,'男',99,99);

在Navicat中选中SQL执行:

在这里插入图片描述

1. 基础查询

1.1 基础查询语法

查询多个字段:

select 字段列表 from 表名;

查询全部字段:

select * from 表名;

去除重复记录:

select distinct 字段列表 from 表名;

起别名操作:

select 字段名 别名 from 表名;

1.2 基础查询练习

我们使用前言中的案例进行基础查询练习:

查询多个字段的练习:

select name,math from stu;

在这里插入图片描述

起别名操作练习:

select name,english 英语成绩 from stu;

在这里插入图片描述

2. 条件查询

2.1 条件查询语法

一般语法:

select 字段列表 from 表名 where 条件列表;

条件查询一般配合运行符进行,下面是常见的几个运算符:

运算符功能描述
> < = !大于 小于 等于 不等于
between…and…在这个范围之内
in(…)多选一
is null / is not null是null / 不是null
and 或 &&并且
or 或 ||或者

2.2 条件查询练习

我们使用前言中的案例进行条件查询练习:

查询年龄大于20的学生信息:

select * from stu where age>20;

在这里插入图片描述查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于21岁的学生信息:

select * from stu where age in(18,20,21);

在这里插入图片描述模糊查询使用like关键字,可以使用通配符进行占位:

  • _ : 代表单个任意字符
  • % : 代表任意个数字符

查询姓名中含有张的学生信息:

select * from stu where name like '%张%';

在这里插入图片描述

3. 排序查询

3.1 排序查询语法

select 字段列表 from 表名 order by 排序字段名1 [排序方式]...;

注:排序方式又两种:分别是升序ASC和降序DESC,默认情况下是升序ASC。

3.2 排序查询练习

我们使用前言中的案例进行排序查询练习:

4. 聚合函数

4.1 聚合函数语法

什么是聚合函数呢?在进行查询操作时,我们往往需要对一整列进行运算,例如我们可以计算一整列成绩数据的平均值,我们就要使用聚合函数。下面是常见的聚合函数:

函数名功能
count(列名)统计数量(一般选用不为null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值

一般语法:

select 聚合函数 from 表名;

注:NULL值不参与聚合函数运算。

4.2 聚合函数练习

我们使用前言中的案例进行聚合函数的练习:

统计该表中一共有几个学生:

select count(id) from stu;

在这里插入图片描述

上面我们使用某一字段进行运算,这样做可能面临的问题是某一个值可能是NULL,所以我们一般使用 * 进行运算,因为一行中不可能所有的字段都是NULL。

select count(*) from stu;

查询数学成绩的平均分:

select avg(math) from stu;

在这里插入图片描述

5. 分组查询

5.1 分组查询语法

select 字段列表 from 表名 [where 分组前的条件限定] group by 分组字段名 [having 分组后的条件过滤]

注:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义。

5.2 分组查询练习

我们使用前言中的案例进行分组查询练习:

查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组:

select gender, avg(math),count(*) from stu where math > 70 group by gender;

在这里插入图片描述

查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的:


select gender, avg(math),count(*) from stu where math > 70 group by gender having count(*) > 2;

在这里插入图片描述

注:where 和 having 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。所以,where 不能对聚合函数进行判断,having 可以。

6. 分页查询

6.1 分页查询语法

在大家的印象中,网页在展示大量的数据时,往往不是把数据一下全部展示出来,也是用分页展示的形式,其实就是对数据进行分页查询的操作,即每次只查询一页的数据展示到页面上。

select 字段列表 from 表名 limit 查询起始索引,查询条目数;

limit 关键字中,查询起始索引这个参数是从0开始的。

5.2 分页查询练习

我们使用前言中的案例进行分页查询练习:

从0开始查询,查询3条数据:

select * from stu limit 0,3;

在这里插入图片描述起始索引 = (当前页码 - 1) * 每页显示的条数

7. 总结

结合经典案例的练习,我们已经完成了单表查询所有的基础和练习训练,查询作为对数据操作最重要的一部分,一定要不断地练习才能熟练的进行操作。

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

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

相关文章

算法与数据结构-复杂度分析(上)

文章目录 什么是大 O 复杂度表示法为什么要用大 O 复杂度表示法如何分析一段代码的时间复杂度1、只关注循环执行次数最多的一段代码2、加法法则&#xff1a;总复杂度等于量级最大的那段代码的复杂度3、乘法法则&#xff1a;嵌套代码的复杂度等于嵌套内外代码复杂度的乘积 几种常…

Unity老动画系统Animation

1、创建老动画系统 给要制作动画的GameObeject添加Animation组件 2、Animation参数 Animation&#xff1a;默认播放的动画 Animations&#xff1a;该动画组件可以控制的所有动画 Play AutoMatically&#xff1a;是否一开始就自动播放默认动画 Animate Physics&#xff1a;动画…

【JavaSE】Java基础语法(三十二):Stream流

文章目录 1. 体验Stream流2. Stream流的常见生成方式3. Stream流中间操作方法【应用】4. Stream流终结操作方法【应用】5. Stream流的收集操作 1. 体验Stream流 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素把集合中所有以"…

Python文件打包成exe文件

文章目录 背景安装pyinstaller开始打包总结 背景 今天因为在线将pdf转为word被收费了&#xff0c;有点不爽&#xff0c;所以自己动手撸一个pdf转word的小工具&#xff0c;想着打包成exe给朋友使用&#xff0c;万一哪天会用到呢&#xff1f; 安装pyinstaller 打开cmd命令窗口…

【AGC】云监控日志服务查询不到Logger日志相关问题

【关键字】 AGC、云监控、日志服务 【问题描述】 开发者反馈在使用AGC云监控&#xff0c;填写了Logger日志&#xff0c;但是在云监控的日志服务查不到的问题。具体如下所述&#xff1a; 云函数按要求写了Logger日志&#xff0c;但是在云监控的日志服务页面查询不到&#xff…

R语言混合效应(多水平/层次/嵌套)模型及 贝叶斯实现技术

回归分析是科学研究中十分重要的数据分析工具。随着现代统计技术发展&#xff0c;回归分析方法得到了极大改进。混合效应模型&#xff08;Mixed effect model&#xff09;&#xff0c;即多水平模型&#xff08;Multilevel model&#xff09;/分层模型(Hierarchical Model)/嵌套…

【计算思维题】少儿编程 蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第7套

少儿编程 蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第7套 1、下图中,乐乐家的位置用数对(4,3)表示,学校在乐乐家西南方向。下列选项中,学校的位置不可能是 A、(5,4) B、(2,2) C、(2,1) D、(1,2) 答案:A 考点分析:主要考查小朋友们的观察能力和方…

springboot聚合项目程打包,提示包不存在

报错提示如下&#xff0c;这是子模块large_screen调用login_security模块时&#xff0c;找不到login_security的包&#xff0c;但是login_security能单独打包成功 项目结构&#xff0c;两个子模块可以启动 解决办法&#xff1a; 父pom,要用 <packaging>pom</packag…

基础sql代码讲解含运行截图(详细版)

用student表为例&#xff0c;表的结构如下&#xff1a; 查询student表中的全部数据 SELECT * FROM student 插入数据&#xff1a; INSERT INTO student (id,name,phone,age) VALUES (2,张,1123,19) 还可以不写字段名字进行插入&#xff0c;但是此种方式必须和数据库字段一一…

3:String类

文章目录 String类1&#xff1a;介绍&#xff1a;2&#xff1a;String类实现了很多的接口&#xff1a;3&#xff1b;String类常用构造器4&#xff1a;不同方式创建String类对象的区别&#xff08;1&#xff09;直接赋值的方式&#xff08;2&#xff09;常规new的方式&#xff0…

租赁行业提供固定资产管理的解决方案

在租赁行业&#xff0c;固定资产管理和盘点是非常重要的环节。然而&#xff0c;由于资产数量庞大、资产分散、资产更新频繁等因素&#xff0c;使得固定资产管理和盘点变得十分复杂和繁琐。为了解决这些问题&#xff0c;易点易动固定资产管理系统应运而生。 易点易动固定资产管…

vulnhub 靶机渗透:Stapler

Stapler nmap扫描21 端口22 53端口80端口目录爆破 139端口666 端口3306端口12380端口获取数据库root权限获取系统立足点提权 其他思路系统立足点1系统立足点2提权1提权2 https://www.vulnhub.com/entry/stapler-1,150/ 靶机ip:192.168.54.27 kali ip:192.168.54.128 nmap扫描 …

【剑指offer】数据结构——树

目录 数据结构——树直接解【剑指offer】07. 重建二叉树【剑指offer】08. 二叉树的下一个结点【剑指offer】26. 树的子结构【剑指offer】27. 二叉树的镜像【剑指offer】28. 对称的二叉树【剑指offer】32.1 从上到下打印二叉树【剑指offer】32.2 从上到下打印二叉树2【剑指offer…

考研C语言第六章

6.2指针 类似寻宝图&#xff0c;先把地址存储到指针变量里面&#xff0c;然后去找这个地址 指针大小 当64bit——8bit 当32bit——4bit 定义指针一定要和里面的数定义一样类型的 6.3指针的传递使用场景 指针的使用场景&#xff1a;传递和偏移 &#xff08;不需要的话就别用指…

opencv_c++学习(二十八)

一、单目相机位姿估计 如上图所示&#xff0c;根据图像的情况反推相机的运动情况。 如实现上述功能则需要拍摄当前物体的图像&#xff0c;然后拍摄一段时间之后物体的图像&#xff0c;然后联合两张图像则可以获取两个时刻的相机位姿关系。 位姿估计函数&#xff1a; bool cv:s…

Musl libc 库成功适配到 openEuler Embedded,推动欧拉嵌入式生态发展

近期&#xff0c;RISC-V SIG 在欧拉嵌入式操作系统上成功实现了 musl libc 的适配&#xff0c;完成了使用 musl libc 库替换 glibc 库构建镜像的工作。目前&#xff0c;以 musl libc 为基础库编译的镜像已在 Raspberry Pi4 开发板上可用&#xff0c;这一成果推动了 openEuler E…

C Primer Plus第十一章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 1.设计并测试一个函数&#xff0c;从输…

《Opencv3编程入门》学习笔记—第二章

《Opencv3编程入门》学习笔记 记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 第二章 OpenCV 官方例程引导与赏析 openv官方提供的示例程序&#xff1a;具体位于..\opencv\sources\samples\cpp ..\opencv\sources\samples\cpp\tutorial_code路径下存…

sql优化常用的方法

文章目录 1、explain 输出执行计划2、in 和 not in 要慎用3、少用select *4、善用limit 15、 order by字段建索引6、count(*)推荐使用7、where 子句中避免is null /is not null8、应尽量避免在 where!或<>9、应尽量避免在 where 子句中使用 or10、尽量用union all代替uni…

了不起的互联网老男孩,在创业路上不掉队

“青春如同奔流的江河&#xff0c;一去不回来不及道别”&#xff0c;老男孩这首歌戳中了太多职场中年男人的心酸苦楚&#xff0c;面对经济下行压力、互联网行业变革以及中年职场危机&#xff0c;互联网人应该如何应对&#xff1f;如何建立和现实叫板的能力&#xff1f; 有2位在…