【MySQL】DQL-查询语句全解 [ 基础/条件/分组/排序/分页查询 ](附带代码演示&案例练习)

前言

大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C++ Linux的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

  • YY的《C++》专栏
  • YY的《C++11》专栏
  • YY的《Linux》专栏
  • YY的《数据结构》专栏
  • YY的《C语言基础》专栏
  • YY的《初学者易错点》专栏
  • YY的《小小知识点》专栏
  • YY的《单片机期末速过》专栏
  • YY的《C++期末速过》专栏
  • YY的《单片机》专栏
  • YY的《STM32》专栏
  • YY的《数据库》专栏
  • YY的《数据库原理》专栏

目录

  • DQL基本介绍&语法&执行顺序&验证执行顺序实验
  • 案例演示准备工作-表准备(必看!!!)
  • 一.DQL-基础查询
    • 语句总览&注意事项&可cv例题语句
    • 1.查询多个字段 / 所有字段
    • 2.查询多个字段并设置别名
    • 3.查询多个字段并去重
  • 二.DQL-条件查询
    • 语法&条件种类&可cv例题语句
  • 三.DQL-聚合函数
    • 介绍&常见聚合函数&语法&注意事项&可cv例题语句
  • 四.DQL-分组查询
    • 语法&where与having的区别&注意事项&可cv例题语句
  • 五.DQL-排序查询
    • 语法&排序方式&注意事项&可cv例题语句
  • 六.DQL-分页查询
    • 语法&注意事项&可cv例题语句
  • 七.DQL-案例练习
    • 按照需求完成如下DQL语句编写
    • DQL-执行顺序

DQL基本介绍&语法&执行顺序&验证执行顺序实验

  • DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来 查询 数据库中表的记录。
  • 查询关键字: SELECT
  • DQL-语法
    在这里插入图片描述
    在这里插入图片描述
  • DQL-执行顺序
    在这里插入图片描述

验证执行顺序实验:

  • 执行成功
    在这里插入图片描述
  • 执行失败
    在这里插入图片描述
  • 如图所示: select语句是在where之后执行的,即where不能用select中声明的别名
    在这里插入图片描述
  • 而order by 即可用select中的别名
    在这里插入图片描述

案例演示准备工作-表准备(必看!!!)

  • 如下所示创建表,并批量插入数据
  • 批量插入数据见DML语句操作(下方有传送门)
  • 【MySQL】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
    在这里插入图片描述
create table emp(

     id int comment  '编号 ',
     workno varchar(10) comment  '工号 ',
     name varchar(10) comment  '姓名 ',
     gender char(1) comment '性别' ,
     age tinyint unsigned comment '年龄',
     idcard char(18) comment‘身份证号’,
     entrydate date comment ‘入职时间’

)comment '员工表';

一.DQL-基础查询

语句总览&注意事项&可cv例题语句

  • 如下所示:
    在这里插入图片描述
-- 1.查询指定字段 name,workno,age 返回
select nane,workno,age from emp;

--2.查询所有字段 返回
select id, workno, name, gender, age, idcard,workaddress, entrydate from emp;
select * from 表名;//实际开发中尽量别写*效率低且不直观

--3.查询所有员工的工作地址,起别名
select workaddress as'工作地址'from emp;
select workaddress '工作地址'from emp; //as可以省略

--4.查询公司员工的上班地址(不要重复)
select distinct workaddress‘工作地址'from emp;

1.查询多个字段 / 所有字段

SELECT 字段1,字段2,字段3..FROM 表名;
SELECT*FROM 表名;//实际开发中尽量别写*效率低且不直观
  • 效果如下所示
    在这里插入图片描述
    在这里插入图片描述
-- 1.查询指定字段 name,workno,age 返回
select nane,workno,age from emp;

--2.查询所有字段 返回
select id, workno, name, gender, age, idcard,workaddress, entrydate from emp;
select * from 表名;//实际开发中尽量别写*效率低且不直观

2.查询多个字段并设置别名

SELECT 字段1[AS 别名1],字段2[AS 别名2]…FROM 表名;
  • 效果如下所示
    在这里插入图片描述
