MySQL数据库——DQL操作——基本查询

在这里插入图片描述

文章目录

  • 前言
  • 事前准备——测试数据
  • 整表查询
  • 指定列查找
  • 别名查询
  • MySQL运算符
  • 条件查询
  • 模糊查询
  • 排序查询
  • 聚合查询
  • 分组查询
    • 分组之后的条件筛选
  • 分页查询
  • 将整张表的数据插入到另一张表中

前言

MySQL数据库常见的操作是增删查改,而其中数据的查询是使用最多,也是最重要的操作,但是简单的查询操作是不够的,我们还需要对数据进行特定的出来再显示才能真正达到我们的目的。那么今天我将为大家分享MySQL的DQL操作——基本查询。

事前准备——测试数据

在分享之前,我们需要先在数据库中插入一些测试数据。

create table student(class_id int,id int,name varchar(20),
					gender varchar(10),
					chinese decimal(3,1),math decimal(3,1),
					english decimal(3,1));

insert into student values(2301,1,'张三','男',87.5,93,94),
						(2302,2,'李四','女',88,95,92),
						(2302,3,'王五','男',86,96,96),
						(2302,4,'赵六','男',90,90,89.5),
						(2303,5,'李华','男',96,94,78),
						(2303,6,'小明','男',93.5,93,97),
						(2304,7,'小美','女',85,90,98),
						(2304,8,'小帅','男',88,91.5,93),
						(2305,9,'小芳','女',89,90,94),
						(2206,10,'大壮','男',89,96.5,97);

在这里插入图片描述

整表查询

在MySQL中,查询依赖于 select 关键字。而整表查询则是 select * from 表名;
* 表示所有,在这里表示所有列。

select * from student;

在这里插入图片描述

指定列查找

平时我们可能不需要表中的全部数据,那么我们就可以指定列,来展示我们想要的数据,MySQL中使用 select 列名1,列名2 from 表名; 来查询指定列。

select class_id,name from student;

在这里插入图片描述

别名查询

在查询的过程过,我们可以更改显示的表名或者列名,但更改的只是临时表的表名或者列名,实际上并没有更改。

别名查询依赖 as 关键字。表别名:select * / 列名 from 表名 as 表别名;
列别名:select 列名1 as 列别名,列名2 from 表名; (as 可以省略)

select class_id as c_id,name from student;

在这里插入图片描述

MySQL运算符

我们可以通过使用MySQL运算符来操作数据。

算术运算符

算术运算符说明
+加法运算
-减法运算
*乘法运算
/ 或 DIV除法运算,返回商
% 或 MOD求余运算,返回余数

比较运算符

比较运算符说明
=等于,注意:这里等于就是等于,没有 == 表示等于的说法
< 和 <=小于和小于等于
> 和 >=大于和大于等于
<=>安全的等于,两个操作码均为NULL是,其所得值为1;而当一个操作码为NULL时,所得值值为0
<> 或 !=不等于
IS NULL 或 ISNULL判断一个值是否为 NULL
IS NOT NULL判断一个值是否不为 NULL
LEAST当有两个或多个参数时,返回最小值
GREATEST当有两个或多个参数时,返回最大值
BTWEEN AND判断一个值是否落在两个值之间
IN判断一个值时否是 IN 列表中的任意一个值
NOT IN判断一个值是否不是 IN 列表中的任意一个值
LIKE通配符匹配
REGEXP正则表达式匹配

当我们需要判断数据是否为 NULL 的时候,不能使用 = 或 != ,而要使用 IS NULL
IS NOT NULL ,因为在MySQL中 NULL 与任何数据都不相等,也包括自己。

select least(10,20,30);

在这里插入图片描述
LEASTGREATEST 的参数中如果存在 NULL ,那么就会停止比较,直接返回 NULL。

select least(null,20,30);

在这里插入图片描述

逻辑运算符

逻辑运算符说明
NOT 或 !逻辑非
AND 或 &&逻辑与
OR 或 ||逻辑或
XOR逻辑异或

位运算符

位运算符说明
|按位或
&按位与
^按位异或
<<按位左移
>>按位右移
~按位取反,比特位 0->1,1 -> 0

位运算符操作的对象都是数字的二进制形式。

条件查询

在查询数据的过程中,我们可以对数据进行筛选之后在显示出来。MySQL 条件查询依赖于 where 通常条件语句会使用到我们前面列举的MySQL运算符。
select * / 列名 from 表名 where 条件;

select * from student where class_id = 2302; -- 查询班级为2302的学生信息

在这里插入图片描述

