首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据库系统原理--第2章课堂练习4--答案

数据库系统原理--第2章课堂练习4--答案

作者头像
三桥君
发布2025-08-28 09:17:22
发布2025-08-28 09:17:22
18100
代码可运行
举报
运行总次数:0
代码可运行

题目

设有一个数据库中有三个关系: 学生关系 S(S#,SNAME,AGE,SEX) 课程关系 C(C#,CNAME,TEACHER) 学习关系 SC(S#,C#,GRADE)

在这里插入图片描述
在这里插入图片描述

1、下面用关系代数表达式表达各个查询语句:

  1. 检索年龄大于 20 岁的男学生的学号、姓名。 Π S#,SNAME(σ AGE>20^SEX=‘男’(S))
  2. 检索学习课程号为C2 的学生学号与成绩。 Π S#,GRADE(σ C#=‘C2’(SC))
  3. 检索学习课程号为C2 的学生学号与姓名。 Π S#,SNAME(σ C#=‘C2’(SC∞S))
  4. 检索选修课程名为MATHS 的学生学号与姓名。 Π S#,SNAME(σ CNAME(‘MATHS’(C∞SC∞S)
  5. 检索王华老师所授课程的课程号、课程名 Π C#,CNAME(σ TEACHER=‘王华’( C))
  6. 检索选修课程号为C2 或C4 的学生学号。 Π S#(σ C#='C2∨C#=‘C4’(SC))
  7. 检索至少选修课程号为 C2 和C4 的学生学号。 Π S#,C#(SC)÷Π S#(σ C#=‘C2’^C#=‘C4’(SC))
  8. 检索至少选修两门课程的学生学号。 Π SNAME,AGE(S) - Π SNAME,AGE(σ C#=‘C2’(SC∞S))
  9. 检索不学C2 课的学生姓名与年龄。 ΠS#,C#((Π S#,C#(SC)÷Π C#( σ C#=‘C2’(SC)))∞S)
  10. 检索全部学生都选修的课程的课程号、课程名。 Π C#,CNAME (Π S#,C#(SC)÷Π S#(S) ∞C)
  11. 检索学习全部课程的学生姓名。 Π SNAME(S∞(Π S#,C#(SC)÷Π C#( C))

11题思路:

在这里插入图片描述
在这里插入图片描述

2、下面用SQL语言表达各个查询语句:

  1. 检索选修课程号为C2 或C4 的学生学号。
代码语言:javascript
代码运行次数:0
运行
复制
SELECT DISTINCT S#
FROM SC
WHERE C#='C2' OR C#='C4'

查询结果

在这里插入图片描述
在这里插入图片描述

2. 检索至少选修课程号为 C2 和C4 的学生学号。

代码语言:javascript
代码运行次数:0
运行
复制
SELECT DISTINCT S#
FROM SC
WHERE C#='C2'
AND S# IN (SELECT S# FROM SC WHERE C#='C4')

查询结果

在这里插入图片描述
在这里插入图片描述

3. 检索至少选修两门课程的学生学号。

代码语言:javascript
代码运行次数:0
运行
复制
SELECT S#
FROM SC
GROUP BY S#
HAVING COUNT(*)>1

查询结果

在这里插入图片描述
在这里插入图片描述

附上代码

(包括创建数据库、3张表以及上面3个问题的sql查询语言)

代码语言:javascript
代码运行次数:0
运行
复制
--创建数据库
CREATE DATABASE AAA
--使用数据库
USE AAA
--创建S表
CREATE TABLE S(
S# CHAR(10) PRIMARY KEY,
SNAME CHAR(50),
AGE CHAR(20),
SEX CHAR(20))
--添加数据到S表
INSERT INTO S(S#,SNAME,AGE,SEX)
VALUES('1','李强',19,'男'),
('2','刘丽',22,'女'),
('3','张友',22,'男')
--检验
SELECT * FROM S

--创建C表
CREATE TABLE C(
C# CHAR(10) PRIMARY KEY,
CNAME CHAR(50) ,
TEACHER CHAR(20))
--添加数据到P表
INSERT INTO C(C#,CNAME,TEACHER)
VALUES('C1','C语言','王华'),
('C2','数据课原理','程军'),
('C4','MATHS','程军')
--检验
SELECT * FROM C

--创建SC表
CREATE TABLE SC(
S# CHAR(10),
C# CHAR(50),
GRADE CHAR(20))
--添加数据到J表
INSERT INTO SC(S#,C#,GRADE)
VALUES('1','C1','83'),
('2','C1','85'),
('5','C1','92'),
('2','C2','90'),
('5','C2','84'),
('5','C4','80')
--检验
SELECT * FROM SC

--1.检索选修课程号为C2 或C4 的学生学号。
SELECT DISTINCT S#
FROM SC
WHERE C#='C2' OR C#='C4'

--2.检索至少选修课程号为 C2 和C4 的学生学号。
SELECT DISTINCT S#
FROM SC
WHERE C#='C2'
AND S# IN (SELECT S# FROM SC WHERE C#='C4')

--3.检索至少选修两门课程的学生学号。
SELECT S#
FROM SC
GROUP BY S#
HAVING COUNT(*)>1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
    • 1、下面用关系代数表达式表达各个查询语句:
    • 2、下面用SQL语言表达各个查询语句:
  • 附上代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档