--3.查询所有员工的工作地址,起别名
select workaddress as'工作地址'from emp;
select workaddress '工作地址'from emp; //as可以省略

3.查询多个字段并去重

SELECT DISTINCT 字段列表FROM 表名;
  • 效果如下所示
    在这里插入图片描述
--4.查询公司员工的上班地址(不要重复)
select distinct workaddress‘工作地址'from emp;

二.DQL-条件查询

语法&条件种类&可cv例题语句

  • 如下所示:
    在这里插入图片描述
--1.查询年龄等于88的员工
select * from emp where age = 88;

--2.查询年龄小于20的员工信息
select * from emp where age < 20;

--3.查询年龄小于等于20的员工信息
select * from emp where age <= 20;

--4.查询没有身份证号的员工信息
select * from emp where idcard is null;

--5.查询有身份证号的员工信息
select * from emp where idcard is not null;

--6.查询年龄不等于88的员工信息
select * from emp where age != 88;
select * from emp where age <> 88;

--7.查询年龄在15(包含)到20岁(包含)之间的员工信息
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;

--8.查询性别为女且年龄小于25岁的员工信息
select * from emp where gender ='女'and age < 25;

--9.查询年龄等于182040的员工信息
select * from emp where age = 18 or age = 20 or age =40;
select * from emp where age in(18,20,40);

--10.查询姓名为两个字的员工信息_%
select * from emp where name like '__';

--11.查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%x';
select * from emp where idcard like '_________________x';//_的数目是身份证数-1

三.DQL-聚合函数

介绍&常见聚合函数&语法&注意事项&可cv例题语句

介绍:

  • 将一列数据作为一个整体,进行纵向计算
  • 常见聚合函数,如下所示:
    在这里插入图片描述

语法:
在这里插入图片描述

注意事项:

  • NULL值不参与所有聚合函数计算
--1.统计该企业员工的员工个数
select count(idcard) 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 ='西安';

四.DQL-分组查询

语法&where与having的区别&注意事项&可cv例题语句

  • 如下所示:
    在这里插入图片描述

where与having区别:

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

注意事项:

  • 执行顺序: where>聚合函数>having
  • 分组之后,查询的字段一般为 聚合函数和分组函数 ,查询其他字段无任何意义
--根据性别分组
--1.统计男性员工和女性员工的数量
select gender,count(*) from emp group by gender;

--2.根据性别分组,统计男性员工和女性员工的平均年龄
select gender, avg(age) from emp group by gender;

--3.查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress, count(*) from emp where age45 group by workaddress having count(*) >= 3;

-- 取别名后进行分组后的过滤
select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;

五.DQL-排序查询

语法&排序方式&注意事项&可cv例题语句

  • 语法&排序方式如下所示:
    在这里插入图片描述

注意事项:

  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
--1.根据年龄对公司的员工进行升序排序
select * from emp order by age asc;

-- 默认是升序
select * from emp order by age;

--2.根据年龄对公司的员工进行降序排序
select * fron emp order by age desc;

--3.根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
--(如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序)
select * fron emp order by age asc , entrydate desc;

六.DQL-分页查询

语法&注意事项&可cv例题语句

  • 语法如下所示:
    在这里插入图片描述

注意事项:

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

(如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10)
select * from emp limit 10;

