问题详情

设教学数据库中有4个关系:教师关系T(T#,TNAME,TITLE)课程关系C(C#,CNAME,T#)学生关系S(S#,SNAME,AGE,SEX)选课关系SC(S#,C#,SCORE)试用关系代数表达式表示各个查询语句。(1)检索年龄小于17岁的女学生的学号和姓名。(2)检索男学生所学课程的课程号和课程名。(3)检索男学生所学课程的任课老师的职工号和姓名。(4)检索至少选修了两门课程的学生学号。(5)检索至少有学号为S2和S4学生选修的课程的课程号。(6)检索WANG同学不学的课程的课程号。(7)检索全部学生都选修的课程的课程号与课程名。(8)检索选修课程包含LIU老师所授全部课程的学生学号。


时间:2022-06-02 12:08 关键词: 关系数据库基本理论 中级数据库系统工程师

答案解析

<p> ①检索年龄小于17岁的女学生的学号和姓名。<br> SELECT S#.SNAME FROM S<br> WHERE AGE&lt;17 AND SEX=&rsquo;F&rsquo;<br> ②检索男学生所学课程的课程号和课程名。<br> SELECT C.C#,CNAME (连接查询方式) FROM&nbsp; S,SC,C<br> WHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=&rsquo;M&rsquo;;<br> ③检索男学生所学课程的任课老师的工号和姓名。<br> SELECT&nbsp; T.T#, TNAME FROM&nbsp; S,SC,C,T<br> WHERE S.S#=SC.S# AND SC.C#=C.C# AND C.T#=T.T# AND SEX=&rsquo;M&rsquo;;<br> ④检索至少选修两门课程的学生学号。<br> SELECT DISTINCT X.S# FROM SC AS X, SC AS Y<br> WHERE X.S#=Y.S# AND X.C#!=Y.C#;<br> ⑤检索至少有学号为S2和S4的学生选修的课程的课程号。<br> SELECT DISTINCT X.C# FROM SC AS X, SC AS Y<br> WHERE X.S#=&rsquo;S2&rsquo; AND Y.S#=&rsquo;S4&rsquo; AND X.C#=Y.C#;<br> &nbsp;⑥检索WANG同学不学的课程的课程号。<br> SELECT C# FROM C<br> WHERE NOT EXISTS (SELECT * FROM S, SC<br> WHERE S.S#=SC.S# AND SC.C#=C.C# AND SNAME=&rsquo;WANG&rsquo;);<br> ⑦检索全部学生都选修的课程的课程号与课程名。<br> &nbsp;SELECT C#,CNAME FROM C<br> WHERE NOT EXISTS (SELECT&nbsp; * FROM S<br> WHERE NOT EXISTS (SELECT * FROM SC<br> WHERE S#=S.S# AND C#=C.C#));<br> ⑧检索选修课程包含LIU老师所授全部课程的学生学号。<br> 法一:<br> SELECT DISTINCT S# FROM SC AS X<br> WHERE NOT EXISTS (SELECT * FROM C,T<br> WHERE C.T#=T.T# AND TNAME=&rsquo;LIU&rsquo;<br> AND NOT EXISTS (SELECT{<br> FROM SC AS Y<br> WHERE Y.S#=X.S# AND Y.C#=C.C#));<br> 法二:<br> SELECT DISTINCT S# FROM SC X<br> WHERE NOT EXISTS ((SELECT C# FROM C,T<br> WHERE C.T#=T.T# AND TNAME=&#39;LIU&rsquo;) EXCEPT<br> (SELECT C# FROM SC Y&nbsp; WHERE Y.S#=X.S#));</p>