1 / 12

数据库原理与 SQL Server

数据库原理与 SQL Server. 第 13 课 关系运算 ( 二 ). 第 12 课 关系运算 —— 关系代数表达式. 目标: 了解关系代数表达式 掌握用关系代数表达式表示查询 从关系运算的角度理解查询语句. 5.3 数据库原理 — 关系运算. RDBMS :采用关系模型的 DBMS 关系运算: RDBMS 的数学基础 内容: 5.3.1 关系模型 5.3.2 关系代数. 关系的数学定义 关系的性质. 传统的集合运算 专门的关系运算 关系代数表达式. 关系代数表达式. 关系代数表达式:关系运算有限次组成,表示查询 运算对象:关系

manny
Télécharger la présentation

数据库原理与 SQL Server

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据库原理与SQL Server 第13课 关系运算(二)

  2. 第12课 关系运算——关系代数表达式 目标: • 了解关系代数表达式 • 掌握用关系代数表达式表示查询 • 从关系运算的角度理解查询语句

  3. 5.3 数据库原理—关系运算 RDBMS:采用关系模型的DBMS 关系运算:RDBMS的数学基础 内容:5.3.1 关系模型 5.3.2 关系代数 关系的数学定义 关系的性质 传统的集合运算 专门的关系运算 关系代数表达式

  4. 关系代数表达式 关系代数表达式:关系运算有限次组成,表示查询 运算对象:关系 运算结果:关系 集合运算符: 关系运算符: 辅助运算符 行 行、列 (∪、∩、 –、) (σ、π、⋈ 、÷) 运算符 比较运算符: 逻辑运算符: >、≥、<、≤、=、≠ ㄱ、∧、∨

  5. 实例1 对关系:s(sno,sname,sex)、c(cno,cname)、sc(sno,cno,score), 用关系代数表达式表示查询,并写出相应的T-SQL语句 选修课程编号为c001的课程的学生的学号 关系代数表达式: πsno( ) σ (sc) cno='c001' T-SQL语句: SELECT sno FROM sc WHERE cno='c001'

  6. 实例2 未选修课程编号为c001的课程的学生的学号 关系代数表达式: SC SNO CNO S SNO 不能写成 πsno(σcno='c001' (sc)) 1001 c001 1001 c002 1002 c002 1001 1002 考虑: 未选修=所有–选修 – πsno(sc) πsno(σcno='c001' (sc)) T-SQL语句: SELECT sno FROM s (SELECT sno FROM sc WHERE cno='c001') WHERE sno NOT IN 单字段用not in 否则用not exists 或 SELECT sno FROM s WHERE NOT EXISTS (SELECT * FROM sc WHERE sc.sno=s.sno AND cno='c001')

  7. 实例3 选修“数据库应用”课程的学生的学号 关系代数表达式: πsno( ) (σcname='数据库应用'(sc ) ⋈ c T-SQL语句: SELECT sc.sno FROM sc,c WHERE sc.cno=c.cno AND cname='数据库应用' 或 SELECT sc.sno FROM sc INNER JOIN c ON WHERE sc.cno=c.cno WHERE cname='数据库应用'

  8. 实例4 选修“数据库应用”课程的学生的学号和姓名 关系代数表达式: πsno,sname( ) (σcname='数据库应用'(sc ⋈ c ) ⋈ s 注意 ●3个关系的联接顺序 T-SQL语句: SELECT sc.sno,sname FROM s,c,sc WHERE sc.sno=s.sno AND sc.cno=c.cno AND cname='数据库应用'

  9. 实例5 选修了所有课程的学生的学号 sc c sno cno R1 → R2 → X→ Y→ s sno c cno 关系代数表达式: 所有→除 1001 ⋮ c001 c002 ⋮ R1(X,Y)÷R2(Y,Z)=R3(X) πsno,cno(sc) ÷ πcno(c) T-SQL语句: 选修了所有课程的学生 → 学生没有一门课程没有选 SELECT sno FROM s cno FROM c WHERE NOT EXISTS SELECT * FROM c s WHERE NOT EXISTS ( ( )) SELECT * FROM sc WHERE sc.sno=s.sno AND sc.cno=c.cno 注意该类语句的格式 ,如所有学生都选的课程

  10. 实例6 至少选修两门课程的学生的学号 sc sno cno score 1001 c001 ⋯ 1001 c002 ⋯ 1003 c001 ⋯ 关系代数表达式: π1( ) σ (scsc) 1=4∧2≠5 或 π1(σ2≠5(sc ⋈ sc)) scsc 1 2 4 5 1=1 1001 c001 1001 c001 1001 c001 1001 c002 1001 c001 1003 c001 T-SQL语句: SELECT DISTINCT sc1.sno FROM sc AS sc1,sc AS sc2 WHERE sc1.sno=sc2.sno AND sc1.cno<>sc2.cno √ 1001 c002 1001 c001 1001 c002 1001 c002 1001 c002 1003 c001 √ 如果是同时选修3门课程 SELECT sno FROM sc GROUP BY SNO HAVING COUNT(*)>=3 1003 c001 1001 c001 1003 c001 1001 c002 1003 c001 1003 c001  考虑:用这种方法解决“选修所有课程”的学生

  11. 作业 第五章 习题 22

  12. 实训 实训名称:检索表中数据(三) 目的要求:掌握SQL Server 2000中检索表中记录的方法 操作步骤: ① 创建实例5-32中的表s、c、sc,并输入数据。 ② 完成实例5-32中的Transact-SQL语句部分。 ③ 创建习题22中的表s、c、sc,并输入数据。 ④ 完成习题22中的Transact-SQL语句部分。

More Related