Linux运维:mysql高级查询语句(2)

目   录

一、创建数据库:

二、创建表结构:DDL

2.1 学生表s:

2.2 成绩表sc:

2.3 课程表c:

三、录入数据:DML

3.1 对学生表s的数据录入:

3.2 对成绩表sc的数据录入:

3.3 对课程表c的数据录入:

3.4 通过插入数据,有以下三张表:

四、查询:

4.1 同时选修了c04和c05的同学的学号

4.2 查询选修了“高等数学”的学生的学号和姓名

4.2.1 嵌套查询,多表查询(三张表)

4.2.2 连接三张表

4.3 查询没有选课的学生的学号和姓名

4.4 查找只有男同学选修的课程的课程号

4.5 查询年龄比“吴俊”大的男同学的学号和年龄

4.6 查询选修了"c04"课程的学生中,成绩比”李露“高的学生的学号和成绩

4.7 查询和“孙晓英”在同一个班级的学生的学号、姓名和所在班级

4.8 查询学生表中比“19电商1”班所有学生年龄都小的学生的学号和年龄

4.9 查询学生表中比“19电商1”班某个学生年龄小的学生的学号和年龄

4.10 查询选修c04成绩最高分学生的学号和成绩

4.11 聚合函数

4.11.1 count计数

4.11.2 去重计数

4.11.3 求和

4.11.4 最高分

4.11.5 平均值


现有教务管理系统的数据库。存放学生的信息。创建数据库jwgl。创建三张表:学生表s,课程表c,成绩表sc。安装数据库,使用图形化界面navicat。

一、创建数据库:

create database jwgl;

二、创建表结构:DDL

2.1 学生表s:

create table s(
        sno varchar(8) primary key,
        sname varchar(10),
        ssex varchar(5),
        sage int,
        sclass varchar(10),
        jg varchar(10)
);

 选中,右击,运行已选择的。

2.2 成绩表sc:

create table sc (
        sno varchar(10),
        cno varchar(10),
        score int
);

2.3 课程表c:

create table c (
        cno varchar(5) primary key,
        cname varchar(255),
        precid varchar(255),
        cpro varchar(255),
        credit int
);

2.4 查看表结构:

desc s;     desc sc;     desc c;

三、录入数据:DML

3.1 对学生表s的数据录入:

varchar类型的要用引号引起来

insert into 插入数据,s是表,values是值。如果给某些字段添加值(主键必须有值),那么:

insert into s(字段1,字段2) values(字段1的值,字段2的值);  要一一对应起来,如果s表中不写字段,那么值values中必须添加所有的值。

查看select * from s;

3.2 对成绩表sc的数据录入:

insert into sc values("060101","c01",91);

查看表数据:select * from sc;

3.3 对课程表c的数据录入:

insert into c values("c01","高等数学","","公共必修",4);

查看表数据:select * from c;

3.4 通过插入数据,有以下三张表:

学生表:

成绩表:

课程表:

四、查询:

4.1 同时选修了c04和c05的同学的学号

分析:查询的结果是显示学号,课程号和学号,是要在成绩表中查询,并且是选修了c04和c05课程的学号。查出学号,所以是select sno。可以先查出选修了c04课程的学号,且(and)在这些学号中在查出选修c05课程的学号。在成绩表中也可以很清晰的看出选修了c04和c05课程的只有060101学号。语句:

select sno from sc where cno = "c05" and sno in(select sno from sc where cno = "c04");

也可以使用连接的方式:连接sno。

select a.sno from sc a join sc b on a.sno = b.sno where a.cno = "c04" and b.cno = "c05";

4.2 查询选修了“高等数学”的学生的学号和姓名

4.2.1 嵌套查询,多表查询(三张表)

select sno 学号,sname 姓名 from s where sno in (
    select sno from sc where cno in (
        select cno from c where cname = "高等数学"
    )
);

从课程表中查出选修了高等数学的课程号。再根据课程号在成绩表查出学号。再利用学号在学生表中查出学号和姓名。

4.2.2 连接三张表

直接在三张表中查询,利用where语句连接三张表,并且课程表c中课程为高等数学。

select s.sno,sname
from s,c,sc
where s.sno=sc.sno and c.cno=sc.cno and cname='高等数学'; 

4.3 查询没有选课的学生的学号和姓名

distinct:去重

在成绩表中给课程号cno去重,查出cno。根据cno在学生表中查出不在这些cno中的学号和姓名。

select sno,sname
from s
where sno not in(select distinct sno from sc);

4.4 查找只有男同学选修的课程的课程号

查询男同学选修的课程的课程号。由于一个同学有多个课程,那么这个课程是有可能被女生选了的。不能保证选到的课程号只有男生选了。

需要在学生表中先查出女生的学号 并在成绩表中根据这个学号选出女生选的课程号。在反查出以外的课程号。

select cno from sc where cno not in(
select cno from sc where sno in(
select sno from s where ssex='女'));

