美文网首页
数据库学习(一)

数据库学习(一)

作者: J丶MyDream | 来源:发表于2017-04-26 20:50 被阅读0次

    建立一个student数据库包括:
    学生:S(Sno,Sname,Ssex,Sage,Sdept),
    课程:C(Cno,Cname,Term,Credit),
    选修:SC(Sno,Cno,Score);
    查询选修了课程名为“数据库系统”课程的学生的学号、姓名、成绩:
    SELECT S.Sno,Sname,Score FROM S,SC,C WHERE C.Cname IN ("数据库系统");
    查询选修了全部课程的学生姓名和所在的专业:
    SELECT Sname,Sdept FROM S WHERE Sno IN (SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)=(SELECT COUNT(*) FROM C));
    查询没有选择课程名为“数据库系统”的学生姓名和专业:
    SELECT Sname,Sdept FROM S WHERE Sno NOT IN (SELECT Sno FROM SC WHERE Cno=(SELECT Cno FROM C WHERE Cname="数据库系统"));
    检索所有比唐婉年龄大的学生的姓名、年龄和性别:
    SELECT Sname,Sage,Ssex FROM S WHERE Sage >(SELECT Sage FROM S WHERE Sname="唐婉") ORDER BY Sage ASC;
    检索选修了课程号为“2”课程的学生中成绩最高的学生的学号:
    SELECT Sno FROM SC WHERE SC.Cno="2" AND Score>=ALL(SELECT Score FROM SC WHERE Cno="2");
    检索选修了4门以上课程的学生学号和总成绩(不统计不及格的课程),并要求按照总承成绩的降序排列:
    SELECT Sno,Score FROM SC GROUP BY Cno HAVING Cno>'4' AND Score>='60' ORDER BY Score DESC;
    检索李白同学没有选修的课程的课程号:
    SELECT Cno FROM C WHERE NOT EXISTS(SELECT * FROM S,SC WHERE S.Sno=SC.Sno AND SC.Cno=C.Cno AND Sname='李白');
    注意:

    1. group by 的用法,可用于分类,结合count()可以查询出某一类的个数。
    2. order by 可以用来排序,asc表示升序排列,desc表示降序排列。
    3. 表示最高的用法>=all(***);疑问其和max();的区别。
    4. 理清楚从哪张表里面去取数据最方便,一步步联想推导可以查出想要的结果,注意函数的用法。

    越努力越幸运!!
    2017年4月26日

    相关文章

      网友评论

          本文标题:数据库学习(一)

          本文链接:https://www.haomeiwen.com/subject/nheyzttx.html