数据库学习(一)

建立一个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日

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句。 问题及描述: --1.学生表 Stud...
    lijun_m阅读 5,093评论 0 1
  • 软件测试笔试——数据库题型 1.一个简单的学生成绩表,表名Student,有字符类型的Name项和整型的score...
    天天向上的小M阅读 10,231评论 0 11
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 4,979评论 0 7
  • 通俗地讲,代码的健壮性越好,系统越不容易崩溃。 系统的运行,肯定会基于很多基础设施,如:操作系统、数据库、异步队列...
    ChaserChen阅读 6,902评论 0 0
  • “第一条规矩:不准渎神,不准滥呼上帝之名!”“把信仰寄托神,把贱命交给我。” 这是电影《肖生克救赎》中典狱长的两句...
    鲜有废客阅读 5,121评论 14 16