【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 占位
  • 复习
    • updata 语句 更新语句 delete 语句 删除语句
    • 主键 ,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 语句 更新语句 delete 语句 删除语句

-- 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.rhkb.cn/news/209805.html

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

相关文章

今日实施|解读新国标对数据库审计的能力要求

数据库审计是数据安全建设不可或缺的技术工具之一,无论是国家级的法律或标准,还是等保以及行业级的安全标准均对使用数据库审计有明确要求。据相关数据统计显示,数据库审计产品的市场需求已占据中国数据库安全市场容量的6成以上。 12月1日&am…

rabbitMQ镜像队列的使用

在rabbitMQ集群中,默认发送消息时,队列默认时在一个节点上存在的。 我们以node01 node02 node03三节点集群为例,在node01声明队列发送消息后,发现: 测试队列只在节点node01上出现。 我们手动停止node01后&#xff0c…

为什么Nginx被称为反向代理

下图显示了 𝐟𝐨𝐫𝐰𝐚𝐫𝐝 𝐩𝐫𝐨𝐱𝐲 和 𝐫𝐞𝐯𝐞𝐫𝐬&#…

有哪些可信的SSL证书颁发机构?

目前市面上所显示的SSL证书颁发机构可所谓不计其数,类型也是多样,就好比我们同样是买一件T恤,却有百家不同类型的店铺一个道理。根据CA里面看似很多,但能拿到99%浏览器及设备信任度的寥寥无几,下面小编整理出几家靠谱可…

Day50力扣打卡

打卡记录 三个无重叠子数组的最大和 链接 滑动窗口 class Solution:def maxSumOfThreeSubarrays(self, nums: List[int], k: int) -> List[int]:n, ans len(nums), []sum1 sum2 sum3 0maxsum1idx, maxsum12idx 0, ()maxsum1 maxsum12 total 0for i in range(2 * …

Ubuntu Server 20.04.6下Anaconda3安装Pytorch

环境 Ubuntu 20.04.6 LTS Anaconda3-2023.09-0-Linux-x86_64.sh conda 23.7.4 Pytorch 1.11.0 安装 先创建一个工作环境,环境名叫lia: conda create -n lia python3.8环境的使用方法如下: conda activate lia # 激活环境 conda deactiv…

centos7 设置静态ip

文章目录 设置VMware主机设置centos7 设置 设置VMware 主机设置 centos7 设置 vim /etc/sysconfig/network-scripts/ifcfg-ens33重启网络服务 service network restart检验配置是否成功 ifconfig ip addr

用python写一个简单的爬虫

爬虫是一种自动化程序,用于从互联网上获取数据。它能够模拟人类浏览网页的行为,访问网页并提取所需的信息。爬虫在很多领域都有广泛的应用,例如数据采集、信息监控、搜索引擎索引等。 下面是一个使用Python编写的简单爬虫示例: …

【蓝桥杯】带分数

带分数 题目要求用一个ab/c的形式得到一个值&#xff0c;而且只能在1~9里面不重复的组合。 可以对1~9进行全排列&#xff0c;然后不断划分区间。 #include<iostream> #include<vector> using namespace std; int st[15]; int num[15]; int res; int n;int calc(i…

SQL Server 数据库,创建数据表(使用T-SQL语句)

2.3表的基本概念 表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在电子表格中相似&#xff0c;都是 按行和列的格式组织的&#xff0c;每行代表一条唯一的记录&#xff0c;每列代表记录中的一个字段.例如&#xff0c;在包含公 司员工信息的表中&#xff0c;每行…

Echarts大屏可视化_05 折线图的定制开发

继续跟着pink老师学习Echarts相关内容&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 折线图1 1.引入 折线图选取示例地址 标题没有用到就给他删了 直接引入 注意这里是line下面的chart 获取dom元素一定不…

采集工具-免费采集器下载

在当今信息时代&#xff0c;互联网已成为人们获取信息的主要渠道之一。对于研究者和开发者来说&#xff0c;如何快速准确地采集整个网站数据是至关重要的一环。以下将从九个方面详细探讨这一问题。 确定采集目标 在着手采集之前&#xff0c;明确目标至关重要。这有助于确定采集…

Huawei FusionSphere FusionCompte FusionManager

什么是FusionSphere FusionSphere 解决方案不独立发布软件&#xff0c;由各配套部件发布&#xff0c;请参 《FusionSphere_V100R005C10U1_版本配套表_01》。 目前我们主要讨论FusionManager和FusionCompute两个组件。 什么是FusionCompte FusionCompute是华为提供的虚拟化软…

Ubuntu22.04 交叉编译mp4V2 for Rv1106

一、配置工具链环境 sudo vim ~/.bashrc在文件最后添加 export PATH$PATH:/opt/arm-rockchip830-linux-uclibcgnueabihf/bin 保存&#xff0c;重启机器 二、下载mp4v2 下载路径&#xff1a;MP4v2 | mp4v2 三、修改CMakeLists.txt 四、执行编译 mkdir build cd buildcmak…

现在的00后,实在是太卷了......

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里条…

万字长文带你搞定MMUTLBTWU

最近一直在学习内存管理&#xff0c;也知道MMU是管理内存的映射的逻辑IP&#xff0c;还知道里面有个TLB。 今天刚刚好看到了几篇前辈的文章&#xff0c;很是不错&#xff0c;于是这里来一起学习一下吧。 PART 一&#xff1a;MMU 架构篇 MMU&#xff08;Memory Management Uni…

你好!斐波那契查找【JAVA】

1.有幸遇见 斐波那契查找算法&#xff0c;也称黄金分割查找算法&#xff0c;是一种基于斐波那契数列的查找算法。与二分查找类似&#xff0c;斐波那契查找也是一种有序查找算法&#xff0c;但它的查找点不是中间位置&#xff0c;而是根据斐波那契数列来确定&#xff0c;因此又称…

JS生成登录验证码

采用js生成登录的验证码 采用的技术点有html&#xff0c;css&#xff0c;JS&#xff0c;jQuery HTML&#xff1a; <div class"box_b"><img src"./img/0775639c-c82c-4a29-937f-d2a3bae5151a.png" alt""><div class"regist…

Java面试题(每天10题)-------连载(41)

目录 Spring篇 1、什么是Spring框架&#xff1f;Spring框架主要有哪些模块&#xff1f; 2、使用Spring框架能带来哪些好处&#xff1f; 3、什么是控制反转&#xff08;IOC&#xff09;&#xff1f;什么是依赖注入&#xff1f; 4、解释下Spring中的IoC? 5、BeanFactory和…

YOLOv8改进有效涨点 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…