DQL(数据查询)

目录

1. DQL概念

2. DQL - 编写顺序

3. 基础查询

3.1 查询多个字段

3.2 字段设置别名

3.3 去除重复记录

3.4 案例

4. 条件查询 

4.1 语法

4.2 条件

4.3 案例:

5. 聚合函数

5.1 常见的聚合函数:

5.2 语法

5.3 案例:

6. 分组查询

6.1 语法

6.2 案例

7. 排序查询

7.1 语法

7.2 排序方式

7.3 案例 

8. 分页查询

8.1 语法

8.2 案例

9. 执行顺序

1. DQL概念

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

查询关键字: select

在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站,在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能还会涉及到条件、排序、分页等操作。

2. DQL - 编写顺序

  1. select  字段列表

  2. from   表名列表

  3. where  条件列表

  4. group BY  分组字段列表

  5. having  分组后条件列表

  6. order BY  排序字段列表

  7. limit  分页参数

3. 基础查询

在基本查询的DQL语句中,不带任何的查询条件,查询的语法如下:

3.1 查询多个字段
  • select  字段1, 字段2, 字段3 ... from 表名 ;
  • select  * from 表名 ;

注意 : * 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。

3.2 字段设置别名
  • select  字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] ... from 表名;
  • select  字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... from 表名;
3.3 去除重复记录

select  distinct 字段列表 from 表名;

3.4 案例
-- ------------------------------------------------------------------基础查询
# 查询name, workno, age
select name, workno, age from emp;

# 查询所有数据
select * from emp;

# 将ID=3的名字修改为张飞
update emp set name = '张飞' where id = 3;

# 查询workaddress
select workaddress from emp;

# 修改别名
select workaddress as '工作地址' from emp;
select workaddress '工作地址' from emp;

# 去重
select distinct workaddress '工作地址' from emp;

# 修改表中wordaddress为workaddress
alter table emp change wordaddress workaddress varchar(50) comment '工作地址';

4. 条件查询 

4.1 语法

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

4.2 条件

常用的比较运算符如下:

比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
between... and...在某个范围之内(含最小、最大值)
in(...)在in之后的列表中的值,多选一
like占位符模糊匹配(_匹配单个字符, %匹配任意个字符)
is NULL是NULL

常用的逻辑运算符如下:

逻辑运算符功能
and 或 &&并且 (多个条件同时成立)
or 或 ||或者 (多个条件任意一个成立)
not 或 !非 , 不是
4.3 案例:
-- ------------------------------------------------------------------条件查询
# 查询年龄不等于18
select * from emp where age != 18;
select * from emp where age <> 18;

# 查询年龄小于40
select * from emp where age <= 40;

# 查询idcard不空值的数据
select * from emp where idcard is not null;

# 查询idcard是空值的数据
select * from emp where idcard is null;

# 设置16行idcard为空值
update emp set idcard = null where id = 16;
update emp set idcard = '12345678998765432x' where id = 13;

# 查询年龄在30到50之间
select * from emp where age >= 30 && age <= 50;
select * from emp where age >= 30 and age <= 50;
select * from emp where age between 30 and 50;

# between接最小值,and接最大值
select * from emp where age between 50 and 30;

# 查询性别女,且在蜀国的数据
select * from emp where gender = '女' and workaddress = '蜀国';

# 查询年龄等于18或等于30或等于40
select * from emp where age = 18 or age = 30 or age = 40;
select * from emp where age in(18, 30, 40);

# 查询名字为三个字的名字
select * from emp where name  like '___';

# 查找idcard的最后一位为x
select * from emp where idcard  like '%X';

5. 聚合函数

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

5.1 常见的聚合函数:
函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和
5.2 语法

select  聚合函数(字段列表)  from 表名 ;

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

5.3 案例:
-- ------------------------------------------------------------------聚合函数
# 统计所有数量
select count(*) from emp;
select count(id)  from emp;

# 统计所有人平均年龄
select avg(age) from emp;

# 统计最大年龄
select max(age) from emp;

# 统计最小年龄
select min(age) from emp;

# 统计蜀国将领人员的年龄之和
select sum(age) from emp where workaddress = '蜀国';

6. 分组查询

6.1 语法

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

where与having区别:

执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

判断条件不同:where不能对聚合函数进行判断,而having可以。

6.2 案例
-- ------------------------------------------------------------------分组查询
# 根据性别分组,统计男性和女性的分组
select gender, count(*) from emp group by gender;

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

# 查询年龄小于45的人员数量,并且根据工作地址分组,获取人员数量大于等于3的工作地址
select workaddress, count(*) from emp where age < 45 group by workaddress having count(*) >= 3;
# 起别名
select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;

