MySQL数据库——SQL(3)-DQL(基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询、案例练习)

目录

语法

基本查询

1.查询多个字段

2.设置别名

3.去除重复记录

示例

条件查询

1.语法

2.条件

示例

聚合函数 

介绍

常见聚合函数

语法

示例

分组查询

语法

示例

排序查询

1.语法

2.排序方式

示例

分页查询

语法

示例

DQL案例练习

执行顺序

DQL总结


DQL

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。

查询关键字:SELECT 

语法

SELECT字段列表
FROM表名列表
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后条件列表
ORDER BY排序字段列表
LIMIT分页参数;
  • 基本查询
  • 条件查询(WHERE)
  • 聚合函数(count、max、min、avg、sum)
  • 分组查询(GROUP BY)
  • 排序查询(ORDER BY)
  • 分页查询(LIMIT)

基本查询

1.查询多个字段

SELECT 字段1,字段2,字段3... FROM 表名;--查询所有字段,在调试时可以使用通配符:* 
SELECT * FROM 表名;

实际编写SQL时不建议使用*,效率低、可视化程度低。

2.设置别名

SELECT 字段1 [AS 别名1], 字段2 [AS 别名2] ... FROM 表名;

编写时,AS可省略。

3.去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

示例

我们先创建一个类似结构的表格emp

1.查询指定字段 name,workno,age 返回

2.查询所有字段返回

select id,workno,name,gender,age,idcard,workaddress,entrydate from emp;-- select * from emp;

3.查询所有员工的工作地址,并起别名 

4.查询公司员工的工作地址(去重)

  

条件查询

1.语法

SELECT 字段列表 FROM 表名 WHERE 条件列表;

2.条件

比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
BETWEEN...ADN...在某个范围之内(含最小、最大值)
IN(...)在in之后的列表中的值,多选一
LIKE 占位符模糊匹配 (‘_’匹配单个字符,‘%’匹配任意个字符)
IS NULL判断是否为空
逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 ||或者(多个条件任意一个成立)
NOT 或 !非,不是

示例

-- 1.查询年龄等于88的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where age = 88;-- 2.查询年龄小于20的员工信息
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where age < 20;-- 3.查询年龄小于等于20的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where age <= 20;-- 4.查询没有身份证号的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where idcard is null;-- 5.查询有身份证号的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where idcard is not null;
-- 6.查询年龄不等于88的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where age != 88;-- 或
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where age <> 88;-- 7.查询年龄在15岁(包含)到20岁(包含)之间的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where age >= 15 && /*AND*/ age <= 20;-- 或
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where age between 15 and 20; -- 注意15和20的位置不要写反-- 8.查询性别为女且年龄小于25岁的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where gender = '女' and age < 25;-- 9.查询年龄等于16 或20 或40 的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where age=16 || age=20 || age=40;-- 或
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where age in(16,20,40);
-- 10.查询姓名为两个字的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where name like('__');-- 11.查询身份证号最后一位是X的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where idcard like('%X');-- 或
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where idcard like('________________X');-- 查询名字中间带有’小‘的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where name like('_小_'); -- 也可以用_小%,但不可以用%小%-- 查询李氏的员工
select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where name like('李%');

聚合函数 

介绍

将一列数据作为一个整体,进行纵向计算。

常见聚合函数

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

语法

SELECT 聚合函数(字段列表) FROM 表名;

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

示例

-- 1.统计该企业员工数量
select count(id) from emp;-- 2.统计该企业员工的平均年龄
select avg(age) from emp;-- 3.统计该企业员工的最大年龄
select max(age) from emp;-- 4.统计该企业员工的最小年龄
select min(age) from emp;-- 5.统计西安地区员工的年龄之和
select sum(age) from emp where workaddress = '西安';

分组查询

语法

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];

where与having的区别

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

注意:

  • 执行顺序:where > 聚合函数 > having
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

示例



分组前过滤(where)+分组后过滤 (having):

 

排序查询

1.语法

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段1 排序方式2;

2.排序方式

  • ASC:升序(默认值)
  • DESC:降序

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

示例

1.根据年龄对公司员工进行升序排序

2.根据入职时间,对员工进行降序排序

 3.根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序

分页查询

语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

 注意:

  • 起始索引从0开始,起始索引= (查询页码-1)*每页显示记录数
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10

示例

1.查询第1页员工数据,每页展示10条记录

2.查询第2页员工数据,每页展示10条记录

DQL案例练习

1.查询年龄为18,20,21,22,23岁的女性员工信息

