MySQL实验

2023-05-16

表如下:
学院(学院代码,学院名称)
学生(学号,姓名,性别,学院代码)
教师(教师号,教师名,学院代码)
课程(课程号,课程名,学时)
学习(学号,课程号,教师号,成绩)
授课(教师号,课程号)

括号内是结果显示的字段

1.求选修了老师“王刚”开课课程且成绩在90分以上的学生姓名、课程名称和成绩;(姓名,课程名,成绩)

select 姓名, 课程名, 成绩
from exp.教师, exp.授课, exp.课程, exp.学生, exp.学习, exp.学院
where 教师.教师号 = 授课.教师号
and 授课.课程号 = 课程.课程号
and 学生.学号 = 学习.学号
and 学院.学院代码 = 学生.学院代码
and 成绩>="90"
and 教师名 = "王刚";

2.求选修了“王刚”老师所授全部课程的学生姓名和学院名称;(姓名,学院名称)

-- 重要!理解相关子查询的过程!
select 姓名, 学院名称
from exp.学生, exp.学院
where 学生.学院代码=学院.学院代码
and 学生.学号 in
(	select 学号
	from exp.学习
    where not exists
    (	select *
		from exp.教师, exp.授课
		where 教师.教师号=授课.教师号
        and 教师.教师名='王刚'
        and not exists
        (	select *
			from exp.学习 as 学习1
            where 学习1.课程号=授课.课程号
            and 学习1.学号=学习.学号
        )
    )
);

3.求没有选修课程“软件工程”的学生学号和姓名;(学生学号,姓名)

select distinct 学号, 姓名
from exp.学生
where not exists
(	select *
	from exp.课程, exp.学习
    where 课程.课程号=学习.课程号
    and 学习.学号=学生.学号
    and 课程.课程名='软件工程'
);	

4.求至少选修了两门课程的学生学号;(学号)

select 学生.学号
from exp.学生, exp.学习
where 学生.学号=学习.学号
group by 学习.学号
having count(课程号)>=2;

5.求课程“经济学”不及格学生姓名和考试成绩;(姓名,成绩)

select 姓名, 成绩
from exp.学生, exp.学习, exp.课程
where 学生.学号=学习.学号
and 学习.课程号=课程.课程号
and 课程名='经济学'
and 成绩<=60;

6.求至少选修了与学号“T06” 同学选修的课程相同的学生学号;(学号)

select distinct 学号		
from exp.学习 as 学习0
where not exists
(	select *
	from exp.学习 as 学习1
    where 学习1.学号='T06'
    and not exists
    (	select *
		from exp.学习 as 学习2
        where  学习2.课程号=学习1.课程号
		and 学习0.学号=学习2.学号
	)
);

7.求至少选修了“C3,C4”两门课程的学生姓名和学院名称;(姓名,学院名称)

select distinct 姓名, 学院名称
from exp.学生, exp.学院, exp.学习
where 学生.学院代码=学院.学院代码
and 学生.学号=学习.学号
and 课程号='C3'
and 学生.学号 in
(	select distinct 学习1.学号
	from exp.学习 as 学习1
    where 学习1.课程号='C4'
);

8.查询“王石”同学没有选修的课程号和课程名; (课程号,课程名)

select 课程号, 课程名
from  exp.课程
where not exists
(	select *
	from exp.学生, exp.学习
    where 学生.学号=学习.学号 
    and 课程.课程号=学习.课程号
    and 姓名='王石'
);

9.查询没有被任何学生选修的课程的课程号;(课程号)

select 课程号
from exp.课程
where 课程.课程号 not in
(	select 课程号
	from exp.学习
);

/*Q9 另外一种写法
select 课程号
from exp.课程
where not exists
(	select 课程号
	from exp.学习
    where 学习.课程号=课程.课程号
);*/

10.求选修了全部课程的学生姓名;(姓名)

select 姓名
from exp.学生
where not exists
(	select *
	from exp.课程
    where not exists
    (	select *
		from exp.学习
        where 学习.课程号=课程.课程号
        and 学习.学号=学生.学号
    )
);

11.查询各学院课程“经济学”的平均分,并按照成绩从高到低的顺序排列;(学院名称,平均分)

select 学院名称, avg(成绩) as 平均分
from exp.学院, exp.学生, exp.学习, exp.课程
where 学生.学号=学习.学号
and 学院.学院代码=学生.学院代码
and 课程.课程号=学习.课程号
and 课程名="经济学"
group by 学院名称
order by avg(成绩) desc;

12.查询选修课程“经济学”的学生姓名和所在院系,结果按各院系排列,同时成绩从高到低排列;(姓名,学院名称,成绩)

select 姓名, 学院名称, 成绩
from exp.学院, exp.学生, exp.学习, exp.课程
where 学生.学号=学习.学号
and 学院.学院代码=学生.学院代码
and 课程.课程号=学习.课程号
and 课程名="经济学"
order by 学院名称, 成绩 desc;

13.求学时在30-45之间(含30和45)的课程的课程号和课程名称及授课教师;(课程号,课程名,教师姓名)

