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有一定…

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

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

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

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

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…

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;这样既可以节省硬件的…

掌握这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授权后台架设教程-海盗空间

(八)Spring源码解析:Spring MVC

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

【Python3】【力扣题】268. 丢失的数字

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;哈希。元素去重&#xff0c;依次判断是否在0-n内&#xff0c;没有则返回。 知识点&#xff1a;set(...)&#xff1a;转为集合&#xff0c;集合中的元素不重复。 class Solution:def mis…

Angular 使用教程——基本语法和双向数据绑定

Angular 是一个应用设计框架与开发平台&#xff0c;旨在创建高效而精致的单页面应用 Angular 是一个基于 TypeScript 构建的开发平台。它包括&#xff1a;一个基于组件的框架&#xff0c;用于构建可伸缩的 Web 应用&#xff0c;一组完美集成的库&#xff0c;涵盖各种功能&…

OpenCV图像坐标系

绘制代码: X轴 # 选取两个点 point1 = (20, 0) point2 = (200, 0)# 在图像上绘制连接线 cv2.line(img, point1, point2, (

2023.11.12使用flask对图片进行黑白处理(base64编码方式传输)

2023.11.12使用flask对图片进行黑白处理&#xff08;base64编码方式传输&#xff09; 由前端输入图片并预览&#xff0c;在后端处理图片后返回前端显示&#xff0c;可以作为图片处理的模板。 关键点在于对图片进行base64编码的转化。 使用Base64编码可以更方便地将图片数据嵌入…

2023前端流行的新技术

作为2023年之前的技术水平有限&#xff0c;以下是一些目前为止较为热门的前端开发技术和趋势&#xff0c;这些技术可能在2023年之前进一步发展和普及。 前端程序员可以考虑学习和掌握以下技术&#xff1a; 1.Vue 3和React Hooks&#xff1a;Vue.js和React是目前最受欢迎的JavaS…

人工智能基础_机器学习027_L2正则化_岭回归_非稀疏性_原理解读_公式推导---人工智能工作笔记0067

然后我们再来看一下岭回归,也就是第二范数对吧, 他的公式,平方以后,加和然后开平方.L2的公式是 可以看到L2公式,也是有个阿尔法,惩罚项对吧. 可以看到因为L2带有平方,所以他的图形是个圆形 我们可以把L2范数,进行画出来看看 这里我们先看L2的公式,这里我们让 这个公式写成1 …