--2.查询第2页员工数据,每页展示10条记录(页码-1*页展示记录数
select * from emp limit 10,10;

七.DQL-案例练习

按照需求完成如下DQL语句编写

  • 1.查询年龄为20,21,22,23岁的员工信息。
  • 2.查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工。
  • 3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数。
  • 4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
  • 5.查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
--1.查询年龄为20,212223岁的女性员工信息
select * from emp where gender ='女' and age in(20,21,22,23);

--2.查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工
select *from emp where gender ='男'and(age between 20 and 40)and name like '___';

--3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数
select gender, count(*) from emp where age < 60 group by gender;

--4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select name , age from emp where age <= 35 order by age, entrydate desc;

--5.查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序
select * from emp where gender ='男'and age between 20 and 40 order by age asc, entrydate asc limit 5;

DQL-执行顺序

  • DQL-执行顺序
    在这里插入图片描述

验证执行顺序实验:

  • 执行成功
    在这里插入图片描述
  • 执行失败
    在这里插入图片描述
  • 如图所示: select语句是在where之后执行的,即where不能用select中声明的别名
    在这里插入图片描述
  • 而order by 即可用select中的别名
    在这里插入图片描述

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

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

相关文章

瑞吉外卖实战学习--8、人员禁用和启用

前言 1、通过前端页面查看接口 会发现请求方式是put 请求接口是employee 2、检查页面传值 根据浏览器的请求可以看到传值为id和status 2、写put请求&#xff0c;添加修改时间和修改人的id然后传回给后台 /*** 启用和禁用员工账号* param request* param employee* return…

为何有时坚持很苦,而有时坚持很酷

坚持很苦 大部分情况下是被动的&#xff0c;被迫的&#xff0c;坚持去做的事情并不是自己发自内心的。 比如一部分学生考研或者读书&#xff0c;都是随大流盲从而已&#xff0c;自己想做啥都不清楚。 坚持很酷 追求自己的理想是这个蓝色星球上最酷炫的事情啦&#xff0c;没有…

二维码门楼牌管理应用平台建设:实现智能化与人性化的数据治理

文章目录 前言一、二维码门楼牌管理应用平台的建设背景二、人工数据审核的重要性三、地址匹配校验的实现四、人工修正的流程与机制五、人工数据审核的挑战与对策六、展望未来 前言 在数字化时代的浪潮下&#xff0c;二维码门楼牌管理应用平台的建设成为了城市管理的新宠。本文…

【嵌入式智能产品开发实战】(七)—— 政安晨:通过ARM-Linux掌握基本技能【环境准备:树莓派】

目录 Raspberry Pi OS 下载系统镜像 使用SSH客户端登陆 升级更新 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 嵌入式智能产品开发实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正…

详解Linux进程

进程 1.什么是进程2.创建进程2.1进程标识符2.2初时fork&#xff08;&#xff09;函数&#xff0c;创建进程 3.进程状态3.1进程状态的描述3.2Linux中具体的进程状态 4 僵尸状态5 孤儿进程6进程优先级 1.什么是进程 进程在我们的电脑和手机上是无处不在的。例如我们windows系统下…

基于SpringBoot+Vue前后端分离的停车场管理系统设计与实现+毕业论文(12000字)

介绍 本系统主要包含普通用户与管理员两个用户角色&#xff1a;普通用户功能模块&#xff1a;可以方便地对车位进行查询&#xff0c;车位申请和个人缴费。 管理员功能模块: 管理系统用户&#xff0c;停车位&#xff0c;用户缴费信息管理&#xff0c;登录日志管理。 普通用户…

白色微立体的智能界面,就喜欢这种简洁白净。

本次发一些微立体风格的智能家居界面&#xff0c;风格为微立体&#xff0c;也叫轻拟物风格&#xff0c;或者新拟态风格。

25Ramdisk 启动模式简介

Ramdisk 启动模式简介 ramdisk是一种虚拟磁盘技术,我们的PE系统几乎都是使用ramdisk方式从计算机启动的.那么,ramdisk有哪些特点呢? Ramdisk 将内存虚拟为一个磁盘 Ramdisk技术会将你的一部分内存虚拟成一块磁盘分区.使用U盘启动pe系统时,打开pe系统里的文件资源管理器,你会看…

(文章复现)考虑分布式电源不确定性的配电网鲁棒动态重构

参考文献&#xff1a; [1]徐俊俊,吴在军,周力,等.考虑分布式电源不确定性的配电网鲁棒动态重构[J].中国电机工程学报,2018,38(16):4715-47254976. 1.摘要 间歇性分布式电源并网使得配电网网络重构过程需要考虑更多的不确定因素。在利用仿射数对分布式电源出力的不确定性进行合…

云防护是怎么能帮助用户做好网络安全

在数字化时代&#xff0c;网络安全威胁呈现出愈发复杂和多样化的趋势。 无论是个人用户、小型企业还是大型企业&#xff0c;都面临着来自全球各地的网络攻击风险。这些攻击可能导致数据泄露、服务中断、财务损失甚至声誉受损。因此&#xff0c;采取有效的安全防护措施变得至关…

数据处理的两个基本问题

文章目录 数据处理的两个基本问题bx、si、di、bp机器指令处理的数据所在位置汇编语言中数据位置的表达寻址方式指令要处理的数据有多长&#xff1f;div 指令伪指令 dddup 数据处理的两个基本问题 我们知道&#xff0c;计算机是进行数据处理、运算的机器&#xff0c;那么有两个基…

基于Tampermonkey 实现自动答题和视频播放

目录 一、环境准备 二、下载Tampermonkey 三、安装脚本 四、启用脚本 一、环境准备 微软自带的 edge 浏览器(电脑端) 二、下载Tampermonkey 安装地址&#xff1a;Tampermonkey 篡改猴(油猴脚本) 下载完成会在浏览器拓展中自动生成一个插件&#xff0c;此时点击管理拓展&…

linux 内核模块入门

内核模块可以动态地被安装到内核&#xff0c;从而扩展内核的功能&#xff0c;使用内核模块时不需要重新编译内核。内核模块常用的场景是驱动&#xff0c;随着芯片种类的增加&#xff0c;硬件种类的增加&#xff0c;这些芯片或者硬件(比如网卡) 的驱动可以以模块的方式进行开发&…

ONT60 旋转链表 思路分享

题干链接&#xff1a;ONT60 旋转链表 ​ 这道题是反转链表题的pro升级版&#xff0c;但比反转链表略微复杂一些。如果有做过旋转数组那道题&#xff08;链接在这里&#xff1a;https://blog.csdn.net/wyd_333/article/details/126712919&#xff0c;但当时刷这道题的时候我用的…

Linux|centos7-postgresql数据库|yum安装数据库和配置repmgr高可用集群以及repmgr的日常管理工作

一、 前言 postgresql 的yum部署其实还是有点东西的&#xff0c;本文就做一个小小的记录&#xff0c;高可用方面repmgr插件还是非常不错的&#xff0c;但如何部署以及部署后如何使用也是一个难点&#xff0c;因此&#xff0c;也在本文里做一个记录 环境介绍&#xff1a; 第…

【Redis教程0x0A】详解Redis哨兵机制

1. 引言 Redis的哨兵机制是基于主从架构的。 在 Redis 的主从架构中&#xff0c;由于主从模式是读写分离的&#xff0c;如果主节点&#xff08;master&#xff09;挂了&#xff0c;那么将没有主节点来服务客户端的写操作请求&#xff0c;也没有主节点给从节点&#xff08;slav…

java: 错误: 无效的源发行版:17

目录 一、java: 错误: 无效的源发行版&#xff1a;17 报错 原因 解决方法 二、pring-boot-starter-parent下面的版本报红 原因 解决方案 一、java: 错误: 无效的源发行版&#xff1a;17 报错 创建了一个sprintboot项目&#xff0c;运行CommunityApplication时&#xf…

小白从0学习ctf(web安全)

文章目录 前言一、baby lfi&#xff08;bugku-CTF&#xff09;1、简介2、解题思路1、解题前置知识点2、漏洞利用 二、baby lfi 2&#xff08;bugku-CTF&#xff09;1.解题思路1、漏洞利用 三、lfi&#xff08;bugku CTF&#xff09;1、解题思路1、漏洞利用 总结 前言 此文章是…

动态规划刷题(算法竞赛、蓝桥杯)--合唱队形(线性DP)

1、题目链接&#xff1a;[NOIP2004 提高组] 合唱队形 - 洛谷 #include <bits/stdc.h> using namespace std; int n,ans; int a[105],f[105][2];//f[i][2]中2表示正反两个方向int main(){cin>>n;for(int i1;i<n;i){cin>>a[i];}//正方向求最长上升子序列 a[…

HWOD:字符的排序

一、知识点 char的最大值是127&#xff0c;最小值是-128 自己填充的char型数组&#xff0c;以字符串打印&#xff0c;打印之前要手动在末尾加上 \0 二、题目 1、描述 Lily上课时使用字母数字图片教小朋友们学习英语单词&#xff0c;每次都需要把这些图片按照大小&#x…