4.5 查询年龄比“吴俊”大的男同学的学号和年龄

查询出年龄吴俊的年龄。在学生表中根据男生和比吴俊的年龄大的学生,的学号和年龄。

select sno,sage from s
where sage>(select sage from s where sname='吴俊') and ssex='男';

4.6 查询选修了"c04"课程的学生中,成绩比”李露“高的学生的学号和成绩

查询出李露的学号

并且学号是李露的,课程号是c04的成绩,(sc表)

根据这个成绩,比这个成绩高的学号和成绩。

select sno,score from sc where cno='c04' and score>(
        select score from sc where sno=(
                select sno from s where sname='李露') and cno='c04');

4.7 查询和“孙晓英”在同一个班级的学生的学号、姓名和所在班级

查出孙晓英的班级,根据班级查出学号和姓名和班级。

select sno,sname,sclass from s
where sclass=(select sclass from s where sname='孙晓英');

4.8 查询学生表中比“19电商1”班所有学生年龄都小的学生的学号和年龄

查出班级是19电商1的年龄,在学生表中年龄比查出的年龄都笑的学号和年龄。

select sno,sage from s
where sage<all(select sage from s where sclass='19电商1');

4.9 查询学生表中比“19电商1”班某个学生年龄小的学生的学号和年龄

这里是满足比查出的年龄小的即可,上一题是比查出的最小的还要小,也就是比查出所用的年龄都小。这里就是满足能够比查出的年龄小的就可以了,使用any。

select sno,sage from s
where sage<any(select sage from s where sclass='19电商1');

4.10 查询选修c04成绩最高分学生的学号和成绩

根据成绩降序排序,desc降序,asc升序,limit取第一个最高分。

select sno,score from sc 
where cno='c04' order by score desc limit 1;

4.11 聚合函数

4.11.1 count计数

select count(sno) 学生人数 from s;

select count(ssex) as 男生人数 from s where ssex='男';

统计有多少人选修了,对学号去重,并计数

select count(distinct sno) as 选课人数 from sc;

4.11.2 去重计数

统计有多少门课被选修了

select count(distinct cno) 被选课程数 from sc;

4.11.3 求和

求学生060101的总分数

select sum(score) as 总分 from sc where sno='060101';

4.11.4 最高分

找出课程c01的最高分。select max(score) as 最高分 from sc where cno='c01';

4.11.5 平均值

select avg(score) as 平均分 from sc where sno='060101';

由于c03课程没有成绩,在取平均数时只用三个值,故266/3为平均数。

---end---

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

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

相关文章

【MySQL】数据库——备份与恢复,日志管理1

一、数据备份的重要性 1.备份的主要目的是灾难恢复 在生产环境中&#xff0c;数据的安全性至关重要 任何数据的丢失都可能产生严重的后果造成数据丢失的原因&#xff1a; 程序错误人为,操作错误运算错误磁盘故障灾难&#xff08;如火灾、地震&#xff09;和盗窃 2.数据库备份…

【云原生】服务网格(Istio)如何简化微服务通信

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、微服务架构的兴起 2、Istio&#xff1a;服务网格的佼…

AI绘画Stable Diffusion 超强一键去除图片中的物体,免费使用!

大家好&#xff0c;我是设计师阿威 在生成图像时总有一些不完美的小瑕疵&#xff0c;比如多余的物体或碍眼的水印&#xff0c;它们破坏了图片的美感。但别担心&#xff0c;今天我们将介绍一款神奇的工具——sd-webui-cleaner&#xff0c;它可以帮助我们使用Stable Diffusion轻…

音乐:触动心灵的艺术语言

Enjoy your music 音 乐 作为一种跨越时空和文化的艺术形式&#xff0c;拥有着无穷的魅力和力量。 它不仅能够带给我们愉悦的听觉享受&#xff0c;还对我们的身心健康、认知发展和社会交往产生着深远的影响。 一、音乐的基本元素 音乐由多个基本元素构成&#xff0c;包括…

python-逻辑语句

if else语句 不同于C&#xff1a;else if range语句&#xff1a; continue continue的作用是&#xff1a; 中断所在循环的当次执行&#xff0c;直接进入下一次 continue在嵌套循环中的应用 break 直接结束所在的循环 break在嵌套循环中的应用 continue和break&#xff0c;在…

SAP AFAB 资产过账如何查看配置的对应的会计科目

首先查看资产AS03 科目定位码 T004 然后去找对应的科目 AO93

绘唐3一键追爆款文刻创作聚星文社

聚星文社是一个中国的文学社交平台&#xff0c;提供了一个让作家和读者相互交流和分享作品的平台。 在聚星文社&#xff0c;作家可以在平台上发布自己的作品&#xff0c;获得读者的阅读和评论&#xff0c;同时也可以与其他作家进行交流与学习。 点击下载即可 读者可以在平台上…

Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单

