【MySQL的DQL查询语句】

news2025/2/27 11:15:41

MySQL的DQL查询语句-----在Navicat下

  • 将学生表导入Navicat中
  • 查询语句
    • 查询一整张表
    • 查询年龄大于22
    • 年龄大于22的女生
    • 查找文科的学生
    • 查找六班的学生
    • 计算学生的总分 (group by)
    • 合并两表 (join on xxxx)
    • 合并两张表 并求总分
      • 先合并在聚合
      • 先聚合在合并
    • 找到总分分数大于500的学生
      • having方法(在group by 之后执行)
      • 用where 方法来选择
    • 降序排列 (order by xxxx desc )
    • 只展示5个学生 (limit number)
      • 求前三门课程总分(==where 在group by 之前执行==)
  • 合并语句(left join right join 等等)
    • inner join 内连接(默认的连接方式)
    • left join (左连接)
    • right join(右连接)
    • union (上下合并)并且去重
    • union all (上下合并)并且不去重
    • 全连接
    • 笛卡尔积
  • where in 使用方法
    • 自增列插入数据 自增列数据使用null 或 0 占位
  • 复习
    • 主键 ,FOREIGN KEY 约束建
  • 全部代码

在上个DDL博客中找到学生表将其中的数据读入到mysql中,使用虚拟机或者Navicat都可以。

将学生表导入Navicat中

在这里插入图片描述
在这里插入图片描述

查询语句

查询一整张表

select * from students;
在这里插入图片描述

查询年龄大于22

select *
from students
where students.age > 22;
在这里插入图片描述

年龄大于22的女生

select clazz
,sname
,age
,gender
from students
where students.age > 22 and students.gender = “女”;
在这里插入图片描述

查找文科的学生

select *
from students
where clazz like “%文科%”; # %为模糊匹配
在这里插入图片描述

查找六班的学生

select *
from students
where clazz like “%六班%”;

select *
from students
where clazz like “%六%”;
在这里插入图片描述

计算学生的总分 (group by)

group by 后面的字段必须在select 里面体现出
并且不能体现出不在group by 之后的字段 只有
sum avg count max min 这些函数才可以另外体现

select score.id
,sum(sco)
from score
group by score.id;
在这里插入图片描述
这是计算全部学生的总和 可以看成是一个值 在where 判断语句中可以直接用
select sum(sco) from score;

合并两表 (join on xxxx)

select t1.*
,t2.sub_id
,t2.sco
from students as t1
join score as t2
on t1.id = t2.id;
在这里插入图片描述

合并两张表 并求总分

先合并在聚合

select tt1.id
,tt1.sname
,tt1.gender
,tt1.clazz
,sum(tt1.sco) as sum_sco
,max(tt1.sco) as max_sco
from (select t1.*
,t2.sco
from students as t1
join score as t2
on t1.id = t2.id ) as tt1
group by tt1.id,tt1.sname,tt1.gender,tt1.clazz;
在这里插入图片描述

先聚合在合并

select t2.*
,t1.sum_sco
from (select score.id
,sum(score.sco) as sum_sco
from score
group by score.id) as t1
join students as t2
on t1.id = t2.id;
在这里插入图片描述

找到总分分数大于500的学生

having方法(在group by 之后执行)

select tt1.id
,tt1.sname
,tt1.age
,tt1.gender
,tt1.clazz
,sum(sco) as sum_sco
from (select t1.*
,t2.sub_id
,t2.sco
from students as t1
join score as t2
on t1.id = t2.id ) as tt1
group by tt1.id,tt1.sname,tt1.age,tt1.gender,tt1.clazz
having sum_sco > 500;
在这里插入图片描述

用where 方法来选择

select t1.*
,t2.sum_sco
from students as t1
join (select score.id
,sum(sco) as sum_sco
from score
group by score.id) t2
on t1.id = t2.id
where t2.sum_sco > 500;
在这里插入图片描述

降序排列 (order by xxxx desc )

select tt1.id
,tt1.sname
,tt1.age
,tt1.gender
,tt1.clazz
,sum(sco) as sum_sco
from (select t1.*
,t2.sub_id
,t2.sco
from students as t1
join score as t2
on t1.id = t2.id ) as tt1
group by tt1.id,tt1.sname,tt1.age,tt1.gender,tt1.clazz
having sum_sco > 500
order by sum_sco desc # 不加desc 为升序排列

