题目
设有一个数据库中有三个关系:
学生关系 S(S#,SNAME,AGE,SEX)
课程关系 C(C#,CNAME,TEACHER)
学习关系 SC(S#,C#,GRADE)
1、下面用关系代数表达式表达各个查询语句:
-
检索年龄大于 20 岁的男学生的学号、姓名。
Π S#,SNAME(σ AGE>20^SEX=‘男’(S))
-
检索学习课程号为C2 的学生学号与成绩。
Π S#,GRADE(σ C#=‘C2’(SC))
-
检索学习课程号为C2 的学生学号与姓名。
Π S#,SNAME(σ C#=‘C2’(SC∞S))
-
检索选修课程名为MATHS 的学生学号与姓名。
Π S#,SNAME(σ CNAME(‘MATHS’(C∞SC∞S)
-
检索王华老师所授课程的课程号、课程名
Π C#,CNAME(σ TEACHER=‘王华’( C))
-
检索选修课程号为C2 或C4 的学生学号。
Π S#(σ C#='C2∨C#=‘C4’(SC))
-
检索至少选修课程号为 C2 和C4 的学生学号。
Π S#,C#(SC)÷Π S#(σ C#=‘C2’^C#=‘C4’(SC))
-
检索至少选修两门课程的学生学号。
Π SNAME,AGE(S) - Π SNAME,AGE(σ C#=‘C2’(SC∞S))
-
检索不学C2 课的学生姓名与年龄。
ΠS#,C#((Π S#,C#(SC)÷Π C#( σ C#=‘C2’(SC)))∞S)
-
检索全部学生都选修的课程的课程号、课程名。
Π C#,CNAME (Π S#,C#(SC)÷Π S#(S) ∞C)
-
检索学习全部课程的学生姓名。
Π SNAME(S∞(Π S#,C#(SC)÷Π C#( C))
11题思路:
2、下面用SQL语言表达各个查询语句:
- 检索选修课程号为C2 或C4 的学生学号。
SELECT DISTINCT S
FROM SC
WHERE C
查询结果
2. 检索至少选修课程号为 C2 和C4 的学生学号。
SELECT DISTINCT S
FROM SC
WHERE C
AND S
查询结果
3. 检索至少选修两门课程的学生学号。
SELECT S
FROM SC
GROUP BY S
HAVING COUNT(*)>1
查询结果
附上代码
(包括创建数据库、3张表以及上面3个问题的sql查询语言)
CREATE DATABASE AAA
USE AAA
CREATE TABLE S(
S
SNAME CHAR(50),
AGE CHAR(20),
SEX CHAR(20))
INSERT INTO S(S
VALUES('1','李强',19,'男'),
('2','刘丽',22,'女'),
('3','张友',22,'男')
SELECT * FROM S
CREATE TABLE C(
C
CNAME CHAR(50) ,
TEACHER CHAR(20))
INSERT INTO C(C
VALUES('C1','C语言','王华'),
('C2','数据课原理','程军'),
('C4','MATHS','程军')
SELECT * FROM C
CREATE TABLE SC(
S
C
GRADE CHAR(20))
INSERT INTO SC(S
VALUES('1','C1','83'),
('2','C1','85'),
('5','C1','92'),
('2','C2','90'),
('5','C2','84'),
('5','C4','80')
SELECT * FROM SC
SELECT DISTINCT S
FROM SC
WHERE C
SELECT DISTINCT S
FROM SC
WHERE C
AND S
SELECT S
FROM SC
GROUP BY S
HAVING COUNT(*)>1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)