Data Query Language(DQL):数据查询语言

article/2025/10/16 15:36:08

Data Query Language(DQL):数据查询语言

  • 基础查询
    • 查询所有列
    • 查询指定列
  • 条件查询
    • 条件查询介绍
    • 查询示例如下
  • 模糊查询
    • 模糊查询介绍
    • 查询示例如下
  • 字段控制查询
  • 排序
  • 聚合函数
  • 分组查询
  • 分页查询

建立三张表用于查询,表中数据如下。
stu表如下:
在这里插入图片描述

emp表如下:
在这里插入图片描述dept表如下:
在这里插入图片描述

基础查询

查询所有列

语法:SELECT * FROM 表名;* 通配符,表示所有列

如查询stu表中所有记录:SELECT * FROM stu;

结果如下:
在这里插入图片描述

查询指定列

语法: SELECT 列名1, 列名2, …列名n FROM 表名;

查询stu表中所以记录的编号,姓名,年龄:SELECT sid, sname, age FROM stu;

结果如下:

在这里插入图片描述

条件查询

条件查询介绍

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:

=、!=、<>、<、<=、>、>=;BETWEEN…AND;IN(set);IS NULL;AND;OR;NOT; 

查询示例如下

1、查询性别为女,并且年龄小于50的记录

查询如下:

SELECT  *  FROM  stu 
WHERE  gender='female'  AND  age<50;

结果如下:
在这里插入图片描述
2、查询学号为S_1001,或者姓名为liSi的记录

查询如下:

SELECT  *  FROM  stu 
WHERE  sid ='S_1001'  OR  sname='liSi';

结果如下:
在这里插入图片描述
3、查询学号为S_1001,S_1002,S_1003的记录

查询如下:

SELECT  *  FROM  stu 
WHERE  sid  IN ('S_1001','S_1002','S_1003');

结果如下:
在这里插入图片描述
4、查询学号不是S_1001,S_1002,S_1003的记录

查询如下:

SELECT  *  FROM  stu 
WHERE  sid   NOT IN ('S_1001','S_1002','S_1003');

结果如下:
在这里插入图片描述
5、查询年龄为null的记录

查询如下:

SELECT   *   FROM   stu
WHERE   age   IS NULL;

结果如下:
在这里插入图片描述
6、查询年龄在20到40之间的学生记录

查询如下:

SELECT   *  FROM   stu
WHERE  age>=20  AND  age<=40;

结果如下:
在这里插入图片描述
或者

SELECT   *  FROM   stu 
WHERE  age  BETWEEN  20  AND  40;

结果如下:
在这里插入图片描述
7、查询性别非男的学生记录

查询如下:

SELECT   *  FROM   stu
WHERE  gender != 'male';
--或者
SELECT   *  FROM   stu
WHERE   gender <> 'male';
--或者
SELECT   *  FROM   stu
WHERE  NOT  gender='male';

结果如下:
在这里插入图片描述
8、查询姓名不为null的学生记录

查询如下:

SELECT *  FROM stu
WHERE NOT sname IS NULL;SELECT *  FROM stu
WHERE sname IS NOT NULL;

结果如下:

在这里插入图片描述

模糊查询

模糊查询介绍

语法: SELECT 字段 FROM 表 WHERE 某字段 Like 条件

SQL 提供了两种匹配模式:
(1)% :表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

(2) _ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。

查询示例如下

1、查询姓名由5个字母构成的学生记录

查询如下:

SELECT  *  FROM  stu
WHERE  sname  LIKE '_____';

结果如下:
在这里插入图片描述2、查询姓名由5个字母构成,并且第5个字母为“i”的学生记录

查询如下:

SELECT  * FROM  stu
WHERE  sname  LIKE  '____i';

在这里插入图片描述
3、查询姓名以“z”开头的学生记录

查询如下:

SELECT  * FROM  stu
WHERE sname LIKE 'z%';

结果如下:

在这里插入图片描述

4、查询姓名中第2个字母为“i”的学生记录

查询如下:

SELECT   * FROM   stu
WHERE   sname   LIKE  '_i%';

结果如下:
在这里插入图片描述
5、查询姓名中包含“a”字母的学生记录

查询如下:

SELECT  * FROM  stu
WHERE  sname  LIKE  '%a%';

结果如下:
在这里插入图片描述

字段控制查询

1、去掉重复记录

去除重复记录,需要使用DISTINCT。

语法:SELECT DISTINCT 属性 FROM 表名;

如去除emp表中sal属性重复的记录:SELECT DISTINCT sal FROM emp;
在这里插入图片描述

2、查看雇员的月薪与佣金之和

语法:SELECT *, 属性1+属性2 FROM 表名;

因为sal和comm两列的类型都是数值类型,所以可以做加运算。

如果sal或comm中有一个字段不是数值类型,那么会出错:SELECT *, sal+comm FROM emp;