注意事项:

  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
  • 执行顺序: where > 聚合函数 > having 。
  • 支持多字段分组, 具体语法为 : group by columnA,columnB

7. 排序查询

7.1 语法

select 字段列表 from 表名 order by 字段1 排序方式1 , 字段2 排序方式2 ;

7.2 排序方式
  1. ASC : 升序(默认值)
  2. DESC: 降序
7.3 案例 
-- ------------------------------------------------------------------排序查询
# 根据年龄升序排序
select * from emp order by age asc;
# asc可省略
select * from emp order by age;

# 根据年龄升序降序
select * from emp order by age desc;

# 修改入职时间
update emp set entrydate = '1990-02-03' where id = 4;
update emp set entrydate = '1993-12-03' where id = 6;
update emp set entrydate = '1993-05-03' where id = 8;
update emp set entrydate = '1909-02-03' where id = 11;

# 根据入职时间做降序排序
select * from emp order by entrydate desc;

# 根据年龄升序,年龄相同再按照入职时间降序排序
select * from emp order by age, entrydate desc;

注意事项:

  • 如果是升序, 可以不指定排序方式ASC ;
  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;

8. 分页查询

8.1 语法

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

8.2 案例
-- ------------------------------------------------------------------分页查询
# 查询第1页人员数据,根据展示5条记录
select * from emp limit 0, 5;
# 查询首页0可以省略
select * from emp limit 5;

# 查询第3页人员数据,根据展示5条记录(页码-1*页码展示记录数)
select * from emp limit 10,5;

注意事项:

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

9. 执行顺序

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

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

相关文章

台灯哪个牌子好?五款性价比高的照明品牌分享

在近几年&#xff0c;儿童长时间使用电子产品已成为普遍现象&#xff0c;这无疑增加了视觉负担。其次&#xff0c;现代教育体系下的学习任务之繁重&#xff0c;与80后、90后学生时代相比&#xff0c;有了显著的加重。而且&#xff0c;学习过程对数码设备的依赖性也大大增加&…

知识分享:大数据信用花导致的评分不足多久能恢复

随着金融风控领域越来越科技化&#xff0c;基于大数据技术的金融风控成为了贷前风控不可或缺的重要环节&#xff0c;相信很多人在申贷的时候都听说过大数据信用和综合评分等词语&#xff0c;那大数据信用花导致的评分不足多久能恢复呢?本文带大家一起去了解一下。 首先&#x…

PD协议:引领电子设备充电新时代

随着科技的飞速发展&#xff0c;电子设备已成为我们日常生活中不可或缺的一部分。然而&#xff0c;这些设备的充电问题一直困扰着广大用户。传统的充电方式不仅效率低下&#xff0c;而且存在着安全隐患。为了解决这一问题&#xff0c;USB Implementers Forum&#xff08;USB-IF…

机器学习-决策树算法

前言 本篇介绍决策树与随机森林的内容&#xff0c;先完成了决策树的部分。 决策树 决策树(Decision Tree)是一种有监督学习的方法&#xff0c;可以同时解决分类和回归问题&#xff0c;它能够从一系列有特征和标签的数据中总结出决策规则&#xff0c;并用树状图的结构来呈现这…

WPF中MVVM架构学习笔记

MVVM架构是一种基于数据驱动的软件开发架构&#xff0c;它将数据模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和视图模型&#xff08;ViewModel&#xff09;三者进行分离&#xff0c;使得开发者可以更加专注于各自领域的开发。其中&#xff0c;Model负…

系统架构师考试(十)

SaaS为在线客服 PaaS为二次开发&#xff0c;比如低代码平台 IaaS 硬件开发 B 是基础设施作为服务 软件架构的概念 架构风格 数据流风格 网络报文是在计算机网络中通过网络传输的数据单元&#xff0c;它是网络通信的基本单位。网络报文包含了发送方和接收方之间传输的数据&…

蛮力法0/1背包问题实验

实验项目1 蛮力法 实验题目 使用蛮力法解决0/1背包问题。 ​ 问题描述&#xff1a;给定n个重量(weight)为{w1, w2, … ,wn}、价值(key)为{v1, v2, … ,vn}的物品和一个**容量为C(contain)**的背包&#xff0c;求这些物品中的一个最有价值的子集&#xff0c;且要能够装到背包中…

第十三期Big Demo Day亮点项目:CCarbon重塑碳交易生态,助力全球绿色发展

第十三期Big Demo Day活动即将于2024年5月28日在香港数码港的CyberArena隆重举行。我们荣幸地宣布&#xff0c;利用区块链技术优化全球碳交易CCarbon项目将亮相&#xff0c;参与精彩的项目路演。本次活动由ZeeprLabs、BiKing Exchange、Gather冠名赞助&#xff0c;Central Rese…