select 
	name,english 
from 
	student 
where 
	english >= 80 AND english < 90; -- 查询英语乘积在80-90分之间的学生信息

在这里插入图片描述

这里会不会显得SQL语句很长呢?那么我们是否可以将 select 后面的列名别名然后再进行条件筛选呢?

select 
	name,english eng 
from 
	student 
where 
	eng >= 80 AND eng < 90; -- 查询英语乘积在80-90分之间的学生信息

在这里插入图片描述
答案是不行的,因为 select 的执行是后于 where 的。

模糊查询

MySQL中模糊查询的关键字是 LIKE ,并且我们还需要知道模糊查询会使用的通配符
% 用来匹配任意字符,_ 用来匹配单个字符。
select * / 列名 from 表名 where 列名 = '_%';

select * from student where name like '小%';

在这里插入图片描述
然后我们为了体现模糊查询我们再插入一个数据。

insert into student values(2302,11,'李大虎','男',80,88,91);
select * from student where name like '_大%'; -- 查询名字第二个字为大的学生信息

在这里插入图片描述

排序查询

我们可以将需要查询的数据进行排序之后展现出来。而MySQL排序则需要使用到 order by 关键字。
select * / 列名 from 表名 (where 条件) order by 列名 asc / desc;

asc 表示升序排列(默认),desc 表示降序排列。

select class_id,name,math from student order by math desc; -- 按数学成绩降序排列

在这里插入图片描述

select class_id,name,math from student where gender = '男' order by math desc; -- 男生按数学成绩降序排列

在这里插入图片描述
order by排序的字段必须是数字类型或者英文和数字字符串类型

MySQL中,也可以以多个列为标准来排序。但是这些列的比重与顺序呈正相关。
select * from 表名 order by 列名1,列名2; 先以列名1为标准,如果列名1的数据相等,就比较列名2中的数据。

select * from student order by math,chinese,english;

在这里插入图片描述

聚合查询

MySQL聚合查询是一种用于计算和汇总数据的查询方式。它通过使用聚合函数和GROUP BY子句对数据进行分组,并对每个组中的数据应用聚合函数,从而返回汇总的结果。
select 聚合函数(列名) from 表名;

聚合函数

聚合函数作用
count()统计指定列不为NULL的记录行数
sum()计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0
max()计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
min()计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
avg()计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0
select count(name) from student;

在这里插入图片描述

聚合函数对NULL的处理:

  1. count 函数对 null 值的处理如果 count 函数的参数为星号( * ),则统计所有记录的个数。而如果参数为某字段,不统计含null 值的记录个数。
  2. sum 和 avg 函数对 null 值的处理这两个函数忽略 null 值的存在,就好象该条记录不存在一样。
  3. max 和 min 函数对 null 值的处理max 和 min 两个函数同样忽略 null 值的存在。

当我们使用聚合函数的时候,往往 select 后面的只有聚合函数,因为使用了聚合函数最终只会显示一行,不知道跟哪一行对齐。

分组查询

在日常生活中,我们往往需要先对数据进行分组,然后再对数据进行处理,同样MySQL也支持分组查询,MySQL中依赖于 group by 关键字实现分组查询。
select * / 列名 from 表名 group by 列名

因为使用了分组查询之后,每个不同的组的记录只会出现一条,所以我们 select 的对象只能含有该分组的列名或者聚合函数。

select * from student group by class_id;

在这里插入图片描述

select class_id,count(class_id) from student group by class_id; -- 统计每个班的学生人数

在这里插入图片描述

group by 后面也可跟多个字段,只有这几个字段完全一样才会被分到一组。

select class_id,gender,count(name) from student group by class_id,gender;

在这里插入图片描述

分组之后的条件筛选

当我们进行完分组之后,我们还可以对数据进行筛选,但是我们不能使用 where 条件 ,而是使用having 条件

select 
	class_id,count(class_id) 
from 
	student 
group by 
	class_id 
having 
	count(class_id) > 1; -- 筛选出班级人数大于1的班级

在这里插入图片描述

看到这里,大家会不会觉得这一行代码太长,可以将前面的聚合函数实现别名使用呢?

select 
	class_id,count(class_id) cid_num 
from 
	student 
group by 
	class_id 
having 
	cid_num > 1; -- 筛选出班级人数大于1的班级

在这里插入图片描述
答案是可以的,那么我们需要知道MySQL查询
select * / 列名 from 表名 where 条件 group by 列名 having 条件 order by 列名 limit 中 select 、from 、where 、group by、having、order by、limit 的执行顺序。

