第3章_关系数据库标准语言(SQL)_006_由元组关系演算到SQL Command_002_案例_04_以全部学生为准,课程被选的4种选课情况(只列举出2种)
01:查询被全校学生选修的课程的课程编号和课程名;
02_查询至少有一个学生没有选的课程的课程编号和课程名(没有被全部学生选的课程);
01_查询被全校学生选修的课程的课程编号和课程名 ===》
{new_c(2) |
∃c (
c(C) Λ
∀s (
s(S)
→ ∃sc (
sc(SC) Λ
sc.SNo = s.SNo Λ
sc.CNo = c.CNo
)
)
new_c[1] = c[1] Λ
new_c[2] = c[2]
)
}
经过化简得到:
{new_c(2) |
∃c (
¬【∃s (
¬【∃sc (
sc.SNo = s.SNo Λ
sc.CNo = c.CNo
)】
)】
)
}
按照简化后的“元组关系演算式”得出SQL语句:
SELECT CNo, CN
FROM C
WHERE
NOT EXISTS (
SELECT *
FROM S
WHERE
NOT EXISTS (
SELECT *
FROM SC
WHERE
SC.CNo = C.CNo AND
SC.SNo = S.SNo
)
)
02_查询至少有一个学生没有选的课程的课程编号和课程名(没有被全部学生选的课程) ===》
{new_c(2) |
∃c (
c(C) Λ
∃s (
s(S) Λ
∀sc ¬(
sc(SC) Λ
sc.SNo = s.SNo Λ
sc.CNo = c.CNo
)
)
new_c[1] = c[1] Λ
new_c[2] = c[2]
)
}
经过化简得到:
{new_c(2) |
∃c (
∃s (
¬【∃sc (
sc.SNo = s.SNo Λ
sc.CNo = c.CNo
)】
)
)
}
按照简化后的“元组关系演算式”得出SQL语句:
SELECT CNo, CN
FROM C
WHERE
EXISTS (
SELECT *
FROM S
WHERE
NOT EXISTS (
SELECT *
FROM SC
WHERE
SC.CNo = C.CNo AND
SC.SNo = S.SNo
)
)
注释:其他的就和前面的几个实例差不多,不一一举例了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
· 用 C# 插值字符串处理器写一个 sscanf