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.mzph.cn/bicheng/38629.shtml

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

相关文章

【Kaggle】Telco Customer Churn 电信用户流失预测案例

⭐️前言&#xff1a;案例学习说明与案例建模流程 我们将围绕Kaggle中的电信用户流失数据集&#xff08;Telco Customer Churn&#xff09;进行用户流失预测。在此过程中&#xff0c;将综合应用此前所介绍的各种方法与技巧&#xff0c;并在实践中提炼总结更多实用技巧。 ⭐️对…

期权交易指南:为什么要交易场外个股期权?

今天带你了解期权交易指南&#xff1a;为什么要交易场外个股期权&#xff1f;随着金融市场的发展和创新&#xff0c;投资者寻求更多的工具来管理风险和获得更高的回报。场外期权交易应运而生&#xff0c;成为一种重要的金融衍生品交易方式。 简单来说就是期权是一种合约&#…

Mysql 的账户管理,索引,存储引擎

目录 一.MySQL的账户管理 1.存放用户信息的表 2.查看当前使用的用户 3.新建用户 4.修改用户名称 5.删除用户 6.修改用户密码 7.破解密码 8. 远程登录 9.用户权限管理 9.1 权限类别 9.2 查看权限 9.3 授予权限 9.4 撤销权限 二.索引 1. 索引管理 1.1 查看索…

麒麟v10-sp3安装kkfileview

1、上传包到服务器 执行&#xff1a;/bin/startup.sh 会自动安装LibreOffice&#xff0c;因为/bin/install.sh判断了不是redhat-release就是ubuntu&#xff0c;导致麒麟系统会走ubuntu&#xff0c;所以会失败&#xff0c;这里改一下如果是麒麟也走install_redhat就可以了 也…

服务器日志事件ID4107:从自动更新 cab 中提取第三方的根目录列表失败,错误为: 已处理证书链,但是在不受信任提供程序信任的根证书中终止。

在查看Windows系统日志时&#xff0c;你是否有遇到过事件ID4107错误&#xff0c;来源CAPI2&#xff0c;详细信息在 http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab 从自动更新 cab 中提取第三方的根目录列表失败&#xff0c;…

【存储】相关内容

【存储】相关内容 1. 存储类型1. 块存储2. 文件存储3. 对象存储4. 三种存储类型对比 2. 常见的存储分类1. DAS2. SAN3. NAS4. 存储分类分析比较 3. 一些存储的概念1. LUN2. volume3. HBA4. iSCSI 1. 存储类型 块存储和文件存储是我们比较熟悉的两种主流的存储类型&#xff0c;…

解决OneDrive “拒绝访问文件” 问题

问题描述&#xff1a; 在尝试将其他文件拖入oneDrive或是打开OneDrive中的文件时。出现如下报错&#xff1a; 拒绝访问文件 无法访问XXXXXXX中的文件。可能已移动或删除了此文件&#xff0c;或者受制于文件权限而不能访问。 ERR_ACCESS_DENIED 解决办法&#xff1a; 1. 找到O…

JavaEE—什么是服务器?以及Tomcat安装到如何集成到IDEA中?

目录 ▐ 前言 ▐ JavaEE是指什么? ▐ 什么是服务器&#xff1f; ▐ Tomcat安装教程 * 修改服务端口号 ▐ 将Tomcat集成到IDEA中 ▐ 测试 ▐ 结语 ▐ 前言 至此&#xff0c;这半年来我已经完成了JavaSE&#xff0c;Mysql数据库&#xff0c;以及Web前端知识的学习了&am…

notepad++安装并打开json文件

1、notepad安装 1、首先下载Notepad.exe 2、选择简体中文安装 点击下一步 点击“我接受” 选择安装目录&#xff0c;进行下一步安装 默认下一步 选择安装 等待安装完成 点击完成 2、保存json文件 复制返回结果 先把返回结果复制出来。保存到text里面 把文件另存为json格式 3、…

安卓手机的自带录屏在哪里找?5个软件帮助你快速给手机录屏

安卓手机的自带录屏在哪里找&#xff1f;5个软件帮助你快速给手机录屏 在安卓手机上进行屏幕录制是一项非常实用的功能&#xff0c;特别是对于需要录制游戏操作、制作教程或演示的用户来说。虽然部分安卓手机可能已经预装了屏幕录制功能&#xff0c;但有时候这些功能可能隐藏在…