select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where gender = '女' and age in(18,20,21,22,23);

运行结果:

 2.查询性别为男,并且年龄在20-48岁(含)以内的姓名为三个字的员工

select id,workno,name,gender,age,idcard,workaddress,entrydatefrom emp where gender = '男' and age between 20 and 40 and name like('___');

运行结果:

3.统计员工表中,年龄小于60岁的男性员工和女性员工的人数

select gender,count(id) from emp where age < 60 group by gender;

运行结果:

4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序

select name,age from emp where age <= 35 order by age asc,entrydate desc;

 运行结果:

5.查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序

select * from empwhere gender = '男' and age between 20 and 40order by age asc,entrydate asclimit 5;

运行结果:

执行顺序

编写顺序为:

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

而执行顺序为: 

即, 

FROM表名列表
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后条件列表
SELECT字段列表
ORDER BY排序字段列表
LIMIT分页参数
-- 执行顺序

DQL总结


end


学习自:黑马程序员——MySQL数据库课程

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

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

相关文章

简单理解Linux中的一切皆文件

一款操作系统要管理各种各样不同的硬件&#xff0c;因为硬件的不同所以它们使用的文件系统也不同。但是按道理来说&#xff0c;文件系统的不同对于用户来说可不是一件好事&#xff0c;操作不同的硬件就要使用不同的方法。 但是Linux有一切皆文件。 简单来说&#xff0c;Linux…

基于单片机DHT11温湿度NRF2401无线通信控制系统

一、系统方案 本设计采用STC89C5单片机作为主控制器&#xff0c;从机采用DHT11传感器采集温湿度、按键设置报警阀值&#xff0c;液晶1602显示&#xff0c;蜂鸣器报警&#xff0c;无线NRF2401模块。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统…

使用 umap 图形化展示原文在嵌入后的位置情况

使用 umap_plot 图形化展示原文在嵌入后的位置情况 1. 效果展示2. 工具函数3. 示例代码14. 示例代码2 1. 效果展示 2. 工具函数 import umap import altair as altfrom numba.core.errors import NumbaDeprecationWarning, NumbaPendingDeprecationWarning import warningswar…

G0第26章:微服务概述与gRPCprotocol buffers

Go微服务与云原生 1、微服务架构介绍 单体架构&#xff08;电商&#xff09; SOA架构&#xff08;电商&#xff09; 微服务架构&#xff08;电商&#xff09; 优势 挑战 拆分 发展史 第一代:基于RPC的传统服务架构 第二代:Service Mesh(istio) 微服务架构分层 核心组件 Summar…

【GaussDB】 SQL 篇

建表语句 表的分类 普通的建表语句 复制表内容 只复制表结构 create table 新表名(like 源表名 including all); 如果希望注释被复制的话要指定including comments 复制索引、主键约束和唯一约束&#xff0c;那么需要指定including indexes including constraints &#xf…

MsrayPlus多功能搜索引擎采集软件

MsrayPlus多功能搜索引擎采集软件 摘要&#xff1a; 本文介绍了一款多功能搜索引擎软件-MsrayPlus&#xff0c;该软件能够根据关键词从搜索引擎中检索相关数据&#xff0c;并提供搜索引擎任务、爬虫引擎任务和联系信息采集三大功能。我们将分析该软件在不同领域的应用&#xf…

VBA技术资料MF43:VBA_Excel中自动填充

【分享成果&#xff0c;随喜正能量】以时寝息&#xff0c;当愿众生&#xff0c;身得安隐&#xff0c;心无动乱。愿我们都能&#xff0c;梦见幸福&#xff01;在踉跄中前进&#xff0c;在跌倒后跃进&#xff0c;逐渐强大.。 我给VBA的定义&#xff1a;VBA是个人小型自动化处理的…

使用Jmeter自带recorder代理服务器录制接口脚本

脚本录制 配置线程组 添加代理服务器 端口 和 录制脚本放置位置可根据需要设置 启动录制 点击启动后 弹出创建证书提示&#xff0c;点击OK 这个证书后续需要使用到 然后可见 一个弹窗。 Recorder . 本质是代理服务录制交易控制 可设置对应数据 方便录制脚本的查看 证书配置…

jenkins一键部署github项目

个人目前理解jenkins部署分为两步&#xff1a; 构建项目&#xff0c;如生成jar自动执行sh脚本 如果没有jenkins&#xff0c;我们可能需要将jar移动到服务器&#xff0c;然后执行java -jar跑程序&#xff0c;jenkins可以替代我们执行这些东西&#xff0c;下面从0开始&#xff0…