在这里插入图片描述

只展示5个学生 (limit number)

select tt1.id
,tt1.sname
,tt1.age
,tt1.gender
,tt1.clazz
,sum(sco) as sum_sco
from (select t1.*
,t2.sub_id
,t2.sco
from students as t1
join score as t2
on t1.id = t2.id ) as tt1
group by tt1.id,tt1.sname,tt1.age,tt1.gender,tt1.clazz
having sum_sco > 500
order by sum_sco desc # 不加desc 为升序排列
limit 5;
在这里插入图片描述

求前三门课程总分(where 在group by 之前执行)

select score.id
,sum(sco) as sum_sco
from score
where score.sub_id = 1000001
or score.sub_id = 1000002
or score.sub_id = 1000003
group by score.id;
在这里插入图片描述

合并语句(left join right join 等等)

设置两个表a和b其中的数据如下

a表 (id 学号)(name 姓名)
在这里插入图片描述
b表 (id 学号) (s_id 学科编号)
在这里插入图片描述

inner join 内连接(默认的连接方式)

在这里插入图片描述
只会合并两者都有的元素 没有的元素直接舍弃

left join (左连接)

在这里插入图片描述
以左边为基准进行左连接 没有的值则为null显示

right join(右连接)

在这里插入图片描述
以右边的表为基准进行合并 没有的值则补位空值

union (上下合并)并且去重

在这里插入图片描述

union all (上下合并)并且不去重

在这里插入图片描述

全连接

sql中实际上不提供全连接 但是如果把左连接根右连接合并则就是全连接
在这里插入图片描述

笛卡尔积

在这里插入图片描述
每个a数据都要根b数据合并一次

where in 使用方法

在这里插入图片描述
在这里插入图片描述

自增列插入数据 自增列数据使用null 或 0 占位

insert into users() values(null,“zp”);
insert into users() values(0,“yn”);

复习

order 的执行顺序还在select 之后
大致的执行顺序为
== from > where > group by > select > having > order by > limit==
括号里面的优先级最高

-- select 语句
select * 
from table
where conditions
group by columns
having conditions
order by columns
limit start,length;
join (left right inner) 三种形式
union (去重) union all 去重和不去重的区别
-- updata 语句 更新语句
UPDATE students set gender='1' where gender='男';
UPDATE students set gender='0' where gender='女';
UPDATE students set gender='1';

-- delete 语句 删除语句
delete from students where gender='女';
delete from students;
-- 截断表 将表删除并清空 所有的东西重新开始刷新 在进行新的书写
truncate students;

主键 ,FOREIGN KEY 约束建

主键是唯一的 是唯一约束 并且特性是 非空且唯一
FOREIGN KEY 这个是与另外一个表关联 ,当另外一个表变化后 子表也会变化

全部代码

-- 查询一整张表
select * from students;

-- 查询年龄大于22
select *
from students
where students.age > 22;

-- 年龄大于22的女生
select clazz
			 ,sname
			 ,age
			 ,gender
from students
where students.age > 22 and students.gender = "女";

-- 查找文科的学生
select *
from students
where clazz like "%文科%"; # %为模糊匹配


-- 查找六班的学生
select *
from students
where clazz like "%六班%";

select *
from students
where clazz like "%六%";

-- 计算学生的总分  
# group by 后面的字段必须在select 里面体现出
# 并且不能体现出不在group by 之后的字段 只有 
# sum avg count max min 这些函数才可以另外体现
select score.id
       ,sum(sco)
from score
group by score.id;

# 这是计算全部学生的总和 可以看成是一个值 在where 判断语句中可以直接用
select sum(sco) from score;

-- 合并两表
select t1.*
       ,t2.sub_id
			 ,t2.sco
from students as t1
join score as t2
on t1.id = t2.id;

-- 合并两张表 并求总分

# 先合并在聚合 
select tt1.id
       ,tt1.sname
			 ,tt1.gender
			 ,tt1.clazz
			 ,sum(tt1.sco) as sum_sco
			 ,max(tt1.sco) as max_sco