文章目录 一、SSO介绍1、使用SSO的好处 二、中间件介绍1、Express安装导入使用 2、cors安装导入配置 3、express-session安装导入配置使用 4、jsonwebtoken安装导入使用 5、jwt和session对比 三、SSO实现方案1、安装依赖2、结构3、实现原理 四、示例代码1、nodejs端 server/ind…

如何在AWS上使用免费的服务器

要在AWS上免费使用的服务器&#xff0c;你可以按照以下步骤操作&#xff1a; &#xff08;1&#xff09;注册AWS账户&#xff1a; 访问AWS官方网站&#xff08;https://aws.amazon.com/cn/&#xff09;&#xff0c;点击右上角的“完成注册”&#xff0c;按照页面提示填写相关…

谷粒商城篇章10 -- P262-P291/P295-P310 -- 订单服务(支付)【分布式高级篇七】

目录 1 页面环境搭建 1.1 静态资源上传到nginx 1.2 SwitchHosts增加配置 1.3 网关配置 1.4 订单模块基础配置 1.4.1 引入 thymeleaf 依赖 1.4.2 application.yml配置 1.4.3 bootstrap.properties配置 1.4.4 开启nacos注册发现和远程调用 1.5 修改各个页面的静态资源路…

配电房挂轨巡检机器人

配电房作为电网中的重要组成部分。其运行的的安全和稳定性直接影响到电力供应的质量。然而&#xff0c;传统的人工巡检模式存在诸多弊端&#xff0c;例如巡检效率低下、人员安全难以保障、巡检结果主观性强等问题。为了解决这些问题&#xff0c;旗晟机器人推出B3系列升降云台轨…

mst[讲课留档]

最小生成树(Minimum Spanning Tree) (1)概念 我们知道&#xff0c;树是有 n n n个结点&#xff0c; n − 1 n-1 n−1条边的无向无环的连通图。 一个连通图的生成树是一个极小的连通子图&#xff0c;它包含图中全部的 n n n个顶点&#xff0c;但只有构成一棵树的 n − 1 n-1 …

【C++】C++指针在线程中调用与受保护内存空间读取方法

引言 在C的多线程编程中&#xff0c;正确地管理内存和同步访问是确保程序稳定性和安全性的关键。特别是当涉及到指针在线程中的调用时&#xff0c;对受保护内存空间的访问必须谨慎处理&#xff0c;以防止数据竞争、死锁和内存损坏等问题。本文将详细探讨C指针在线程中调用时如何…

【stm32】大一上学期笔记复制

砌墙单片机 外设是什么&#xff1f; ipage 8 nx轴 128 X0-127 y0-63 PWM脉冲宽度调制 PWM脉冲宽度调制 2023年10月13日 基本特性&#xff1a;脉冲宽度调制PWM是一种对模拟信号进行数字编码的方法。广泛引用于电机控制&#xff0c;灯光的亮度调节&#xff0c;功率控制等领域…

人工智能--目标检测

欢迎来到 Papicatch的博客 文章目录 &#x1f349;引言 &#x1f349;概述 &#x1f348;目标检测的主要流程通常包括以下几个步骤 &#x1f34d;数据采集 &#x1f34d;数据预处理 &#x1f34d;特征提取 &#x1f34d;目标定位 &#x1f34d;目标分类 &#x1f348;…

调度器APScheduler定时执行任务

APScheduler&#xff08;Advanced Python Scheduler&#xff09;是一个Python库&#xff0c;用于调度任务&#xff0c;使其在预定的时间间隔或特定时间点执行。它支持多种调度方式&#xff0c;包括定时&#xff08;interval&#xff09;、日期&#xff08;date&#xff09;和Cr…

使用Git从Github上克隆仓库,修改并提交修改

前言 本次任务主要是进行github提交修改的操作练习实践&#xff0c;本文章是对实践过程以及遇到的问题进行的一个记录。 在此之前&#xff0c;我已经简单使用过github&#xff0c;Git之前已经下好了&#xff0c;所以就省略一些步骤。 步骤记录 注册github账号&#xff0c;gi…

C++ | Leetcode C++题解之第208题实现Trie(前缀树)

题目&#xff1a; 题解&#xff1a; class Trie { private:vector<Trie*> children;bool isEnd;Trie* searchPrefix(string prefix) {Trie* node this;for (char ch : prefix) {ch - a;if (node->children[ch] nullptr) {return nullptr;}node node->children[…

华为OD机试 - 表演赛游戏分组 - 动态规划(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测…

React-Redux

Redux 通常用于管理 React 应用程序的状态&#xff0c;特别是在大型和复杂的应用程序中。 在 React 应用程序中&#xff0c;组件的状态通常由组件自身管理。然而&#xff0c;当应用程序变得复杂时&#xff0c;状态管理可能会变得困难&#xff0c;因为需要在多个组件之间共享和同…