select 课程.课程号, 课程名, 教师名
from exp.教师, exp.课程, exp.授课
where 教师.教师号=授课.教师号
and 课程.课程号=授课.课程号
and 学时 between 30 and 45;

14.检索选修课程“经济学”的最高分学生的姓名;(姓名)

select distinct 姓名
from exp.学生, exp.学习, exp.课程
where 学生.学号=学习.学号
and 课程.课程号=学习.课程号
and 课程名='经济学'
and 成绩 >= all
(	select 成绩
	from exp.学生, exp.学习, exp.课程
	where 学生.学号=学习.学号
	and 课程.课程号=学习.课程号
	and 课程名='经济学'
);

15.查询选课人数超过5人的课程的课程号及课程名;(课程号,课程名)

select 课程.课程号, 课程名
from exp.课程, exp.学习
where 课程.课程号=学习.课程号
group by 课程号
having count(学号)>5;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL实验 的相关文章

  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 在 MySQL 中存储表情符号的编码问题:如何使用 Prisma ORM 在 NodeJS 中定义字符排序规则?

    亲爱的 Nodejs 专家和数据库专家 我们在 MySQL 数据库中存储表情符号和其他特殊字符时遇到问题 我们使用 Prisma 得到一个错误 这是我们使用的 ORM 参数无法从排序规则 utf8 general ci 转换为 utf8mb
  • 从按日期时间排序的 MySQL 表中获取用户的最后一个条目

    我有一张看起来像这样的桌子 USERNAME DATA DATETIME Jhon text1 2010 06 01 16 29 43 Mike text2 2010 06 01 16 29 22 Silver text3 2010 05
  • 仅当值发生更改时如何插入数据库?

    我需要更新 替换 MySQL 数据库中的字段 但前提是它们已更改 该表包含 ID 文本字段和更改日期 用户根据更改日期通过 ID 查询数据 即 如果该日期早于用户上次查询数据的时间 则他不想要它 仅当文本字段与具有相同 ID 的现有文本字段
  • MySQL 8 用逗号分割字符串并将其转换为JSON ARRAY

    我有以下字符串 a b c d 我想将它转换成一个 json 数组 像这样 a b c d MySQL 8 有什么函数可以实现这个功能吗 Try SELECT CAST CONCAT REPLACE a b c d AS JSON See
  • 合并两个 MYSQL SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 如何将两个 Post Category 表 MYSQL SELECT 查询合并为一个 https stackoverflow com questions 12972130 how to combine
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 错误代码:1305。函数或过程不存在

    因此 我在 MySQL 中创建一个函数 然后尝试向用户授予使用该函数的权限 但我无法这样做 这就是我正在做的 DELIMITER USE rxhelp36 scbn DROP FUNCTION IF EXISTS businessDayDi
  • MySQL 错误 1172 - 结果包含多行

    在存储过程中运行查询时 我从 MySQL 收到此错误 错误代码 1172 结果包含多行 我理解错误 我正在做一个SELECT INTO var list 因此查询需要返回单行 当我使用LIMIT 1 or SELECT DISTINCT 错
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • 如何检测Mysql/innodb中的死锁?

    我知道在 Innodb 中使用事务时不可避免地会发生死锁 并且如果应用程序代码正确处理死锁 它们是无害的 正如手册所说 只需再试一次 所以我想知道 如何检测死锁 死锁是否会发出一些特殊的 mysql 错误号 如果重要的话 我正在使用 PHP
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • MySQL 转储未知选项“-no-beep”

    在旧服务器上我使用了mysql转储命令来备份 MySQL 数据库 在新服务器上 MySQL 版本为 5 6 相同的命令给出了错误 unknown option no beep 无论它插入什么 我也在互联网上搜索过 但找不到任何帮助 在 my