from (select t1.*
			       ,t2.sco
from students as t1
join score as t2
on t1.id = t2.id ) as tt1
group by tt1.id,tt1.sname,tt1.gender,tt1.clazz;


# 先聚合在合并
select t2.*
			 ,t1.sum_sco
from (select score.id
             ,sum(score.sco) as sum_sco
from score 
group by score.id) as t1
join students as t2
on t1.id = t2.id;

-- 找到总分分数大于500的学生
# having 在group by 之后执行
select tt1.id
			 ,tt1.sname
			 ,tt1.age
			 ,tt1.gender
			 ,tt1.clazz
			 ,sum(sco) as sum_sco
from (select t1.*
       ,t2.sub_id
			 ,t2.sco
from students as t1
join score as t2
on t1.id = t2.id ) as tt1
group by tt1.id,tt1.sname,tt1.age,tt1.gender,tt1.clazz
having sum_sco > 500;

# where 方法 !! where要在having前面执行
select t1.*
       ,t2.sum_sco
from students as t1
join (select score.id
       ,sum(sco) as sum_sco
from score 
group by score.id) t2
on t1.id = t2.id
where t2.sum_sco > 500;

-- 降序排列
select tt1.id
			 ,tt1.sname
			 ,tt1.age
			 ,tt1.gender
			 ,tt1.clazz
			 ,sum(sco) as sum_sco
from (select t1.*
       ,t2.sub_id
			 ,t2.sco
from students as t1
join score as t2
on t1.id = t2.id ) as tt1
group by tt1.id,tt1.sname,tt1.age,tt1.gender,tt1.clazz
having sum_sco > 500
## 降序排列
order by sum_sco desc # 不加desc 为升序排列
## 只展示5个学生
limit 5;

-- where 在group by 之前执行
-- 求前三门课程总分
select  score.id
        ,sum(sco) as sum_sco
from score
where score.sub_id = 1000001 
      or score.sub_id = 1000002 
			or score.sub_id = 1000003
group by score.id;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一站式自动化:Ansible Playbook的全面学习之旅

1 Playbook介绍 1.1 Playbook介绍 playbook 是由一个或多个play组成的列表 Playbook 文件使用YAML来写的 1.2 YAML 1.2.1 介绍 是一种表达资料序列的格式,类似XML Yet Another Markup Language 2001年首次发表 www.yaml.org 1.2.2 特点 可读性好 和脚本语言交…

机器学习笔记 - 什么是模型量化压缩技术?

一、简述 我们都知道现实世界是连续的状态,而计算机世界是离散的状态,这是什么意思呢?我们看一下下图,最右边的马力欧(高清)的状态,可以想象现实世界是连续的状态,而电脑世界在图像上呈现的是一格一格子的状态(左图)是离散的状态。 所以在计算机世界如果想要…

医疗器械设备模组的具体应用

直线模组是一种高精度、高速度的精密传动元件,目前被广泛应用在各种工业自动化领域;尤其是在激光加工、电子制造、医疗设备、物流设备和机器人等行业中,都发挥着重要作用,接下来我们看看医疗器械设备模组的具体应用吧!…

智慧灯杆系统平台架构设计需要考虑的几个要点

智慧灯杆是一种集成了各种先进技术的道路照明设施。它不仅提供照明服务,还可以具有物联网技术、视频监控、环境监测、广播通讯、无线网络覆盖等多种功能。这些智能功能可以通过互联网进行控制和管理,从而实现智慧城市的建设。智慧灯杆能够提升城市的智能…

Webgis学习总结

前言: 作者跟随视频学习了webgis内容进行如下学习复习总结 参考:新中地学习笔记 WebGIS第一课:测试高德API并通过: 注册申请高德API成为开发者,创建自己的项目和key进行项目初始化,可以使用JS API官方文…

PyQt6 QComboBox下拉组合框控件

​锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计34条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话…

算法基础--双指针

前面已经写了两篇关于算法方面的文章,这几天想了下,决定把这个算法整理成一个系列,除了是帮助自己巩固算法知识外,还能够把自己总结的每种算法的套路保存下来并分享给大家,这样以后即使是哪天想要重拾起来,…

Apache Doris 详细教程(三)

