【MySQL的DQL查询语句】

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.mzph.cn/news/194623.shtml

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

相关文章

Java+springboot+avue医院绩效考核系统源码支持二次开发

公立医院改革要求建立公立医疗卫生机构绩效考核体系,借助绩效考核来引导各级公立医院把社会效益摆在首位,提高医疗服务质量,规范医疗服务行为,加强医院内部管理,促进医院高质量发展 医院绩效考核系统,建立以…

python 运用pandas 库处理excel 表格数据

文章目录 读取文件查看数据数据选择数据筛选创建新列计算并总结数据分组统计 读取文件 Pandas 是一个强大的数据分析库,它提供了丰富的数据结构和数据分析工具,其中之一是用于读取不同格式文件的 read_* 函数系列。以下是一个简单介绍如何使用 Pandas 读…

Siemens-NXUG二次开发-C/C++/Python环境配置[20231204]

Siemens-NXUG二次开发-C/C/Python运行方式[20231204] 1.NX/UG C/C/Python API官方开发文档2.运行方式2.1内部模式2.2 外部模式2.3 许可证书服务器启动 3.C/C环境配置4.Python环境配置5.第三方环境配置 1.NX/UG C/C/Python API官方开发文档 西门子NX/UG Python api开发文档&…

Spring学习笔记:Day2

昨天定的学习计划发现通过文心4.0来实现不靠谱,坑太多,今天开始跟随B站进行学习,争取10-15天学习一遍,冲啊! 地址:001-课程介绍_哔哩哔哩_bilibili 今日规划: pt 001 - pt 018,提到…

小心处理 C++ 静态变量中的陷阱

小心处理 C 静态变量中的陷阱 函数中的 static 变量 static 变量的作用 C 中 static 关键字的最后一个用途是在函数内创建局部变量,这些变量在其作用域内退出和进入时保持其值。函数内的 static 变量类似于只能从该函数访问的全局变量。static 变量的一个常见用途…

【UGUI】实现背包的常用操作

1. 添加物品 首先,你需要一个包含物品信息的类,比如 InventoryItem: using UnityEngine;[CreateAssetMenu(fileName "NewInventoryItem", menuName "Inventory/Item")] public class InventoryItem : ScriptableObje…

网工学习7-配置 GVRP 协议

7.1GARP概述 GARP(Generic Attribute Registration Protocol)是通用属性注册协议的应用,提供 802.1Q 兼容的 VLAN 裁剪 VLAN pruning 功能和在 802.1Q 干线端口 trunk port 上建立动态 VLAN 的功能。 GARP 作为一个属性注册协议的载体,可以用来传播属性…

游泳馆会员服务预约管理系统预约小程序效果如何

游泳馆在各地每天都有大量用户前往,夏季室外、冬季室内也是学习游泳技术和休闲娱乐的好地方,而消费者大多是年轻人和家长带的孩子,这部分群体更显年轻化,因此在如今互联网环境下,传统商家需要进一步赋能客户消费路径。…

【Vue】Vue CLI 脚手架(Vue Command Line Interface)安装教程(通过npm)

前言 Vue CLI(Vue Command Line Interface)是一个基于Vue.js的官方脚手架工具,用于快速搭建和管理Vue.js项目。它提供了一套完整的开发工具和配置,包括项目初始化、开发服务器、热重载、构建和打包等功能。 Vue CLI使用了Webpac…

自动驾驶学习笔记(十三)——感知基础

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 传感器 测距原理 坐标系 标定 同…

2023/12/3总结

RabbitMq 消息队列 下载地址RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ 使用详情RabbitMQ使用教程(超详细)-CSDN博客 实现延迟队列(为了实现订单15分钟后修改状态) 1 死信队列 当一个队列中的消息满足下列情况之一时&…

【risc-v】易灵思efinix FPGA riscv 时钟配置的一些总结

系列文章目录 分享一些fpga内使用riscv软核的经验,共大家参考。后续内容比较多,会做成一个系列。 本系列会覆盖以下FPGA厂商 易灵思 efinix 赛灵思 xilinx 阿尔特拉 Altera 本文内容隶属于【易灵思efinix】系列。 文章目录 系列文章目录前言一、pan…

为何要3次握手?TCP协议的稳定性保障机制

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

操作系统·存储器管理

根据冯诺依曼原理,程序必须先存储在内存中,才可以执行。 在多道程序并发执行的系统存储器管理非常重要。 5.1 存储器管理的功能 5.1.1 主存分配与回收 要完成内存的分配和回收工作,要求设计者选择和确定几种策略和结构: 1.调入…

STM32F407-14.3.10-01PWM模式

PWM 模式 脉冲宽度调制模式可以生成一个信号,该信号频率由 TIMx_ARR⑩ 寄存器值决定,其占空比由 TIMx_CCRx⑤ 寄存器值决定。 通过向 TIMx_CCMRx 寄存器中的 OCxM⑰ 位写入 110 (PWM 模式 1)或 111 (PWM 模式 2&#…

SpringCloud简介和用处

Spring Cloud是一套基于Spring Boot的微服务框架,它旨在提供一种快速构建分布式系统的方法。它可以帮助开发人员构建具有高可用性、可扩展性和容错性的微服务,并通过Spring Boot的开发工具和库提供强大的支持。 一、简介 Spring Cloud是Spring家族中的一…

React如何像Vue一样将css和js写在同一文件

如果想在React中想要像Vue一样把css和js写到一个文件中,可以使用CSS-in-JS。 使用CSS-in-JS 下载 npm i styled-components使用 就像写scss一样,不过需要声明元素的类型 基本语法及展示如下, import styled from "styled-component…

周周清(1)

项目进度&#xff1a; 最近一直在搭建环境&#xff0c;都没写什么&#xff1a;登陆页面采用登陆注册在同一个界面&#xff0c;用v-if进行渲染&#xff0c;并且借助validation插件中的yup神器进行校验&#xff0c; <script setup> // import { ref } from vue import * …

Qt配置OpenCV(MSVC编译)

目录 1.准备工具 1.1 Qt&#xff1a;5.14.2 64位 1.2 Opencv&#xff1a;4.6.0 1.3 Visual Studio 2017 2. QtMSVC开发环境搭建 3. 配置环境变量 3.1 Opencv环境变量配置 4. Qt 代码测试 1.准备工具 1.1 Qt&#xff1a;5.14.2 64位 1.2 Opencv&#xff1a;4.6.0 官…

数据库-PostgreSQL学习笔记

目录 PostgreSQL介绍与安装docker安装腾讯云免费领用1个月 数据库操作连接数据库实例创建数据库查看数据库列表使用数据库删除数据库修改数据库属性 表操作字段类型整数浮点数日期与时间类型字符串类型 DDLCREATEDROPALTER DMLINSERTUPDATEDELETE 查询查询所有数据查询部分列指…