随机推荐

  • clang-format格式文件。可以直接复制引用

    Language Cpp BasedOnStyle LLVM AccessModifierOffset 2 AlignAfterOpenBracket Align AlignConsecutiveMacros false AlignCons
  • 环形缓冲区(c语言)

    1 概念介绍 在我们需要处理大量数据的时候 xff0c 不能存储所有的数据 xff0c 只能先处理先来的 xff0c 然后将这个数据释放 xff0c 再去处理下一个数据 如果在一个线性的缓冲区中 xff0c 那些已经被处理的数据的内存就会被
  • JAVA基础06——运算符02

    1 位运算 处理数据类型的时候 xff0c 可以直接对组成整形数值的各个位完成操作 amp 34 and 34 34 or 34 xff08 34 not 34 xff09 34 xor 以下用例皆为byte类型 xff1a xff1a 按
  • TCP/IP协议学习笔记(五)Windows下多线程多客户端的TCP服务端的实现

    使用多线程来实现可与多个客户端通信的服务端 当客户端连接上服务端之后 xff0c 为该客户端创建一个新的线程 xff0c 在该线程中与客户端进行通信 服务端程序中的主线程负责监听并接受客户端的连接请求 xff0c 创建与客户端通信的线程 另
  • docker tomcat ,把webapps.dist里面的全部文件 复制到 webapps下面就行。

    docker tomcat xff0c 把webapps dist里面的全部文件 复制到 webapps下面就行 cp r webapps dist webapps
  • ffmpeg 视频合并,无声或音视不同步

    无声 xff1a 第一个视频无声 xff0c 合并之后整个视频无声 例如上面是我用图片合成的视频 xff0c 就是没有音频的视频 只要没有音频的视频放在最前面 xff0c 那么整个视频都会没有声音 xff0c ffmpeg默认以第一个视频为
  • week4实验A 咕咕东的奇遇(字母圆环)

    题目 xff1a 咕咕东是个贪玩的孩子 有一天 xff0c 他从上古遗迹中得到了一个神奇的圆环 这个圆环由字母表组成首尾相接的环 xff0c 环上有一个指针 最初指向字母a 咕咕东每次可以顺时针或者逆时针旋转一格 例如 a顺时针旋转到z x
  • week13 作业C HDU-1176

    题目 xff1a 在大家不辞辛劳的帮助下 xff0c TT 顺利地完成了所有的神秘任务 神秘人很高兴 xff0c 决定给 TT 一个奖励 xff0c 即白日做梦之捡猫咪游戏 捡猫咪游戏是这样的 xff0c 猫咪从天上往下掉 xff0c 且只
  • week13作业B TT的神秘任务2

    题目 xff1a 在你们的帮助下 xff0c TT 轻松地完成了上一个神秘任务 但是令人没有想到的是 xff0c 几天后 xff0c TT 再次遇到了那个神秘人 而这一次 xff0c 神秘人决定加大难度 xff0c 并许诺 TT xff0c
  • week14作业B Q老师与十字叉

    Input 9 5 5 3 4 4 3 5 5 1 4 5 5 5 3 3 3 4 4 Output 0 0 0 0 0 4 1 1 2 记录每一行 每一列空白的格子数目 xff0c 然后遍历每一个格子 xff0c
  • week14 作业D Q老师染砖

    衣食无忧的 Q老师 有一天突发奇想 xff0c 想要去感受一下劳动人民的艰苦生活 具体工作是这样的 xff0c 有 N 块砖排成一排染色 xff0c 每一块砖需要涂上红 蓝 绿 黄这 4 种颜色中的其中 1 种 且当这 N 块砖中红色和绿色
  • 用队列实现图的拓扑排序

    span class hljs preprocessor include lt stdio h gt span span class hljs preprocessor include lt stdlib h gt span span cl
  • week14作业E Q老师度假

    忙碌了一个学期的 Q老师 决定奖励自己 N 天假期 假期中不同的穿衣方式会有不同的快乐值 已知 Q老师 一共有 M 件衬衫 xff0c 且如果昨天穿的是衬衫 A xff0c 今天穿的是衬衫 B xff0c 则 Q老师 今天可以获得 f A
  • week15作业A ZJM 与霍格沃兹

    ZJM 为了准备霍格沃兹的期末考试 xff0c 决心背魔咒词典 xff0c 一举拿下咒语翻译题 题库格式 xff1a 魔咒 对应功能 背完题库后 xff0c ZJM 开始刷题 xff0c 现共有 N 道题 xff0c 每道题给出一个字符串
  • week16 实验A TT数鸭子

    题目 xff1a 这一天 xff0c TT因为疫情在家憋得难受 xff0c 在云吸猫一小时后 xff0c TT决定去附近自家的山头游玩 TT来到一个小湖边 xff0c 看到了许多在湖边嬉戏的鸭子 xff0c TT顿生羡慕 此时他发现每一只鸭
  • group by分组查询后排序

    group by分组查询后排序 如 xff1a 分组查询 SELECT s name name COUNT s id value FROM t setmeal s t order o WHERE s id 61 o setmeal id G
  • 数据库的视图

    数据库视图的作用 数据库视图是一种虚拟的表 xff0c 它不是一个实际的表 xff0c 而是根据一个或多个实际表的查询结果生成的一个虚拟表 xff0c 它可以看作是对一个或多个表的一个或多个列的子集的逻辑表示 在数据库中 xff0c 视图有
  • Ubuntu开启FTP服务+FileZilla传输文件

    1 Ubuntu安装 FTP 服务 sudo apt install vsftpd 2 本地 写入权限使能 xff0c 首先打开 etc vsftpd conf 进行配置 sudo vim etc vsftpd conf 配置文件中 loc
  • spring集成Junit单元测试出现的问题及解决办法

    spring集成Junit单元测试出现的问题及解决办法 1 在spring集成Junit单元测试的时候 xff0c 所有的集成步骤都没有问题 xff0c 但是在启动测试的时候出现如下问题 xff1a java lang IllegalSta
  • MySQL实验

    表如下 xff1a 学院 xff08 学院代码 xff0c 学院名称 xff09 学生 xff08 学号 xff0c 姓名 xff0c 性别 xff0c 学院代码 xff09 教师 xff08 教师号 xff0c 教师名 xff0c 学院代