7、监控和报警 Doris 可以使用 Prometheus 和 Grafana 进行监控和采集,官网下载最新版即可。 Prometheus 官网下载:https://prometheus.io/download/ Grafana 官网下载:https://grafana.com/grafana/download Doris 的监控数据通过 FE 和…

排序算法介绍(四)快速排序

0. 简介 快速排序(Quick Sort)是一种高效的排序算法,采用了分治的思想。它选择一个基准元素,通过一趟排序将待排序序列分割成独立的两部分,其中一部分的所有元素都比基准元素小,另一部分的所有元素都比基准…

C++-类和对象

目录 一.C语言和C的区别 二.类的引入 三.类的定义 1.类的定义 2.类的成员方法的两种定义方式: 3.类的成员变量的定义 四.类的访问限定符及封装 1.访问限定符 五.面向对象的三大特征 1.面向对象的三大特征分别是什么 2.封装 六.类的作用域 七.创建类对象 1.类…

【csdn默认使用操作详解】

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

国际语音通知系统有哪些优点?国际语音通知系统有哪些应用场景?

国际语音通知是一种全球性的通信工具,它通过语音方式向用户发送各种重要信息和提示。无论是快递到货的取件提醒、机场航班的延误通知,还是银行账户的余额提醒,国际语音通知都能准确、迅速地将信息传达给用户。 三、国际语音通知系统有哪些优…

qnx修改tcp和udp缓冲区默认大小

拷贝/home/test/qnx/qos223/target/qnx7/aarch64le/sbin/sysctl进系统中 https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.utilities/topic/s/sysctl.html kern.sbmax 默认262144,这个限制住了发送、接收缓冲器大小 ./sysctl -w kern.sbmax10000…

51单片机应用从零开始(十)·指针

指针 C语言指针是一种保存变量地址的数据类型。它可以让程序直接访问内存中的数据,而不需要通过变量名来访问。指针变量存储的是一个地址,这个地址指向内存中的某个位置,该位置存储了一个值。 在C语言中,可以使用&运算符取得一…

Siemens-NXUG二次开发-Java开发环境配置[20231203]

Siemens-NXUG二次开发-Java开发环境配置[20231203] 1.NX/UG Java API官方开发文档2.安装Java83.安装jetbrain idea3.windows系统环境变量配置4.使用idea创建项目5.NXOpen Java代码生效流程6.API体系简述6.代码示例 1.NX/UG Java API官方开发文档 西门子NX/UG Java api开发文档…

严蔚敏数据结构题集 p18(2.25——2.30)(c语言代码实现)

目录 2.25假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。 2.26要求同2.25题。是对单链表编写求C的算法 2.…

03-IDEA集成Git,初始化本地库,添加远程仓库,提交,拉取,推送,分支的快捷操作

IDEA集成Git 创建Git忽略文件 不同的IDE开发工具有不同的特点文件,这些文件与项目的实际功能无关且不参与服务器上的部署运行, 把它们忽略掉能够屏蔽之间的差异 局部忽略配置文件: 在本地仓库的根目录即项目根目录下直接创建.gitignore文件, 以文件后缀或目录名的方式忽略指定…

CnosDB FDW:打通一扇通往PostgreSQL世界的大门

本文档提供了下载、安装和使用 CnosDB FDW 的简要说明。请根据您的实际需求和环境对文档进行调整。 概述 CnosDB FDW 是一个用于在 PostgreSQL 数据库中访问 CnosDB 数据库的外部数据包装器(Foreign Data Wrapper)。它提供了在 PostgreSQL 中查询 CnosD…

并发编程2:Java 加锁的原理和JVM对锁的优化

为什么要加锁 在多进程的环境下,如果一个资源被多个进程共享,那么对资源的使用往往会表现的随机和无序,这显然是不行的。例如多个线程同时对控制台输出,每个线程都输出的是完整的句子但是多个线程同时同时输出,则输出…

sd_webui的实用插件,prompt/lama/human matting/...,持续开源更新!!

热烈欢迎大家在git上star!!!冲鸭!!! 1.prompt优化插件 GitHub - leeguandong/sd_webui_beautifulprompt: beautifulprompt extension performs stable diffusion automatic prompt engineering on a bro…