【教学类-56-03】数感训练——数字03(寻找自己的学号数字,1号-31号,出现15-20次)

背景需求&#xff1a; 在实际操作中&#xff0c;孩子们把数字当做了自己的学好&#xff0c;这个提示老师可以给每位孩子做一份“学号数感训练 【教学类-56-02】数感训练——数字02&#xff08;控制指定数字出现的数量&#xff09;-CSDN博客文章浏览阅读341次&#xff0c;点赞…

【Linux学习】深入探索进程等待与进程退出码和退出信号

文章目录 退出码return退出 进程的等待进程等待的方法 退出码 main函数的返回值&#xff1a;进程的退出码。 一般为0表示成功&#xff0c;非0表示失败。 每一个非0退出码都表示一个失败的原因&#xff1b; echo $&#xff1f;命令 作用&#xff1a;查看进程退出码。&#xf…

学AI绘图【300集SD新课】--Stable Diffusion教程

学AI绘图需要以下步骤&#xff1a; 明确目标和需求&#xff1a;首先明确设计图的目的&#xff0c;是用于展示算法流程、模型结构还是其他目的。选择合适的工具&#xff1a;根据需求选择合适的绘图工具&#xff0c;如Visio、PowerPoint、Adobe Illustrator等。绘制草图&#xf…

jmeter之HTTP请求和查看结果树

一、HTTP请求作用&#xff1a; 可以发送post或get请求等请求可以向服务器发送参数或消息体数据可以进行文件上传 HTTP请求&#xff1a;是线程组内的取样器最常用的的一个原件 二、查看界面 添加一个HTTP请求&#xff1a;选择线程组–添加–取样器–HTTP请求 默认界面 名称和…

Steam游戏被攻击怎么办,如何针对性的做好防护措施

在现代网络环境中&#xff0c;在线游戏经常成为各种网络攻击的目标&#xff0c;尤其是DDoS攻击。这类攻击不仅会导致游戏服务器瘫痪&#xff0c;还会影响玩家的游戏体验&#xff0c;损害游戏开发商的声誉和经济利益。为了应对这些威胁&#xff0c;使用专门的防护措施是必要的。…

Scrapy框架简单介绍及Scrapy项目编写详细步骤

引言 Scrapy是一个用Python编写的开源、功能强大的网络爬虫框架&#xff0c;专为网页抓取和数据提取设计。它允许开发者高效地从网站上抓取所需的数据&#xff0c;并通过一系列可扩展和可配置的组件来处理这些数据。Scrapy框架的核心组成部分包括&#xff1a; Scrapy Engine&…

rclone迁移对象存储之间的数据

1 概述 rclone是一款文件复制工具&#xff0c;既可以用于在linux主机之间复制文件&#xff0c;也可以在对象存储之间复制文件。 rclone的官网为&#xff1a; https://rclone.orgrlcone关于对象存储的官方文档为&#xff1a; https://rclone.org/s32 安装 2.1 yum安装 yum …

centos7.9用docker运行一个nginx容器

首先你的linux 系统里面已经安装好了docker&#xff0c;docker的安装教程看这个 1&#xff0c;下载nginx镜像 有很多文章会把镜像下载说成是拉取镜像&#xff0c; 我觉得就是下载的意思啊&#xff0c;搞不懂为什么要说拉取&#xff1f; docker pull nginx 下载最新版 Nginx …

深度学习之基于Unet的新冠肺炎等级分割分类系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 近年来&#xff0c;新冠肺炎&#xff08;COVID-19&#xff09;疫情给全球公共卫生安全带来了极…

操作系统基本原理

一、基本概念 二、进程管理 三、存储管理 四、文件管理 五、设备管理 六、微内核操作系统 操作系统的概念&#xff08;定义) 操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织调度计算机的工作和资源的分&#xff0c;以…

光耦合器的特性和应用概述

光耦合器又称光电耦合器&#xff0c;是现代电子学中必不可少的元件&#xff0c;确保隔离电路之间安全有效的信号传输。本文探讨了光耦合器的特性及其多样化应用&#xff0c;强调了它们在各种电子系统中的关键作用。 什么是光耦合器&#xff1f; 光耦合器是一种设计用于利用光传…

第十六节:带你梳理Vue2: 生命周期与钩子函数

前沿: 通过前面几节的学习&#xff0c;我们已经对vue有了初步的了解&#xff0c;大致了解了vue可以帮我们干什么&#xff0c; 那么接下来我们就来看看vue的生命周期和它常用的钩子函数, 1. 理解生命周期的含义 生命周期&#xff1a;就是一个组件从实例化创建并添加到DOM树开…