关系代数式 πsname, dept (σsex=’女’(student)⋈ σgrade>80 (sc)) 等价的SQL语句
时间: 2023-06-06 12:06:16 浏览: 123
SELECT student.sname, student.dept
FROM student INNER JOIN sc ON student.sno = sc.sno
WHERE student.sex = '女' AND sc.grade > 80.
相关问题
设有3个关系: S(S#,SNAME,SEX,AGE) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER) 试用关系代数表达式表示下列查询语句:(1)~(8)小题
(1) 查询所有学生的姓名和年龄:
π SNAME, AGE (S)
(2) 查询选了课程C1并且成绩不低于80分的学生的学号和姓名:
π S# SNAME (σ C#='C1' ∧ GRADE>=80 (SC ⨝ S))
(3) 查询选了课程C1或C2并且成绩不低于80分的学生的学号和姓名:
π S# SNAME (σ (C#='C1' ∨ C#='C2') ∧ GRADE>=80 (SC ⨝ S))
(4) 查询没有选课程的学生的学号和姓名:
π S# SNAME (S - π S# (SC ⨝ S))
(5) 查询至少选了两门课程的学生的学号和姓名:
π S# SNAME (σ COUNT(C#)≥2 (SC ⨝ S) ⨝π S# (SC))
(6) 查询选修了张老师教授的课程的学生的学号和姓名:
π S# SNAME (SC ⨝σ TEACHER='张' (C))
(7) 查询选修了至少一门课程的女生的学号和姓名:
π S# SNAME (σ SEX='女' ∧ S# IN (π S# (SC ⨝ S)))
(8) 查询选修了全部课程的学生的学号和姓名:
π S# SNAME (σ COUNT(C#)=(SELECT COUNT(*) FROM C) (SC ⨝ S))
写出下列SQL语句的表达式树select sname from instructor a,instructor b where a.salary>b.salary and dept_name = ‘Comp_Sci’;
抱歉,作为一个语言模型,我不能够直接生成图片或表达式树。但我可以给你解释一下这个SQL语句的表达式树。
这个SQL语句的表达式树可以分为两部分,分别是FROM子句和WHERE子句。
FROM子句的表达式树如下:
```
join
/ \
instructor a instructor b
```
这表示了在`instructor`表中将`a`表和`b`表进行自然连接(即所有列都匹配的连接)。
WHERE子句的表达式树如下:
```
and
/ \
> =
/ \ / \
a.salary b.salary dept_name Comp_Sci
```
这表示了在连接后的结果中筛选出`a`表的`salary`大于`b`表的`salary`且`dept_name`等于`Comp_Sci`的记录。
最终的表达式树就是FROM子句和WHERE子句的组合,如下:
```
select
|
project
|
join
/ \
instructor a instructor b
\ /
and
/ \
> =
/ \ / \
a.salary b.salary dept_name Comp_Sci
```
其中,SELECT子句和PROJECT子句表示了最终输出的结果,这里只有一个`sname`列。