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. 执行顺序

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

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

相关文章

winform安装时覆盖原版本并保留配置文件

如何打包参考大佬的博客添加链接描述 覆盖原版本 修改 Properties 下的 AssemblyInfo.cs 中的版本号&#xff0c;如下。原来是1.0.0.0&#xff0c;我修改成1.0.2。 选中 Setup 项目&#xff0c;修改 Version 属性修改 Version 属性后 ProductCode 也会改变&#xff0c;卸载程…

生信网络学院|05月31日《SOLIDWORKS Manage 产品周期管理》

课程主题&#xff1a;SOLIDWORKS Manage 产品周期管理 课程时间&#xff1a;2024年05月31日 14:00-14:30 主讲人&#xff1a;付舰 生信科技 PLM实施顾问 1、SOLIDWORKS Manage介绍 2、周期流程管理 3、产品项目管理 4、项目会议管理 5、项目问题管理 安装腾讯会议客户端…

社会工程学:美色你顶得住吗?

背景 近年来&#xff0c;网络钓鱼的手段是屡见不鲜&#xff0c;手段和方式也是层出不穷。钓鱼相关的技术作为一种比较高效的打点方式&#xff0c;越来越多的应用于红蓝对抗当中。本文主要分享一次实战攻防中几个有趣的钓鱼场景。 重点说明&#xff1a;本文分享内容为一次经过授…

雷电预警监控系统:守护安全的重要防线

TH-LD1在自然界中&#xff0c;雷电是一种常见而强大的自然现象。它既有震撼人心的壮观景象&#xff0c;又潜藏着巨大的安全风险。为了有效应对雷电带来的威胁&#xff0c;雷电预警监控系统应运而生&#xff0c;成为现代社会中不可或缺的安全防护工具。 雷电预警监控系统的基本…

效果炸裂!使用 GPT-4o 快速实现LLM OS

使用 GPT-4o 快速实现LLM OS 什么是 LLM OS&#xff1f;LLM OS 主要有以下5个部分组成&#xff1a; LLM OS 开源实现运行 LLM OS 开源实现 什么是 LLM OS&#xff1f; 关于 LLM OS 的最初构想源自karpathy 在2023年11月11日发布的一条Twitter 动态&#xff0c;这是 LLM OS 概念…

大连瓦房店市科工局副局长乔宽一行调研蓝卓

日前&#xff0c;瓦房店市科技和工业信息化局副局长乔宽、副局长国海军、轴承协会秘书长高钧一行莅临蓝卓调研&#xff0c;学习浙江数字经济发展路径&#xff0c;考察蓝卓数字化服务能力。蓝卓副总经理陈挺、装备汽配军团总监陈伟亮、数字化咨询总监周立斌、大连区域方案经理龚…

精通C++ STL(二):string类的模拟实现

目录 string类各函数接口总览 默认成员函数 构造函数 拷贝构造函数 赋值运算符重载函数 析构函数 迭代器相关函数 begin和end 容量和大小相关函数 size和capacity reserve和resize empty 修改字符串相关函数 push_back append operator insert erase clear swap c_str 访…

The Sandbox 和 Bitkub 联手增强东南亚元宇宙中心

作为去中心化游戏虚拟世界和区块链平台的先驱&#xff0c;The Sandbox 正与泰国领先的区块链网络 Bitkub Blockchain Technology Co., Ltd. 展开创新合作。双方合作的目的是将Bitkub元宇宙的影响力扩展到The Sandbox&#xff0c;建立一个元宇宙中心&#xff0c;向用户承诺从 Bi…

SuperMap GIS基础产品FAQ集锦(20240527)

一、SuperMap iDesktopX 问题1&#xff1a;请教一下&#xff0c;idesktopx对三维点设置svg符号&#xff0c;场景中不显示是什么原因&#xff1f; 11.1.1 【解决办法】目前三维场景暂时不支持svg矢量符号&#xff0c;可使用栅格符号替代。 问题2&#xff1a;请教一下&#x…

【NumPy】权威指南:使用NumPy的percentile函数进行百分位数计算

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

3-Django项目继续--初识ModelForm

目录 ModelForm 认识ModelForm 优势 初识Form 初识ModelForm 添加信息 views.py add_student_new.html 修改信息 views.py views.py add_student_new.html ModelForm 认识ModelForm 优势 1、方便校验用户提交的数据 2、页面展示错误提示 3、数据库字段很多的情况…

企业文件加密实现数据泄露防护

在数字化时代&#xff0c;数据成为企业最宝贵的资产之一。然而&#xff0c;数据泄露事件频发&#xff0c;给企业带来了巨大的经济损失和声誉风险。为了保护企业的核心利益&#xff0c;实现数据泄露防护&#xff0c;企业必须采取有效的文件加密措施。 一、数据泄露的严重性 数据…

SQL——SELECT相关的题目(力扣难度等级:简单)

目录 197、上升的温度 577、员工奖金 586、订单最多的客户 596、超过5名学生的课 610、判断三角形 620、有趣的电影 181、超过经理收入的员工 1179、重新格式化部门表&#xff08;行转列&#xff09; 1280、学生参加各科测试的次数 1965、丢失信息的雇员 1068、产品销售分…

python核心编程(二)

python面向对象 一、基本理论二、 面向对象在python中实践2.1 如何去定义类2.2 通过类创建对象2.3 属性相关2.4 方法相关 三、python对象的生命周期,以及周期方法3.1 概念3.2 监听对象的生命周期 四、面向对象的三大特性4.1 封装4.2 继承4.2.1 概念4.2.1 目的4.2.2 分类4.2.3 t…

spring boot打的包直接运行

Spring Boot 提供了一个插件 spring-boot-maven-plugin 把程序打包成一个可执行的jar包&#xff0c;直接执行java -jar xxx.jar即可以启动程序 1、引用 spring-boot-maven-plugin插件 <build><plugins><plugin><groupId>org.springframework.boot<…

使用 Supabase 的 Realtime + Storage 非常方便呢

文章目录 &#xff08;一&#xff09;Supabase&#xff08;二&#xff09;Realtime&#xff08;消息&#xff09;&#xff08;2.1&#xff09;Python 消息订阅&#xff08;2.2&#xff09;JavaScript 消息订阅 &#xff08;三&#xff09;Storage&#xff08;存储&#xff09;&…

CI/CD:持续集成/持续部署

1. 安装docker、docker-compose # 安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i sdownload.docker.commirrors.aliyun.com/docker-ce /…

『ZJUBCA Weekly Feed 07』MEV | AO超并行计算机 | Eigen layer AVS生态

一文读懂MEV&#xff1a;区块链的黑暗森林法则 01 &#x1f4a1;TL;DR 这篇文章介绍了区块链中的最大可提取价值&#xff08;MEV&#xff09;概念&#xff0c;MEV 让矿工和验证者通过抢先交易、尾随交易和三明治攻击等手段获利&#xff0c;但也导致网络拥堵和交易费用增加。为了…

c++(四)

c&#xff08;四&#xff09; 运算符重载可重载的运算符不可重载的运算符运算符重载的格式运算符重载的方式友元函数进行运算符重载成员函数进行运算符重载 模板定义的格式函数模板类模板 标准模板库vector向量容器STL中的listmap向量容器 运算符重载 运算符相似&#xff0c;运…

Android刮刮卡自定义控件

效果图 刮刮卡自定义控件 import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PorterDuff; import …