• 关系代数复习ing


    名单就是姓名。

    学生名单就是学生姓名。

    还是先在熟悉的   学生-学习-课程表进行查询讨论训练,2333!

    学生(学号,姓名,性别,年龄,籍贯,出生年月,学院)

    课程(课程号,课程名,学时,开课学期,先行课,学分,课程性质)

    学习(学号,课程号,成绩)

    1.查询至少选修课程名为'数据库原理''操作系统'课程的学生姓名。

    很明显,这是一个集合包含性问题,可以用除法哦2333

    当然扩展一下啦:交运算是可以表达部分"除法"运算实现的功能滴

    当然,也可以用自连接,但是有些连接要多的一些,后续再写2333。

    2.查询被所有同学选修的课程的课程号?查询选修所有课程的学生的学号?

    进违啦,继续的除法运算!

    3.找出计算机学院1980年以后出生的女同学的名单。

    分析:找出计算机学院(学院)1980年以后出生(出生年月)女(性别)同学名单(姓名)

    4.求选修1号课程的学生姓名和所在学院。

    分析:求选修1号课程(学习表-,)的学生姓名和所在学院(学生表-)。将两表做自然连接投影相应的属性之。

    5.求选修数据库原理的学生姓名。

    分析:需要三个表做自然连接哦2333.

    6.查询同时选修数据库原理以及操作系统的学生名单?

    查询至少选修了数据库原理和操作系统的学生名单?

    查询至少同时选修了数据库原理以及操作系统的学生名单?

    求至少选修了数据库原理和操作系统的学生名单?

    分析:继续:除法运算。

    名单就是姓名。

    7.查询没有被任何人选修的课程名?

    分析:差运算

    8.查询没有选修任何课程的学生学号和姓名?

    分析:仍然的差运算

    汉语中的"没有","是...但不包含"通常意义上是差运算的要求

    9.查询至少选修1号同学选修的所有课程的学生姓名?

    分析:查询至少选修1号同学选修的所有课程的学生的姓名。所有二字,一语揭示了全部所有包含性的问题这是,该用除法哦!

    像另一个值得注意的查询语句"查询选修1号同学选修的课程的学生姓名。"这里面的意思和本题的查询意思就截然不同了嘤嘤。

    全体性问题

    10.查询选修1号同学选修的课程的学生姓名?

    查询选修1号同学选修的一门或多门课程的学生姓名?

    分析:这里要用自连接。

    可能是选择了其中一门,这里是只要有只要存在就行了!

    学习(学号,课程号,成绩)

    学习*学习=(1,2,3,4,5,6)=(学号,课程号,成绩,学号,课程号,成绩)

    存在性问题2333

    11.查询至少选修了课程号为1和课程号为2的学生的学号?

    分析:自连接可,除法也可。

    忍不住写了一些代码,嘻嘻:

    use try;
    
    /*查询至少选修了1号同学选修的所有课程的学生姓名*/
    select sname
    from student
    where not exists
    (select * from sc as a where sno='1' and not exists
    (select * from sc as b where sno=student.sno and cno=a.cno));
    
    
    /*查询选修1号同学选修的课程的学生姓名*/
    select sname
    from student 
    where sno in
    (select a.sno
    from sc as a,sc as b
    where b.sno='1' and a.cno=b.cno);
    

      12.求至少选修了两门课程的学生学号。

    分析:解决这个问题:

    关系代数-------->自连接

    SQL语言--------->集函数(统计函数count)尤其为佳,嘿嘿

    /*求至少选修了两门课程的学生学号*/
    select sno
    from student
    where sno in
    (select sno
    from sc
    group by sno
    having count(*)>=2);
    

      13.一些其他的参考嘤嘤:

     

    来自一位17级学长的简书blog。

    14.接下来了解一下关系代数表达式的优化算法---语法树

    语法树是二叉树,千万不要整出三叉树这样的幺蛾子事件哦2333!哈哈哈!

     

  • 相关阅读:
    反反爬 | 如何巧过 CloudFlare 5秒盾?
    Xpath高级用法
    GZIP 头解析
    学习S5
    Chrome 建立SOCKS5代理
    建立IP6隧道
    linux 配置Socks51
    linux 配置Socks5
    最近买了一个域名 哈哈,棒棒哒~~
    jquery 动态添加下拉框 需要增加 煊染 selectmenu("refresh");
  • 原文地址:https://www.cnblogs.com/dragondragon/p/12510560.html
Copyright © 2020-2023  润新知