prometheus 安装node_exporter, node_exporter 安装最新版 普罗米修思安装监控服务器client

1. 本文介绍两种安装方式&#xff0c;一种安装为service,使用systemctl start node_exporter管理&#xff0c;第二种为安装docker内 容器内使用。 1.1 安装到系统内&#xff1a; 1.1.1 github地址&#xff1a; Releases prometheus/node_exporter GitHub ​ 1.1.2 下载命…

JS数据处理(冒泡寻找对象里面有个Key相同的值并处理相关数据)

1.需要处理成的数据格式 [{ mpptNumber: 1, list:[{checked: false,pvEnableStatus: 0,pvSerialNumber: 1,},{checked: false,pvEnableStatus: 0,pvSerialNumber: 2,}] }, { mpptNumber: 2, list:[{checked: false,pvEnableStatus: 0,pvSerialNumber: 1,},{checked: false,pvE…

【总线】AXI4第四课时:握手机制详解

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣&#xff0c;那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者&#xff0c;AXI4以其高性能和高度可扩展性&#xff0c;成为了现代电子系统中不可或缺的通信桥梁…

炎黄数智人:国家体育总局冬运中心——AI裁判与教练“观君”赋能冰雪运动新篇章

在科技创新的浪潮下&#xff0c;国家体育总局冬季运动管理中心&#xff08;以下简称“冬运中心”&#xff09;揭开了人工智能在体育领域应用的新篇章。隆重宣布推出革命性的AI裁判与教练系统——“观君”&#xff0c;该系统将在冰雪运动项目中大放异彩&#xff0c;为运动员的训…

Administrators就最高了???system是什么??本地用户提权内网学习第三天 你知道uac是什么??

我们今天来说说本地用户提权的操作&#xff0c;我们在有webshell过后我们要进行进一步的提权操作&#xff0c;要不然对我们后期的内网渗透会有一些阻碍的操作。比如说我们使用mimikatz来进行抓取密码&#xff0c;就不能够成功。 Administrators与system的区别 我们来说说Admin…

OpenBayes 教程上新 | CVPR 获奖项目,BioCLlP 快速识别生物种类,再也不会弄混小浣熊和小熊猫了!

市面上有很多植物识别的 App&#xff0c;通过对植物的叶片、花朵、果实等特征进行准确的识别&#xff0c;从而确定植物的种类、名称。但动物识别的 App 却十分有限&#xff0c;这使我们很难区分一些外形相似的动物&#xff0c;例如小浣熊和小熊猫。 左侧为小浣熊&#xff0c;右…

Springboot项目实训--day1

目录 一、软件安装 二、软件的简单了解 三、基础知识应用 1、四个常用注释 2、尝试新建类 3、控制反转&#xff08;IOC容器&#xff09; 4、返回数据给浏览器 5、浏览器传回数据给服务器 易错点 一、软件安装 需要安装的软件是idea专业版&#xff0c;刚使用的时候可以使…

3dmax如何制作全景图?渲染100邀请码1a12

全景图很常见&#xff0c;制作起来也简单&#xff0c;这里我给大家稍微分享下。 1、创建相机 打开要渲染全景的场景文件&#xff0c;创建相机并调整好位置。 2、 设置分辨率 按F10打开渲染设置界面&#xff0c;选择相机视口&#xff0c;在公用里设置宽度和高度&#xff0c;…

HarmonyOS开发探索:自定义键盘-webview

场景描述 在特殊的H5场景下需要应用拉起自定义键盘进行输入。 场景一&#xff1a;使用jsBridge拉起自定义弹窗写自定义键盘&#xff0c;再通过jsBridge传参实现输入。 场景二&#xff1a;使用web的同层渲染将原生textInput组件渲染到页面上。 方案描述 通过注册一个js代理…

Vue-element 组件dialog右上角点击 X 清空表单校验信息

问题&#xff1a; 点击确定触发校验后&#xff0c;点击弹窗右上角的 X号关闭弹窗后再次打开弹窗&#xff0c;校验规则没有被清空 解决方法&#xff1a;