前端 -- 基础 网页、HTML、 WEB标准 扫盲详解

什么是网页 : 网页是构成网站的基本元素&#xff0c;它通常由 图片、链接、文字、声音、视频等元素组成。 通常我们看到的网页 &#xff0c;常见以 .html 或 .htm 后缀结尾的文件&#xff0c; 因此俗称 HTML 文件 什么是 HTML : HTML 指的是 超文本标记语言&#xff0c…

Python入门--变量和数据类型

什么是变量&#xff1f; 在编程中&#xff0c;变量是指内存中的一段存储空间&#xff0c;用于存储数据。使用变量可以方便地存储数据并在程序中进行操作。 如何定义变量&#xff1f; 在Python中&#xff0c;可以使用“”符号来定义变量&#xff0c;例如&#xff1a; a 1 b …

基于IMX6ULLmini的linux裸机开发系列七:中断处理流程

中断上下文 cpu通过内核寄存器来运行指令并进行数据的读写处理的&#xff0c;它在进入中断前一个时刻的具体值&#xff0c;称为中断上下文 中断上下文是指CPU在进入中断之前保存的寄存器状态和其他相关信息。当CPU接收到中断请求时&#xff0c;它会保存当前正在执行的指令的状…

[python爬虫] 爬取图片无法打开或已损坏的简单探讨

本文主要针对python使用urlretrieve或urlopen下载百度、搜狗、googto&#xff08;谷歌镜像&#xff09;等图片时&#xff0c;出现"无法打开图片或已损坏"的问题&#xff0c;作者对它进行简单的探讨。同时&#xff0c;作者将进一步帮你巩固selenium自动化操作和urllib…

sklearn机器学习库(二)sklearn中的随机森林

sklearn机器学习库(二)sklearn中的随机森林 集成算法会考虑多个评估器的建模结果&#xff0c;汇总之后得到一个综合的结果&#xff0c;以此来获取比单个模型更好的回归或分类表现。 多个模型集成成为的模型叫做集成评估器&#xff08;ensemble estimator&#xff09;&#xf…

CloudCompare——统计滤波

目录 1.统计滤波2.软件实现3.完整操作4.算法源码5.相关代码 本文由CSDN点云侠原创&#xff0c;CloudCompare——统计滤波&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫。 1.统计滤波 算法原理见&#xff1a;PCL 统计滤波器…

基于IMX6ULLmini的linux裸机开发系列八:按键处理实验

目录 GIC相关寄存器 GPIO中断相关寄存器 中断服务函数表 中断向量表偏移位置 make有报错 解决方法&#xff1a;error: for loop initial declarations are only allowed in C99 mode_‘for’ loop initial declarations are only allowed i_Young_2717的博客-CSDN博客 GIC…

智慧工地一体化云平台源码:监管端、工地端、危大工程、智慧大屏、物联网、塔机、吊钩、升降机

智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合&#xff0c;为工程项目管理提供先进技术手段&#xff0c;构建工地现场智能监控和控制体系&#xff0c;弥补传统方法在监管中的缺陷&#xff0c;最终实现项目对人、机、料、法、环的全…

linux RabbitMQ-3.8.5 安装

软件版本操作系统CentOS Linux release 7.9.2009erlangerlang-23.0.2-1.el7.x86_64rabbitMQrabbitmq-server-3.8.5-1.el7 RabbitMQ的安装首先需要安装Erlang,因为它是基于Erlang的VM运行的。 RabbitMQ安装需要依赖:socat和logrotate&#xff0c;logrotate操作系统已经存在了&…

【Redis】什么是缓存穿透,如何预防缓存穿透?

【Redis】什么是缓存穿透&#xff0c;如何预防缓存穿透&#xff1f; 缓存穿透是指查询一个一定不存在的数据&#xff0c;由于缓存中不存在&#xff0c;这时会去数据库查询查不到数据则不写入缓存&#xff0c;这将导致这个不存在的数据每次请求都要到数据库去查询&#xff0c;这…

Redis中常见的缓存穿透、缓存击穿、缓存雪崩、缓存预热解决方案

文章目录 一、缓存穿透1. 什么是缓存穿透2. 解决方案2.1 无效的key存放到Redis2.2 引入布隆过滤器2.3 如何选择&#xff1a; 二、缓存击穿1. 什么是缓存击穿2. 解决方案 三、缓存雪崩1. 什么是缓存雪崩2. 解决方案2.1 均匀过期2.2 热点数据缓存永远不过期2.3 采取限流降级的策略…