from -> where -> group by -> 聚合函数 -> having ->select -> order by -> limit

分页查询

当我们查询数据的时候,如果数据过多,那么一页肯定是放不下的,而且我们看的也不是很美观,所以这就用到了分页查询 limit

在这里插入图片描述
select * from 表名 limit num; num表示显示num个记录。
select * from 表名 limit m,n 表示从第 m+1 个记录开始,显示n个数据。

select 
	*,(chinese + math + english) 
as 
	sum 
from 
	student 
order by 
	sum 
desc limit 
	5;  -- 显示总成据前五名的信息

在这里插入图片描述

select 
	*,(chinese + math + english) 
as 
	sum 
from 
	student 
order by 
	sum 
desc limit 
	2,5;  -- 显示总成绩从第三名开始的五名学生的信息

在这里插入图片描述

将整张表的数据插入到另一张表中

将整张表插入到另一张表中可以大量节省代码量和时间。在MySQL中,整表插入数据有两种方式:insert into Table2(列名1,列名2) select 列名1,列名2 from Table1; 这种方法Table2必须事先存在,select 列名1,列名2 into Table2 from Table1; 这种形式的插入要求Table2不存在,因为这种形式的插入会创建表Table2。但是第二种插入方式在MySQL8之后便不能使用了。

注意:整表插入需要两张表的字段也就是列相同,并且尽量保证列类型也相同

create table student2(class_id int,id int,name varchar(20),
					gender varchar(10),
					chinese decimal(3,1),math decimal(3,1),
					english decimal(3,1));

insert into student2 select * from student;
select * from student2;

在这里插入图片描述

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

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

相关文章

WormGPT – 网络犯罪分子用来犯罪的人工智能工具

WormGPT – 网络犯罪分子用来发起商业电子邮件泄露攻击的生成式人工智能工具 前言 什么是蠕虫GPT&#xff08;WormGPT&#xff09; WormGPT是基于EleutherAI于2021年创建的大型语言模型GPT-J的AI模型。它具有无限的字符支持、聊天记忆保留和代码格式化功能。 如果未部署适当…

行为型:发布订阅模式

定义   发布订阅模式是基于一个事件&#xff08;主题&#xff09;通道&#xff0c;希望接收通知的对象Subscriber&#xff08;订阅者&#xff09;通过自定义事件订阅主题&#xff0c;被激活事件的对象 Publisher &#xff08;发布者&#xff09;通过发布主题事件的方式通知订…

AI 绘画Stable Diffusion 研究(二)sd模型ControlNet1.1 介绍与安装

部署包作者:秋葉aaaki 免责声明: 本安装包及启动器免费提供 无任何盈利目的 大家好&#xff0c;我是风雨无阻。 众所周知&#xff0c;StableDiffusion 是非常强大的AI绘图工具&#xff0c;需要详细了解StableDiffusion的朋友&#xff0c;可查看我之前的这篇文章&#xff1a; …

深度学习实践——模型部署优化实践

系列实验 深度学习实践——卷积神经网络实践&#xff1a;裂缝识别 深度学习实践——循环神经网络实践 深度学习实践——模型部署优化实践 深度学习实践——模型推理优化练习 源码&#xff1a; 1. 对应的github地址 https://github.com/Asionm/streamlit_demo 2. 对应的gitee地…

fwrite函数

1、函数声明 size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); 2、参数说明 buffer 指向要写入的数据的指针。 size 项大小&#xff08;以字节为单位&#xff09;。 count 要写入的项的最大数量。 stream 指向 FILE 结构的指针。 3、…

【机器学习】Cost Function

Cost Function 1、计算 cost2、cost 函数的直观理解3、cost 可视化总结附录 首先&#xff0c;导入所需的库&#xff1a; import numpy as np %matplotlib widget import matplotlib.pyplot as plt from lab_utils_uni import plt_intuition, plt_stationary, plt_update_onclic…

C# VS2022+WinForm+Oracle19.3+存储过程,SQL和代码分离

【我的目的】&#xff1a;SQL和代码分别存放在不同的地方&#xff0c;便于随时修改SQL的内容&#xff0c;也便于修改SQL的书写格式 方案1&#xff1a;把SQL存放在DataSet.xsd中实现SQL和代码分离 方案2&#xff1a;用存储过程实现SQL和代码分离 我最倾向方案1&#xff0c;利用…

网络安全(黑客)自学误区

