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实验 的相关文章

  • 我应该定义索引(A)和索引(B),还是索引(A,B),或者两者都定义?

    在我的表中 我有两个密切相关的列 A 和 B 我应该考虑哪些因素来决定是否创建 索引 A 和索引 B 索引 A B 以上两者 如果我 仅使用类似的查询where A 5 and B 10 并且从不喜欢where A 5 也可以使用类似的查询
  • 拉拉维尔; “SQLSTATE[HY000] [2002] 连接被拒绝”

    我在 OSX 主机上设置了 homestead 2 0 并使用 Sequel Pro 我可以进行迁移并确认数据已在Sequel Pro中迁移 因此看起来数据库连接没有问题 但是 一旦我尝试从 Laravel 4 2 应用程序获取数据 它就无
  • 如何重命名 MySQL 数据库(更改架构名称)?

    如何快速重命名 MySQL 数据库 更改其架构名称 通常我只是转储数据库并使用新名称重新导入它 对于非常大的数据库来说 这不是一个选项 显然RENAME DATABASE SCHEMA db name TO new db name 做了坏事
  • 无法在类上找到适当的构造函数

    我正在尝试将本机 SQL 结果映射到 POJO 但它返回错误 这是完整的堆栈跟踪 Hibernate SELECT FROM members tb where memberName like 2019 12 19 07 40 20 688
  • 外键和索引

    我有 2 张桌子 products and 类别 每个类别有很多产品 一个产品可以属于多个类别 products product id int primary auto increment name unique etc 类别 catego
  • Magento --“SQLSTATE[23000]:违反完整性约束..”客户更新

    迁移服务器后 每次尝试更新客户信息时都会出现错误 我正在使用一个客户激活插件 http www magentocommerce com magento connect vinai extension 489 customer activat
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • MySQL:如何获取每个分组的x个结果数[重复]

    这个问题在这里已经有答案了 可能的重复 mysql 在 GROUP BY 中使用 LIMIT 来获取每组 N 个结果 https stackoverflow com questions 2129693 mysql using limit w
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • 在上下文中提取搜索字符串

    我正在尝试执行 MySQL 查询 在上下文中提取搜索字符串 因此 如果搜索是 mysql 我想从 body 列返回类似的内容 下载后只需几分钟MySQL安装程序即可使用 这就是我现在得到的 但它不起作用 因为它只是从正文字段中获取前 20
  • 如何将行变成列?

    我有一个数据库 其中存储分组到项目中的关键字以及与每个关键字相关的数据 然后我显示每个项目的数据网格 每个关键字一行和几列 全部从同一个表 数据 中检索 我有 4 个表 关键字 项目 group keywords 和数据 keywords
  • 如何将 MySQL 查询输出保存到 Excel 或 .txt 文件? [复制]

    这个问题在这里已经有答案了 如何将 MySQL 查询的输出保存到 MS Excel 工作表 即使只能将数据存储在 txt文件 就可以了 From 将 MySQL 查询结果保存到文本或 CSV 文件中 http www tech recipe
  • MySQL Python 关于重复键更新值

    我正在研究使用 python 将 JSON 数据上传到 MySQL 我需要在插入语句中包含 ON DUPLICATE KEY UPDATE VALUES 但在 Python 中遇到了问题 如果我运行以下代码 一切正常 import json
  • oursql 中的参数化查询

    如果有人能告诉我是否可以使用命名占位符进行参数化查询 我将不胜感激oursql 一个用于与 MySQL 数据库交互的 python 模块 例如 我尝试了一种可以与 sqlite3 一起使用的查询 c execute select from
  • MySQL 数据库无法在 XAMPP for Mac 上启动

    突然我在 mac 上遇到了这个问题 我无法启动我的 MySQL 数据库 我只能启动 ProFTPD 和 Apache Web Server 这是应用程序日志 Starting all servers Starting MySQL Datab
  • mysql表中的数据非常大。即使 select 语句也需要很多时间

    我正在开发一个数据库 它是一个相当大的数据库 有 13 亿行和大约 35 列 这是我检查表状态后得到的结果 Name Table Name Engine InnoDB Version 10 Row format Compact Rows 1
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • MySQL 左连接 WHERE table2.field = "X"

    我有以下表格 pages Field Type Null Key Default Extra page id int 11 NO PRI NULL auto increment type varchar 20 NO NULL

随机推荐

  • 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 学院代