即:
RANGE SC SCX
GET W(S.SNO):?CX?SCX (SCX.SNO≠SNO ∨ SCX.CNO≠CX.CNO)
全称改存在为:
RANGE SC SCX
C CX
GET W(S.SNO):?CX﹁(?SCX(SCX.SNO=SNO∧CX.CNO=SCX.CNO)) GET W(S.SNO):﹁?CX﹁(﹁(?SCX(SCX.SNO=SNO∧CX.CNO=SCX.CNO)))
GET W(S.SNO):﹁?CX(?SCX(SCX.SNO=SNO∧CX.CNO=SCX.CNO))
SQL命令见后
(11) 在关系C中增添一门新课
MOVE 'C9' TO W.CNO
MOVE '计算机系统结构' TO W.CN MOVE 'C4' TO W.CPNO PUT W(C)
(12) 学号为S17的学生因故退学请在S与SC中将其除名。
Hold W(SC):SNO=’S17’ DELETE W
Hold W(S):SNO=’S17’
29
数据库原理及应用 DELETE W
(13) 将关系S中学生S6的年龄改为22岁(只需ALPHA操作)。
Hold W(SNO,AGE):SNO=’S6’ MOVE 22 TO W.AGE UPDATE W
(14) 将关系S中学生的年龄均增加1岁(只需ALPHA操作)。
Hold W(SNO,AGE) MOVE W.AGE+1 TO W.AGE UPDATE W
30
写出SQL 命令(非本章要求):
9、设有学生-课程关系数据库,它由三个关系组成,它们的模式是:学生S(学号SNO,姓名SN,所在系DEPT,年龄AGE)、课程C(课程号CNO,课程名CN,先修课号CPNO)、SC(学号SNO,课程号CNO,成绩G)。
请用关系代数与ALPHA语言分别写出下列查询: (1) 检索学生的所有情况。 S SSCC
GET W(S)
GET W(S,SC,C): S.SNO=SC.SNO ∧ SC.CNO =C.CNO
SELECT * FROM S
(2) 检索学生年龄大于等于20岁的学生姓名。 πSN(σAGE>=20(S))
GET W(S.SN): (S.AGE>=20)
SELECT SN FROM S
WHERE S.AGE>=20
(3) 检索先修课号为C2的课程号。 πCNO(σCPNO=?C2?(C))
GET W(C.CNO): (C.CPNO=’C2’)
SELECT CNO FROM C
WHERE C.CPNO=’C2’
31
数据库原理及应用
(4) 检索选修了课程号C1成绩为A的所有学生姓名。 πSN(σCNO=?C1?∧SCORE=?A?(SCC))
RANGE SC SCX
GET W(S.SN): ?SCX (SCX.SNO=S.SNO ∧ SCX.CNO=’C1’ ∧ SCX.SCORE=’A’)
SELECT SN FROM S,SC
WHERE S.SNO=SC.SNO AND SC.CNO=’C1’ AND SC.SCORE=’A’
(5) 检索学号为S1的学生修读的所有课程名及先修课号。 πCN,CPNO (σSNO=?S1?(SCS))
RANGE SC SCX
GET W(C.CN,C.CPNO): ?SCX (SCX.CNO=C.CNO ∧ SCX.SNO=’S1’)
SELECT C.CN,C.CPNO FROM C,SC
WHERE C.CNO=SC.CNO AND SC.SNO=’S1’
(6) 检索年龄为23岁的学生所修读的课程名。
πCN (σAGE=23(SSCC))
RANGE S SX SC SCX
GET W(C.CN): ?SX?SCX (SX.SNO=SCX.SNO ∧ SCX.CNO=C.CNO∧ SX.AGE=23)
32