mysq,数据库的综合查询

记录一下数据库综合查询,复习加深印象

创建教学数据库中包含四个基本表:

  • 教师情况表Teacher(Tno 教师号,TName 教师名,TDept 教师所在的院系);
  • 课程基本表Course(Cno 课号,Cname 课名,cpno 先修课号 , Tno 教师号);
  • 学生情况表Student(Sno学号,Sname 姓名,Sage 年龄,Sex 性别,sdept 所在的院系);
  • 学生成绩基本表SC 学生课程表(Sno 学号,Cno 课号,Grade 成绩);
  1. -- 删除表
    DROP TABLE IF EXISTS Student;
    -- 创建表
    CREATE TABLE Student(
    Sno CHAR(9) PRIMARY KEY,-- 学号 主键
    Sname VARCHAR(20) NOT NULL,-- 姓名 非空且唯一
    Sage INT NOT NULL,-- 年龄
    Sex VARCHAR(5) NOT NULL,-- 性别
    Sdept VARCHAR(10) NOT NULL -- 所在系
    )charset=utf8;-- 删除表
    DROP TABLE IF EXISTS Course;
    -- 创建表
    CREATE TABLE Course(
    Cno CHAR(5) PRIMARY KEY,-- 课程号 主键
    Cname VARCHAR(20) NOT NULL ,-- 课程名 非空
    Cpno CHAR(5) ,-- 先行课号
    Tno VARCHAR(5) -- 教师号
    )charset=utf8;-- 删除表
    DROP TABLE IF EXISTS Teacher;
    -- 创建表
    CREATE TABLE Teacher(
    Tno  VARCHAR(5) PRIMARY KEY,-- 教师号 主键
    Tname VARCHAR(20) NOT NULL ,-- 教师名 非空
    Tdept VARCHAR(20) NOT NULL -- 教师号
    )charset=utf8;-- 删除表
    DROP TABLE IF EXISTS SC;
    -- 创建表
    CREATE TABLE SC(
    Sno CHAR(9),-- 学号 主键
    Cno CHAR(5),-- 课程号 主键
    Grade INT NOT NULL, -- 成绩
    foreign key(Sno) references Student(Sno),
    foreign key(Cno) references Course(Cno)
    )charset=utf8;

    如果需要外键约束,额外添加即可,避免在后续sql删除修改语句中报错

  • alter table course add foriegn key(Cpno) references course(Cno);

  • alter table course add foreign key(Tno) references teacher(Tno);

  • alter table sc add foreign key(Sno) references student(Sno);

  • alter table sc add foreign key(Cno) references course(Cno);

  • 添加表信息

  1. 练习24个SQL语句,经过验证,都是正确能够运行的

1. 查询所有女同学的姓名和年龄;

SELECT Sname,Sage FROM student where Sex = '女';

2. 查询计算机系教师开设的所有课程的课号和课名;

 SELECT Cname,Cno FROM Course
WHERE Tno IN (SELECT Tno FROM Teacher WHERE Tdept = '计算机系');

3. 查询所有女同学所选课程的课程号;

SELECT Cno FROM sc WHERE Sno IN (SELECT Sno FROM student WHERE Sex = '女');

4. 查询至少有一门课程的成绩高于90分的学生的姓名和年龄;

SELECT Sname,Sage
FROM student WHERE Sno IN (SELECT Sno FROM sc WHERE Grade > 90);

5. 查询选修“数据库原理“的所有学生的姓名和成绩;

两种方式:
SELECT student.Sname,sc.Grade FROM student
JOIN sc ON student.Sno = sc.Sno
JOIN course ON sc.Cno = course.Cno
WHERE Cname = '数据库原理';SELECT student.Sname,sc.Grade
FROM student,sc,course
WHERE student.Sno = sc.Sno AND sc.Cno = course.Cno AND Cname = '数据库原理';​

6. 查询未选修“VB设计“的学生的学号和姓名;

SELECT Sno,Sname
FROM Student
WHERE Sno IN (SELECT Sno FROM scWHERE Cno NOT IN (SELECT Cno FROM course WHERE Cname = 'VB设计'));

7. 查询不是计算机系教师所讲授的课程的课名和课号;

