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 - 编写顺序
select 字段列表
from 表名列表
where 条件列表
group BY 分组字段列表
having 分组后条件列表
order BY 排序字段列表
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 排序方式
- ASC : 升序(默认值)
- 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. 执行顺序
相关文章:
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. 分组查…...
LeetCode 2951.找出峰值:模拟(遍历)
【LetMeFly】2951.找出峰值:模拟(遍历) 力扣题目链接:https://leetcode.cn/problems/find-the-peaks/ 给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组 mountain 中的所有 峰值。 以数组形式返回给定数组中 峰值 的…...
软考结束。有什么要说的
1. 竟然是机试,出乎我意料。是 考试机构觉得笔试成本高了么。这次的考试是机试,相比以往有所不一样。感言是不是以后都会在固定地点考试也说不准。 2. 遇到年轻人。 这次旁边的一个女同学第一次参加,还像我询问了一些关于软考的事。我是有…...
Matlab读取Swarm球谐系数,并绘制EWH全球格网图(存在疑问)
ICGEM官网下载 COST-G发布的4040的球谐系数 close all; clearvars -except; % addpath(E:\Code\Tool\Function\GRACE_functions); dir_degree_1 E:\Code\GRACE_data\Degree_1\deg1_coef.txt; dir_c20 E:\Code\GRACE_data\Degree_2\C20_RL06.txt; myDir_Swarm E:…...
Vue集成Iframe
一、应用场景,为什么要集成Iframe? 1、庞大项目拆分后,便于管理和部署,用集成Iframe的方法合并 2、避免功能重复开发,共用模块可单独开发为一个项目,既可独立部署,也可集成到中台系统 二、集成…...
Android Studio 所有历史版本下载
一、官网链接 https://developer.android.google.cn/studio/archive 操作 二、AndroidDevTools地址 https://www.androiddevtools.cn/ 参考 https://blog.csdn.net/qq_27623455/article/details/103008937...
5.27作业
定义自己的命名空间my_sapce,在my_sapce中定义string类型的变量s1,再定义一个函数完成对字符串的逆置。 #include <iostream> #include <string.h>using namespace std; namespace my_space {string s1;void RevString(string &s1); } v…...
微服务架构下的‘黑带’安全大师:Spring Cloud Security全攻略!
深入探讨了微服务间的安全通信、安全策略设计以及面对经典安全问题的应对策略。无论你是微服务的新手还是资深开发者,都能在本文中找到提升安全功力的秘籍。让我们一起成为微服务架构下的‘黑带’安全大师! 文章目录 1. 引言微服务安全挑战与重要性Sprin…...
Py列表(list)
目录 正向索引: 反向索引: 嵌套列表: 修改列表中的值 列表常用的方法 实例 练习: 正向索引: 从0开始,依次递增。第一个元素的索引为0,第二个元素的索引为1,依此类推。 列表的下标…...
黑马es0-1实现自动补全功能
1、安装分词器 上github上找人做好的分词器,放到es-plugin数据卷里,然后重启es即可 2、自定义分词器 elasticsearch中分词器(analyzer)的组成包含三部分: character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符 …...
react通过上下文深入传递数据
通常,您将通过 props 将信息从父组件传递到子组件。但是,如果必须将道具传递到中间的许多组件,或者应用中的许多组件需要相同的信息,则传递道具可能会变得冗长且不方便。Context 允许父组件将一些信息提供给其下树中的任何组件&am…...
「代码厨房大揭秘:Python性能优化的烹饪秘籍!」
哈喽,我是阿佑,上篇咱们讲了 Socket 编程 —— 探索Python Socket编程,赋予你的网络应用隐形斗篷般的超能力!从基础到实战,构建安全的聊天室和HTTP服务器,成为网络世界的守护者。加入我们,一起揭…...
【重学C语言】十六、联合、枚举、面向对象编程
【重学C语言】十六、联合、枚举、面向对象编程 联合定义联合体使用联合体注意事项枚举枚举的定义为枚举常量指定整数值枚举的使用枚举的打印枚举的优势注意事项面向对象编程1. 结构体(Structs)2. 封装(Encapsulation)3. 继承(Inheritance)...
Github2024-05-21 Python开源项目日报 Top10
根据Github Trendings的统计,今日(2024-05-21统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10C项目1TypeScript项目1youtube-dl - 从YouTube和其他网站下载视频的命令行程序 创建周期:4951 天开发语言:Python协议类型:The …...
labview_开放协议
一、开放协议 二、硬件设置 英格索兰硬件设置: 三、配套测试软件 四、Labview代码...
AWS安全性身份和合规性之Amazon Macie
Amazon Macie是一项数据安全和数据隐私服务,它利用机器学习(ML)和模式匹配来发现和保护敏感数据。可帮助客户发现、分类和保护其敏感数据,以及监控其数据存储库的安全性。 应用场景: 敏感数据发现 一家金融服务公司…...
redis数据类型set,zset
华子目录 Set结构图相关命令sdiff key1 [key2]sdiffstore destination key1 [key2...]sinter key1 [key2...]sinterstore destination key1 [key2...]sunion key1 [key2...]sunionstore destination key1 [key2...]smove source destination memberspop key [count]sscan key c…...
央视网视频下载和花屏问题处理
央视网(www.cctv.com)视频下载往往是花屏的,如何处理呢? 如果您是IT技术开发者,那么您可以通过下面步骤自己实现。 用chrome浏览器,F2打开开发者工具,找到当前页面的network 然后找一个接口:https://vdn.a…...
四、通信和网络安全—局域网|广域网|远程连接和攻击技术(CISSP)
目录 1.局域网和广域网 1.1 WAN技术总结 2.远程连接—无线技术 2.1 VPN 2.2 隧道协议总结...
15、设计模式之责任链模式
责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通…...
intv_ai_mk11详细步骤:24GB单卡部署Llama模型并启用Web UI全流程
24GB单卡部署Llama模型并启用Web UI全流程指南 1. 环境准备与快速部署 在开始部署intv_ai_mk11模型前,我们需要确保硬件和软件环境满足基本要求。这个中等规模的Llama架构模型可以在单张24GB显存的GPU上流畅运行,非常适合个人开发者和小型团队使用。 …...
让AI成为开发伙伴:调用快马模型为养龙虾系统添加智能预测与问答功能
最近在开发一个养龙虾的智能决策系统,发现很多功能模块如果纯手写会非常耗时。尝试用AI辅助开发后,效率提升了不少,这里分享下具体实现思路和踩坑经验。 生长预测模块的实现 这个模块需要根据历史水温、投喂量等数据预测龙虾未来一周的生长情…...
电子电路中的“心脏”:电源
一、语言特性:Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一,就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...
Mermaid Live Editor:用代码绘制专业图表的终极免费工具
Mermaid Live Editor:用代码绘制专业图表的终极免费工具 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-edit…...
别再用FIFO了!AXI4-Stream CDC场景下,寄存器管道(Register Slice)模式实战与避坑
别再用FIFO了!AXI4-Stream CDC场景下寄存器管道模式的实战精要 在FPGA和SoC设计中,跨时钟域(CDC)数据传输一直是个让人头疼的问题。每当遇到不同时钟域间的数据同步,大多数工程师的第一反应就是掏出一个FIFO来解决。这…...
ARM Cortex-M0 SoC实战:如何用SystemVerilog和C语言实现软硬件高效握手通信
ARM Cortex-M0 SoC实战:软硬件握手通信的黄金法则 在嵌入式系统开发中,处理器与外围设备之间的高效通信一直是工程师们面临的挑战。当ARM Cortex-M0这类精简指令集处理器遇到AHB-Lite总线时,如何设计出既稳定又高效的握手协议?本…...
3分钟净化微信社交圈:WechatRealFriends让200+好友检测效率提升99%的秘密
3分钟净化微信社交圈:WechatRealFriends让200好友检测效率提升99%的秘密 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/Wech…...
human-pose-estimation.pytorch:简单而强大的人体姿态估计终极指南
human-pose-estimation.pytorch:简单而强大的人体姿态估计终极指南 【免费下载链接】human-pose-estimation.pytorch The project is an official implement of our ECCV2018 paper "Simple Baselines for Human Pose Estimation and Tracking(https://arxiv.o…...
NVMe-CLI:Linux系统下NVMe固态硬盘管理的瑞士军刀
NVMe-CLI:Linux系统下NVMe固态硬盘管理的瑞士军刀 【免费下载链接】nvme-cli NVMe management command line interface. 项目地址: https://gitcode.com/gh_mirrors/nv/nvme-cli 你是否曾经为Linux系统中的NVMe固态硬盘管理而烦恼?想要查看设备健…...
项目管理和技术管理的区别
在单位从事管理岗快2年了,负责单位内的研发项目管理和技术管理工作。感觉这是两个不同的管理赛道。其中项目管理侧重进度、资源、风险、责任人、排期等要素推进和汇报。技术管理则侧重研发环节的技术深度、技术方向、技术领先性、技术栈,以及项目产出的质…...
