[JavaWeb]SQL介绍-DQL查询数据
SQL介绍-DQL查询数据
- 一.基础查询
- 二.条件查询
- 三.排序查询
- 1.聚合函数
- 2.分组查询
- 四.分页查询
DQL查询基础的语法结构如下:
SELECT字段列表
FROM表名列表
WHERE条件列表
GROUP BY分组字段
HAVING分组后条件
ORDER BY排序字段
LIMIT分页限定
一.基础查询
说明 | 语法 |
---|---|
查询多个字段 | SELECT 字段列表 FROM 表名; SELECT * FROM 表名; -- 查询所有数据 |
去除重复记录 | SELECT DISTINCT 字段列表 FROM 表名; |
起别名 | 列名 AS 别名 (AS也可以省略) |
-- 先建立新的表
drop table if exists stu;
-- 创建stu表
CREATE TABLE stu (
id int,-- 编号
name varchar(20),-- 姓名
age int,-- 年龄
sex varchar(5),-- 性别
address varchar(100),-- 地址,
math double(5,2),-- 数学成绩,
english double(5,2),-- 英语成绩
hire_date date -- 入学时间
);-- 添加数据
INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date)
VALUES
(1,'马运',55,'男','杭州',66,78,'1995-09-01'),
(2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),
(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),
(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),
(5,'柳青',20,'男','湖南',86,NULL,'1998-09-01'),
(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),
(7,'张学右',22,'女','香港',99,99,'1998-09-01'),
(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');
SELECT * FROM stu;
-- 基础查询
-- 查询name age两列
SELECT name,age FROM stu;-- 查询所有列的数据,用*指代所有列的数据,但是不推荐使用
SELECT * FROM stu;-- 查询地址信息,这时候查询出来的信息有重复记录
SELECT address FROM stu;-- 去除重复可以通过DISTINCT关键字
SELECT DISTINCT address FROM stu;-- 查询姓名,数学成绩,英语成绩,并用别名代替原有列名
-- 可以通过AS关键字来起别名,也可以省略
SELECT name AS 姓名,math 数学成绩,english 英语成绩 FROM stu;
二.条件查询
- 条件查询的语法很简单但是要结合不同的条件表达式去使用
SELECT 字段列表 FROM 表名 WHERE 条件列表;
符号 | 功能 |
---|---|
\>, \< | 大于, 小于 |
\>=, \<= | 大于等于, 小于等于 |
= | 等于 |
\<\> 或 != | 不等于 |
BETWEEN ... AND ... | 在某个范围内(都包含) |
IN(...) | 多选一 |
LIKE 占位符 | 模糊查询 _单个任意字符 %多个任意字符 |
IS NULL | 是NULL |
IS NOT NULL | 不是NULL |
AND 或 && | 并且 |
OR 或|| | 或者 |
NOT 或 ! | 非 |
解下来通过实际的需求来体验这些语句的作用
SELECT * FROM stu;
-- 查询年龄大于20岁的学院的信息
SELECT * FROM stu WHERE age > 20;-- 查询年龄大于等于20的学员的信息
SELECT * FROM stu WHERE age >= 20;-- 查询年龄大于等于20岁但是小于等于30岁的学员信息
SELECT id,name 姓名,age 年龄 FROM stu WHERE age>=20 AND age<=30;
SELECT * FROM stu WHERE age BETWEEN 20 AND 30;-- 查询入学日期在1998-09-01到1999-09-01之间的学员信息
SELECT * FROM stu WHERE hire_date BETWEEN '1998-09-01' and '1999-09-01';-- 查询年龄等于18岁的信息
SELECT * FROM stu WHERE age=18;-- 查询年龄不等于18的学员信息
SELECT * FROM stu WHERE age != 18;
SELECT * FROM stu WHERE age <> 18;-- 查询年龄等于18,20,22的信息
SELECT * FROM stu WHERE age=18 OR age=20 OR age=22;
SELECT * FROM stu WHERE age IN(18,20,22);-- 查询英语成绩为NULL的信息(NULL值的比较不能使用=或!=)
SELECT * FROM stu WHERE english IS NULL;-- 查询英语成绩不为NULL的信息
SELECT * FROM stu WHERE english IS NOT NULL;
- 模糊查询
LIKE 占位符
-- 模糊查询LIKE
-- 通配符 _ 代表单个任意字符
-- 通配符 % 代表多个任意字符-- 查询姓马的学员信息
SELECT * FROM stu WHERE name LIKE '马%';-- 查询名字第二个字是花的学员信息
SELECT * FROM stu WHERE name LIKE '_花%';-- 查询名字中包含 德 的学员信息
SELECT * FROM stu WHERE name LIKE '%德%';
三.排序查询
- 具体语法
SELECT 字段列表 FROM 表名 ORDER BY 排序字段1 [排序方式1],排序字段2 [排序方式2] ...;
- 排序方式
ASC: 升序排列(默认值)
DESC: 降序排列 当有多个条件时,只有前边的条件一样的时候,才会根据后边的条件进行排序
-- 查询学员信息,按年龄进行升序排列
SELECT * FROM stu ORDER BY age ASC;
SELECT * FROM stu ORDER BY age; -- ASC是默认的,不进行指定也可以打到效果-- 查询信息,按照数学成绩降序排列
SELECT * FROM stu ORDER BY math DESC;-- 查询信息,按数学成绩降序排列,如果成绩一样,按英语成绩升序排列
SELECT * FROM stu ORDER BY math DESC,english ASC;
1.聚合函数
- 聚合函数是把一列作为一个整体,进行纵向计算的.
SELECT 函数名(列名) FROM 表;
函数名 | 作用 |
---|---|
count(列名) | 统计数量(一般选用不为NULL的列) |
max(列名) | 统计最大值 |
min(列名) | 统计最小值 |
sum(列名) | 求和 |
avg(列名) | 求平均 |
-- 聚合函数
-- 查班上一共有多少个学生 COUNT(expr)统计的列名不能为NULL
/*count推荐的取值:1.主键2.*(新版MySQL中会计算效率最高的一列)
*/
SELECT COUNT(id) FROM stu;
SELECT COUNT(name) FROM stu;
-- COUNT(expr)统计的列名不能为NULL,空值是统计不到的会出错!!!
SELECT COUNT(english) FROM stu;-- 查询数学成绩的最高分
SELECT MAX(math) FROM stu;
-- 查询数学成绩的最低分
SELECT MIN(math) FROM stu;
-- 查询数学成绩的平均分
SELECT AVG(math) FROM stu;-- 查询英语成绩的最低分 注意NULL值不参与聚合函数的运算
SELECT MIN(english) FROM stu;
2.分组查询
- 基本语法
SELECT 字段列表 FROM 表名 [WHERE 分组前限定条件] GROUP BY 分组字段名 [HAVING 分组后条件过滤]
注意分组之后,查询的字段为聚合函数和分组字段,查询其他的字段无任何意义
WHERE
和HAVING
的区别
– 执行时机不一样:WHERE
是分组之前进行限定,不满足WHERE
条件则不参与分组,HAVING
是分组之后对结果进行过滤
– 可判断的条件不一样:WHERE
不能对聚合函数进行判断,HAVING
可以
– 执行顺序:WHERE
> 聚合函数 >HAVING
-- 查询男同学和女同学各自的数学平均分
SELECT sex 性别,AVG(math) 平均分 FROM stu GROUP BY sex;-- 查询男女各自的平均分以及各自的人数
SELECT sex 性别,AVG(math) 平均分,COUNT(*) 人数 FROM stu GROUP BY sex;-- 查询男女各自的数学平均分,统计人数. 要求分数低于70分的人不参与分组
SELECT sex 性别,AVG(math) 数学均分,COUNT(*) 人数 FROM stu WHERE math>70 GROUP BY sex;-- 查询男女各自的数学平均分,统计人数. 要求分数低于70分的人不参与分组,分组后人数大于2人的数据
SELECT sex 性别,AVG(math) 平均分,COUNT(*) 人数 FROM stu WHERE math>70 GROUP BY sex HAVING COUNT(*)>2;
四.分页查询
- 语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
- 起始索引: 从零开始
计算公式:起始索引=(当前页码-1) * 每页显示的条数
- 分页查询是MySQL的方言
Oracle分页查询使用rownumber
SQL Server分页查询使用top
-- 从0开始查询3条数据
SELECT * FROM stu LIMIT 0,3;-- 每页显示3条数据,查询第一页
SELECT * FROM stu LIMIT 0,3;-- 每页显示3条数据,查询第二页
SELECT * FROM stu LIMIT 3,3;-- 每页显示3条数据,查询第三页
SELECT * FROM stu LIMIT 6,6;
B站视频课程
笔记与源码文件
相关文章:
[JavaWeb]SQL介绍-DQL查询数据
SQL介绍-DQL查询数据 一.基础查询二.条件查询三.排序查询1.聚合函数2.分组查询 四.分页查询 DQL查询基础的语法结构如下: SELECT字段列表 FROM表名列表 WHERE条件列表 GROUP BY分组字段 HAVING分组后条件 ORDER BY排序字段 LIMIT分页限定一.基础查询 说明语法查询…...

[containerd] 在Windows上使用IDEA远程调试containerd, ctr, containerd-shim
文章目录 1. containerd安装2. 源码编译3. 验证编译的二进制文件是否含有调试需要的信息3.1. objdump工具验证3.2. file工具验证3.3. dlv工具验证 4. debug 1. containerd安装 [Ubuntu 22.04] 安装containerd 2. 源码编译 主要步骤如下: 1、从github下载containe…...

Verilog语法学习——LV4_移位运算与乘法
LV4_移位运算与乘法 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 题目描述: 已知d为一个8位数,请在每个时钟周期分别输出该数乘1/…...
打卡力扣题目九
#左耳听风 ARST 打卡活动重启# 目录 一、问题 二、解题方法一 三、解题方法二 四、两种方法的区别 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个…...

Python零基础入门(九)——函数,类和对象
系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不…...
在linux上面部署activemq
1、下载 网址:ActiveMQ 注意:新版本5.17起 要求jdk11, 5.16兼容jdk8, 所以,确保已经安装 java11 或以上的版本 这里安装较新版:5.18.2,已经安装了java17 如何安装jdk17,请详见我的另一篇文章:linux…...
mysql的sql语句优化方法面试题总结
mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 10 这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样: create table #t…...

小程序 获取用户头像、昵称、手机号的组件封装(最新版)
在父组件引入该组件 <!-- 授权信息 --><auth-mes showModal"{{showModal}}" idautnMes bind:onConfirm"onConfirm"></auth-mes> 子组件详细代码为: authMes.wxml <!-- components/authMes/authMes.wxml --> <van-popup show…...
【Linux】简易shell外壳的制作
#include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h>#define NUM 1024 #define SIZE 32 #define SEP " "// 保存完整的命令行字符串 char cmd_line…...

TenserRT(四)在 PYTORCH 中支持更多 ONNX 算子
第四章:在 PyTorch 中支持更多 ONNX 算子 — mmdeploy 0.12.0 文档 PyTorch扩充。 PyTorch转换成ONNX: PyTorch有实现。PyTorch可以转化成一个或者多个ONNX算子。ONNX有相应算子。 如果即没有PyTorch实现,且缺少PyTorch与ONNX的映射关系&…...
前端高级面试题-浏览器
1 事件机制 事件触发三阶段 document 往事件触发处传播,遇到注册的捕获事件会触发 传播到事件触发处时触发注册的事件 从事件触发处往 document 传播,遇到注册的冒泡事件会触发 事件触发⼀般来说会按照上⾯的顺序进⾏,但是也有特例&#x…...
Mongodb 多文档聚合操作处理方法三(聚合管道)
聚合 聚合操作处理多个文档并返回计算结果。您可以使用聚合操作来: 将多个文档中的值分组在一起。 对分组数据执行操作以返回单个结果。 分析数据随时间的变化。 要执行聚合操作,您可以使用: 聚合管道 单一目的聚合方法 Map-reduce 函…...

Zabbix分布式监控配置和使用
目录 1 Zabbix监控的配置流程2 添加主机组3 添加模板4 添加主机5 配置图形6 配置大屏7 新建监控项7.1 简介7.2 添加监控项7.3 查看数据7.4 图表 8 新建触发器8.1 概述8.2 添加触发器8.3 显示触发器状态 1 Zabbix监控的配置流程 在Zabbix-Web管理界面中添加一个主机,…...

XCTF_very_easy_sql
简单的进行sql注入测试后发现不简单尝试一下按照提示 结合这句提示应该是内部访问,所以采用的手段应该是ssrf顺便看看包 唯一值得关注的是set-cookie说回ssrf唯一能使用的方式应该是Gopher协议找到了一个POST的python脚本 import urllib.parsepayload ""…...
[React]useMemoizedFn和useCallback对比
useMemoizedFn文档地址:https://ahooks.js.org/zh-CN/hooks/use-memoized-fn hooks组件内什么时候会更新自定义函数 在 React 中,自定义的 Hooks 内部的函数在以下常见的几种情况下会被重新赋值,导致更新引用: 组件重新渲染&…...

计算机毕设 深度学习人体跌倒检测 -yolo 机器视觉 opencv python
文章目录 0 前言1.前言2.实现效果3.相关技术原理3.1卷积神经网络3.1YOLOV5简介3.2 YOLOv5s 模型算法流程和原理4.数据集处理3.1 数据标注简介3.2 数据保存 5.模型训练 6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题…...
完全背包
动态规划解题步骤 : 动态规划问题一般从三个步骤进行考虑。 步骤一:集合和集合的状态 所谓的集合,就是一些方案的集合。 用 g[i][j] 表示从前 i 种物品中进行选择,且总体积不大于 j 的各个选法获得的价值的集合。注意:g[i][j] 不是一个数…...

【软件测试】webdriver常用API演示(Java+IDEA+chrome浏览器)
1.元素定位方法 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名…...

Linux安装MySQL 8.1.0
MySQL是一个流行的开源关系型数据库管理系统,本教程将向您展示如何在Linux系统上安装MySQL 8.1.0版本。请按照以下步骤进行操作: 1. 下载MySQL安装包 首先,从MySQL官方网站或镜像站点下载MySQL 8.1.0的压缩包mysql-8.1.0-linux-glibc2.28-x…...
多线程面试相关的一些问题
面试题 1. 常见的锁策略相关的面试题 2. CAS相关的面试题 3. Synchronized 原理相关的面试题 4. Callable 接口相关的面试题 1. 常见的锁策略 乐观锁 vs 悲观锁 悲观锁: 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...