SELECT Cname,Cno FROM Course
WHERE	Tno NOT IN (SELECT Tno FROM Teacher WHERE	Tdept = '计算机系');

8. 查询未选修“21“号课的学生的学号和课号;

SELECT student.Sno,Cno FROM student,sc WHERE student.Sno=sc.Sno and Cno !='21';

9. 查询年龄在18~20岁(包括20和18)之间的所有学生的信息;

SELECT * FROM student WHERE	Sage >= 18 AND Sage <= 20;
SELECT student.* FROM student WHERE Sage BETWEEN 18 AND 20;

10. 查询至少选修“21“和”41“两门课程的学生的学号;

SELECT	Sno FROM sc WHERE Cno IN ('21', '41')
GROUP BY Sno HAVING COUNT(DISTINCT Cno) >= 2;

11. 查询选修楚梁老师所讲授课程的学生的学号和成绩

SELECT Sno,Grade FROM sc
WHERE Cno IN (SELECT Cno FROM	course WHERE Tno IN (SELECT Tno FROM teacher WHERE	Tname = '楚梁'));

12. 查询至少选修了两门课程的学生的学号

SELECT Sno FROM sc WHERE Cno 
GROUP BY Sno HAVING COUNT(DISTINCT Cno) >= 2;

13. 查询选修高等数学课程的人数

SELECT	count(Sno) AS 人数 FROM sc
WHERE Cno IN (SELECT Cno FROM	Course WHERE Cname = '高等数学') 

14. 查询高等数学课程的平均分

SELECT avg(Grade) AS 高等数学平均分FROM sc WHERE Cno IN (SELECT Cno FROM Course WHERE Cname = '高等数学');

15. 查询黑姓的所有学生的姓名、年龄和性别

SELECT Sname,Sage,Sex FROM student WHERE Sname LIKE '黑%';

16. 查询学号比‘绯红女巫’同学大而年龄比他小的学生姓名

SELECT Sname FROM Student
WHERE Sno > (SELECT Sno FROM	student WHERE Sname = '绯红女巫'
)
AND Sage < (SELECT Sage FROM student WHERE Sname = '绯红女巫'
);

17. 查询年龄大于所有女同学平均年龄的男学生的姓名和年龄

SELECT Sname,Sage FROM student
WHERE Sage > (SELECT avg(Sage)FROM student WHERE Sex = '女')
AND Sex = '男'; 

18. 查询只选了一门课程的学生的学号

SELECT Student.Sno FROM Student
JOIN SC ON Student.Sno = SC.Sno
GROUP BY Student.Sno HAVING COUNT(SC.Cno) = 1;

19. 将每一门课程的成绩均大于等于80分的学生的学号、姓名和性别插入到另一个已经存在的基本表STU(Sno,SNAME,SEX)中

CREATE TABLE STU (Sno CHAR (9) PRIMARY KEY,-- 学号 主键SNAME VARCHAR (20) NOT NULL,-- 姓名 非空且唯一SEX VARCHAR (5) NOT NULL -- 性别
) charset = utf8;
INSERT INTO STU (Sno, SNAME, SEX) SELECTstudent.Sno,student.Sname,student.Sex
FROM student
WHERE student.Sno IN (SELECT sc.Sno FROM sc GROUP BY sc.Sno HAVING MIN(sc.Grade) >= 80);

20. 将英语课程的任课教师号修改为412

UPDATE teacher SET Tno = 413
WHERE Tno IN (SELECT Tno FROM	course WHERE Cname = '四级英语');

21. 将低于总平均成绩的女同学的成绩提高5%

UPDATE sc
SET Grade = Grade * 1.05
WHERE Sno IN (SELECT Sno	FROM student WHERE Sex = '女')
AND Grade < (SELECT avg_grade FROM(SELECT	avg(Grade) AS avg_gradeFROM	sc) AS avg_G
);

22. 从基本表Course中删除白墨老师的任课信息

update  course	set Tno=null
WHERE course.Tno IN (SELECT Tno FROM	teacher WHERE Tname = '白墨'); DELETE FROM course where Tno  =(Select Tno from teacher WHERE Tname='白墨');
​