在这里插入图片描述那么就会发现sal+comm属性结果会出现错误。comm列有很多记录的值为NULL,因为任何东西与NULL相加结果还是NULL,所以结算结果可能会出现NULL。下面使用了把NULL转换成数值0的函数IFNULL:SELECT *, sal+IFNULL(comm,0) FROM emp;

在这里插入图片描述
3、给列名添加别名

语法:SELECT *, 列名 AS 列名 FROM emp;

现在我们给sal+comm这一列给出一个别名,为total:SELECT *, sal+IFNULL(comm,0) AS total FROM emp;
关键字AS可以省略:SELECT *, sal+IFNULL(comm,0) total FROM emp;

在这里插入图片描述

排序

ASC:升序。
DESC:降序。

1、查询所有学生记录,按年龄升序排序

查询如下:

SELECT  * FROM  stu
ORDER  BY  age  ASC;

结果如下:

在这里插入图片描述2、查询所有学生记录,按年龄降序排序

查询如下:

SELECT  * FROM   stu
ORDER  BY  age  DESC;

结果如下:
在这里插入图片描述
3、查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序

查询如下:

SELECT  *  FROM  emp
ORDER  BY  sal  DESC ,empno  ASC;

结果如下:
在这里插入图片描述

聚合函数

聚合函数是用来做纵向运算的函数:COUNT():统计指定列不为NULL的记录行数;MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

1、COUNT:当需要纵向统计时可以使用COUNT()。

如:统计月薪与佣金之和大于2500元的人数
在这里插入图片描述
count()函数只统计列中非NULL的行数。

2、SUM和AVG:当需要纵向求和时使用sum()函数,求平均值用svg()函数。

如:查询所有雇员月薪+佣金和:
在这里插入图片描述
统计所有员工平均工资:

在这里插入图片描述
3、MAX和MIN
查询最高工资和最低工资:
在这里插入图片描述

分组查询

1、当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部分来分组。

语法:select 字段1,字段2… from 表名 group by 分组字段

查询每个部门的部门编号以及每个部门的人数:

在这里插入图片描述
2、HAVING子句:select 字段1,字段2… from 表名 group by 分组字段 having 分组条件;

WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

如:查询工资总和大于9000的部门编号以及工资和:

在这里插入图片描述

分页查询

LIMIT:用来限定查询结果的起始行,以及总行数。

语法:SELECT * FROM 表名 LIMIT 起始位置, 查询数;

1、查询5行记录,起始行从0开始,起始行从0开始,即第一行开始!

在这里插入图片描述
2、查询10行记录,起始行从3开始。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/ZbDrKij9.shtml

相关文章

SpringDataJPA+QueryDSL玩转态动条件/投影查询

在本文之前&#xff0c;本应当专门有一篇博客讲解SpringDataJPA使用自带的SpecificationJpaSpecificationExecutor去说明如何玩条件查询&#xff0c;但是看到新奇、编码更简单易懂的技术总是会让人感到惊喜&#xff0c;而且QueryDSL对SpringDataJPA有着完美的支持。如果你没有使…

ES的Query DSL语句介绍

1、term 过滤 term主要用于精确匹配哪些值&#xff0c;比如数字&#xff0c;日期&#xff0c;布尔值或 not_analyzed 的字符串(未经切词的文本数据类型)&#xff1a; { "term": { "date": "2017-07-01" }} { "term": { "tit…

QueryDSL配置

QueryDSL配置 1&#xff1a;maven配置- <dependency><groupId>com.querydsl</groupId><artifactId>querydsl-jpa</artifactId><version>5.0.0</version></dependency><dependency><groupId>com.querydsl</gro…

Elasticsearch:DSL Query

Query DSL的分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有的数据&#xff0c;一般测试用&#xff0c;例如&#xff1a;match_all&#xff0c;但有分页限制&#xff0c;一次20…

SpringBoot+Querydsl 框架,大大简化复杂查询操作

概述 本篇博客主要将介绍的是利用spring query dsl框架实现的服务端查询解析和实现介绍。 查询功能是在各种应用程序里面都有应用&#xff0c;且非常重要的功能。用户直接使用的查询功能往往是在我们做好的UI界面上进行查询&#xff0c;UI会将查询请求发给查询实现的服务器&a…

QueryDSL 关于Q类找不到的问题

先编译代码&#xff0c;如果是在idea中&#xff0c;光标移动到项目上&#xff0c;F4&#xff0c;让后如图操作 回到项目中编码&#xff0c;就可以找到Q类了

JPA 之 QueryDSL-JPA 使用指南

Querydsl-JPA 框架&#xff08;推荐&#xff09; 官网&#xff1a;传送门 参考&#xff1a; JPA整合Querydsl入门篇SpringBoot环境下QueryDSL-JPA的入门及进阶 概述及依赖、插件、生成查询实体 1.Querydsl支持代码自动完成&#xff0c;因为是纯Java API编写查询&#xff0…