前言 网络安全是当今社会中至关重要的议题。随着科技的迅猛发展&#xff0c;网络已经渗透到我们生活的方方面面&#xff0c;给我们带来了巨大的便利和机遇。然而&#xff0c;网络也存在着各种风险和威胁&#xff0c;如黑客攻击、数据泄露等。因此&#xff0c;学习网络安全知识…

给你一个项目,你将如何开展性能测试工作?

一、性能三连问 1、何时进行性能测试&#xff1f; 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的&#xff0c;在功能还不够完备的情况下没有多大的意义。因为后期功能完善上会对系统的性能有影响&#xff0c;过早进入性能测试会出现测试结果不准确、浪费测试资…

一文学会redis在springBoot中的使用

“收藏从未停止&#xff0c;练习从未开始”&#xff0c;或许有那么一些好题好方法&#xff0c;在被你选中收藏后却遗忘在收藏夹里积起了灰&#xff1f;今天请务必打开你沉甸甸的收藏重新回顾&#xff0c;分享一下那些曾让你拍案叫绝的好东西吧&#xff01; 一、什么是redis缓存…

万年历【小游戏】(Java课设)

系统类型 Java实现的小游戏 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Idea或eclipse 运行效果 更多Java课设系统源码地址&#xff1a;更多Java课设系统源码地址 更多Java小游戏运行效果展示&#xff1a;更多Java小游戏运行效果展…

JavaScript学习 -- 对称加密算法DES

在现代的互联网时代&#xff0c;数据安全性备受关注。为了保护敏感数据的机密性&#xff0c;对称加密算法是一种常用的方法。在JavaScript中&#xff0c;DES&#xff08;Data Encryption Standard&#xff09;是一种常用的对称加密算法。本篇博客将为您展示如何在JavaScript中使…

Unity 四元素

//-------------旋转------------ // //设置角度 (超过90或负数时&#xff0c;会设置-1结果是359这样的问题&#xff0c;可以使用下面旋转的方式) transform.rotate new Quaternion(0,0,0,0);//Quaternion四元数 transform.localEulerAngles new Vector3(0,0,0);//EulerA…

企业电子招投标采购系统源码之-java spring cloud+spring boot

​ 信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…

Restful的详细介绍~

RESTFUL简介&#xff1a; Restful是我们看待服务器的一种方式&#xff0c;我们都知道Java一切皆对象&#xff0c;因此在Java中&#xff0c;我们可以将所有的内容都看成对象&#xff0c;而在这里&#xff0c;RESTFUL是我们看待服务器的一种方式&#xff0c;我们可将服务器中的所…

idea中设置maven本地仓库和自动下载依赖jar包

1.下载maven 地址&#xff1a;maven3.6.3 解压缩在D:\apache-maven-3.6.3-bin\apache-maven-3.6.3\目录下新建文件夹repository打开apache-maven-3.6.3-bin\apache-maven-3.6.3\conf文件中的settings.xml编辑&#xff1a;新增本地仓库路径 <localRepository>D:\apache-…

ChatGPT与高等教育变革:价值、影响及未来发展

最近一段时间&#xff0c;ChatGPT吸引了社会各界的目光&#xff0c;它可以撰写会议通知、新闻稿、新年贺信&#xff0c;还可以作诗、写文章&#xff0c;甚至可以撰写学术论文。比尔盖茨、马斯克等知名人物纷纷为此发声&#xff0c;谷歌、百度等知名企业纷纷宣布要提供类似产品。…

WIZnet W5100S-EVB-Pico DHCP 配置教程(三)

DHCP协议介绍 什么是DHCP&#xff1f; 动态主机配置协议DHCP&#xff08;Dynamic Host Configuration Protocol&#xff09;是一种网络管理协议&#xff0c;用于集中对用户IP地址进行动态管理和配置。 DHCP于1993年10月成为标准协议&#xff0c;其前身是BOOTP协议。DHCP协议由…

ceph集群中RBD的性能测试、性能调优

文章目录 rados benchrbd bench-write测试工具Fio测试ceph rbd块设备的iops性能测试ceph rbd块设备的带宽测试ceph rbd块设备的延迟 性能调优 rados bench 参考&#xff1a;https://blog.csdn.net/Micha_Lu/article/details/126490260 rados bench为ceph自带的基准测试工具&am…

常见网关对比

常见网关对比 目前常见的开源网关大致上按照语言分类有如下几类&#xff1a; Nginxlua &#xff1a;OpenResty、Kong、Orange、Abtesting gateway 等 Java &#xff1a;Zuul/Zuul2、Spring Cloud Gateway、Kaazing KWG、gravitee、Dromara soul 等 Go &#xff1a;Janus、fa…