23. 查询至少讲授两门课程的教师姓名和其所在的系

SELECT Tname,Tdept
FROM teacher left JOIN course ON teacher.Tno = course.Tno
GROUP BY Tname,Tdept HAVING COUNT(Cno) >= 2;

24. 查询计算机系的所有老师

SELECT * FROM teacher WHERE Tdept = '计算机系';

结语

外键约束的问题请查看

mysql,用sql语句,建立学生-课程数据库基本表_sql创建学生表-CSDN博客

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

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

相关文章

优秀的技术管理者,每天应该做些什么事?

优秀的技术管理者每天应该做些什么事情&#xff1f;这是一个很重要的问题&#xff0c;因为技术管理者的日常工作直接影响着团队的效率和成果。下面我将从几个方面探讨优秀的技术管理者每天应该做些什么事情。 首先&#xff0c;优秀的技术管理者应该关注团队的目标和战略。他们…

设计大咖亲授:Figma中文环境设置全攻略!

作为UI设计师&#xff0c;你一定很熟悉Figma&#xff0c;Figma是一款专注于UI/UX设计的在线协作工具&#xff0c;使用非常高效方便&#xff0c;不需要下载和安装。它只需要通过浏览器编辑&#xff0c;在国外很受欢迎。但是Figma对于国内的小伙伴来说&#xff0c;使用Figma有一定…

机器学习算法-集成学习

概念 集成学习是一种机器学习方法&#xff0c;它通过构建并结合多个机器学习器&#xff08;基学习器&#xff09;来完成学习任务。集成学习的潜在思想是即便某一个弱分类器得到了错误的预测&#xff0c;其他的弱分类器也可以将错误纠正回来。集成学习通常被视为一种元算法&…

优秀智慧园区案例 - 新华三未来工厂制造园,园区业务创新及零碳升级

目录 一、新华三未来工厂制造园建设背景 二、未来工厂制造园总体设计思路 三、未来工厂制造园建设内容 四、关键技术及创新点 五、应用效益与推广 关键词&#xff1a;智慧园区解决方案&#xff0c;智慧园区建设总体方案&#xff0c;智慧园区建设规划方案&#xff0c;智慧园…

GZ038 物联网应用开发赛题第7套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 &#xff08;第7套卷&#xff09; 工位号&#xff1a;______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具&#xff0c;操作安全规范&#xff1b; 2、竞赛过程中如有异议&#xff0c;可向现场考评…

英语学习(描述他人篇)