使用spring data Querydsl 实现动态查询功能

Table of Contents 概述 定义查询请求 google-like查询 特定字段的类sql查询 使用Spring Data Querydsl 利用Spring Query DSL实现动态查询 实现过程中的难题 主表包含多个子表数据时的AND查询 概述 本篇博客主要将介绍的是利用spring query dsl框架实现的服务端查询解…

关于 QueryDSL 配置和使用(详细)

关于 QueryDSL 最近写项目&#xff0c;使用到了 Jpa 这个 ORM 规范支持&#xff0c;使用注解的方式实现 Sql &#xff0c;但是用过 Jpa 的同学都知道 Jpa 对于单表操作很灵活&#xff0c;但是对于复杂一些的 SQL 就是很不友好了&#xff0c;所以这个地方我们就用到了 QueryDSL…

Spring Boot配置QueryDSL(生成Query查询实体类,查询数据)

1 QueryDSL QueryDSL仅仅是一个通用的查询框架&#xff0c;专注于通过Java API构建类型安全的SQL查询。 Querydsl可以通过一组通用的查询API为用户构建出适合不同类型ORM框架或者是SQL的查询语句&#xff0c;也就是说QueryDSL是基于各种ORM框架以及SQL之上的一个通用的查询框架…

微信开发之服务号设置

服务号设置 公众号开发主要用到AppID AppSecret 以下操作前提是&#xff0c;服务号已认证 在开发基本设置里 设置开发者模式开启设置appSecret 需要管理员扫码设置ip白名单 需要管理员扫码服务器配置启用&#xff0c;填写服务器验证地址 在开发者工具&#xff0c;web开发者工具…

微信服务号开发

最近终于完成了团队微信服务号的开发&#xff0c;深深的喘了一口气&#xff0c;还记得在差不多10天前&#xff0c;我们几个为了参加学校服务外包大赛的队友一起讨论选题&#xff0c;最终确定了以微信为基底开发一个人力资源管理系统的微信公众平台&#xff0c;几天后&#xff0…

微信开发公众号

背景&#xff1a; 过年前后做了个微信公众号项目&#xff0c;已经过去一段时间了&#xff0c;抽空回忆总结下基本流程吧&#xff0c;不然很快估计自己就忘了。。 文章目录 一、注册公众号二、了解公众号管理页面三、必备开发者工具的使用1.开发者文档2.在线接口调试工具3.web开…

微信服务号Java开发(一)

发送模板消息 1. 服务器配置 解析&#xff1a;微信发送一个get请求&#xff0c;并携带4个参数&#xff1a;signature、timestamp、nonce、echostr。开发者需要验证该请求是否来源于微信&#xff0c;验证方法&#xff1a; 1&#xff09;将token、timestamp、nonce三个参数进行字…

微信公众号之接入微信公众号服务器开发(二)

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 接着上一篇博客继续往下写 &#xff1a;https://blog.csdn.net/qq_41782425/article/details/85319116 一丶叙述 开发说明 Python代码实现&…

教你3分钟快速开发微信公众号[订阅号][服务号]

Wx-tools是基于微信公众平台API的轻量级框架。 基于Wx-tools你可以开速开发一个订阅号/服务号的web应用后台。 博主最近终于有空&#xff01;&#xff01;已经更新到2.0.0啦&#xff01;&#xff01; GitHub仓库 下载wx-tools-2.0.0.jar wx-tools开发文档 大三做过几个基于…

微信公众号开发之配置开发服务器

微信公众号开发详细教程 微信公众号开发文档 需不需要开发服务器应该根据自己的业务需求来决定。如果你只是简单使用微信公众号&#xff0c;发送推文等简单需求&#xff0c;你就不需要的配置自己的开发服务器&#xff0c;微信公众号平台功能十分强大&#xff0c;不懂技术的用…

微信服务号的开发-服务器配置

微信服务号开发-服务器配置 本期是将微信开发第一步&#xff0c;也就是服务器配置&#xff0c;以及校验。 话不多说&#xff0c;我们主要讲重点。既然是微信服务号开发&#xff0c;首先我们需要一个测试号&#xff0c;大家可以自己去微信公众平台申请一个。 申请完后&#xff…

微信公众号开发:服务器配置(Java)

由于项目需要微信公众号的开发&#xff0c;弄了老半天&#xff0c;发现也不是那么难弄。 对于微信公众号开发&#xff0c;首先要有开发者权限然后进行基本的配置。 登录进微信公众号平台&#xff0c;首页最下面有个基本配置&#xff1a; 进入基本配置后&#xff0c;会看到两个…

微信公众号开发——服务器配置

一、前提 1、购买一台云服务器 域名解析 这里用的宝塔服务 创建域名 绑定到指定的目录 wx.php 代码如下 <?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); $wechatObj new wechatCallbackap…