一、描述某个您所认识的人 1.词汇 1.1(在描述人的身体时&#xff0c;我们通常回谈到身高和体重。需要注意的时&#xff0c;说人 fat 或者 overweight 往往被视为不礼貌的。不过在对人进行描述时&#xff0c;overweight 一词不礼貌的成都稍轻&#xff09; 1&#xff09;tall …

当我只有一个代理,我该如何从内网搭建一个docker环境

1.环境&#xff1a; 1) 内网docker服务器&#xff1a;192.168.123.1&#xff0c;操作系统为&#xff1a;redhat 7.9 2) 代理服务器(可通外网)&#xff1a;192.168.110.2&#xff0c;操作系统为&#xff1a;redhat 7.92.代理配置 代理在这里我们使用的nginx,主要用于正向代理&…

SpringBoot文件在线预览实现

kkFileView - 在线文件预览&#xff0c;一款成熟且开源的文件文档在线预览项目解决方案。 详细wiki文档&#xff1a;https://gitee.com/kekingcn/file-online-preview/wikis/pages 中文文档&#xff1a;https://gitee.com/kekingcn/file-online-preview/blob/master/README.md…

激活函数的本质

激活函数&#xff08;Activation Function&#xff09; 是神经网络中的一种函数&#xff0c;它接受一个输入&#xff08;通常是神经元的加权和&#xff09;并产生一个输出作为神经元的最终输出。激活函数的作用是引入非线性性&#xff0c;使神经网络能够学习复杂的模式和关系。…

Actipro Software WPF Controls 23.1.3

Actipro Software WPF Controls v23.1.3 Actipro Software 为 Microsoft 提供软件组件和 .NET 平台。它位于克利夫兰&#xff0c;重点主要是提供高质量的用户界面软件组件以及客户的过程&#xff0c;以便他们有能力信任&#xff0c;以便为用户应用程序添加强大的功能。自 .NET…

EasyHttp 更新功能 form类型post + 限制次数

场景 easyHttp gitte 很高兴帮到您 点一个star 支持一下作者吧 之前的easyHttp只支持json类型post请求&#xff0c;而且有些接口有限制次数的&#xff0c;在循环调用过程中&#xff0c;容易出现突破限制的情况&#xff0c;现在我们引入了限制次数&#xff0c;例如一分钟6次&…

RT1170的ITM SWO配置,实现printf输出及PC指针的采样分析

最近公司准备启动一个新的项目&#xff0c;使用NXP的MIMXRT1170芯片作为主控&#xff0c;在熟悉芯片的过程中发现RT1176具备ITM和SWO功能模块&#xff0c;于是针对之前项目中因工程庞大导致调试困难的问题&#xff0c;决定使用SWO输出调试信息&#xff0c;这样既可以节省硬件的…

04 jenkins中使用各种变量(Powershell、cmd)

批处理中使用jenkins内部和变量插件定义的环境变量&#xff1a;%WORKSPACE%Powershell插件中使用jenkins内部环境变量&#xff1a;${ENV:WORKSPRACE}Powershell函数内部使用函数入参&#xff1a;$($dllname)Powershell中定义变量&#xff1a;$DllNamePowershell中使用powershel…

掌握这11点外贸知识,能够给你外贸工作带来很大提升!

01.产品展示 关于产品展示&#xff0c;非常重要也一再提及&#xff0c;一个好的产品必须包括以下几部分&#xff1a; ● 产品标题准确概括产品&#xff1b; ● 产品图片清晰且包括细节图&#xff1b; ● 提供详尽的产品描述&#xff0c;比如型号、尺寸、材质、配件等等。最好…

Collectors.groupingBy方法的使用

Collectors.groupingBy方法的使用 简单使用 业务场景&#xff1a;现在有5个人&#xff0c;这些人都年龄分部在18-30岁之间。现要求把他们按照年龄进行分组 key&#xff1a;年龄 value&#xff1a;数据列表 package com.liudashuai;import java.util.Arrays; import java.uti…

Linux上C++通过LDAP协议使用kerberos认证AES加密连接到AD服务器

一.前言 记录自己在实现这个流程遇到的各种问题&#xff0c;因为我也是看了许多优质的文章以及组内大佬的帮助下才弄成的&#xff0c;这里推荐一个大佬的文章&#xff0c;写的非常优秀&#xff0c;比我这篇文章写得好得很多&#xff0c;最后我也是看这个大佬的代码最终才实现的…

经典文献阅读之--Fast and Robust Ground Surface Estimation...(均匀B样条采样快速估计地平面)

0. 简介 对于激光雷达的地面估计分割&#xff0c;目前其实有很多方法做了快速并鲁棒的分割&#xff0c;比如说我们之前写的一篇《经典文献阅读之–FEC》一文中就给出了快速分割的方案&#xff0c;当中第一步就是需要对地面进行分割。而我们这次看的是一篇使用均匀B样条的方法来…

H5三网魔幻手游【众神传奇】win服务端+GM授权后台+架设教程

搭建资源下载地址&#xff1a;H5三网魔幻手游【众神传奇】win服务端GM授权后台架设教程-海盗空间

C++ 类型转换static_cast、dynamic_cast、const_cast、reinterpret_cast用法以及区别

在C++中,有四种主要的类型转换操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。它们各自用于不同的转换场景,并有不同的行为和限制。 static_cast: 用于进行静态类型转换,主要用于相关类型之间的转换,例如数值类型之间的转换、基类到派生类的转换(在安…

(八)Spring源码解析:Spring MVC

一、Servlet及上下文的初始化 1.1> DispatcherServlet的初始化 对于Spring MVC来说&#xff0c;最核心的一个类就是DispatcherServlet&#xff0c;它负责请求的行为流转。那么在Servlet的初始化阶段&#xff0c;会调用init()方法进行初始化操作&#xff0c;在DispatcherSe…