1、java中没有goto语句,但有goto保留字
2、java的异常分类
java.lang.Throwable类是错误(Error)和异常(Exception)的父类,Error中有常见的OutOfMemoryError与StackOverflowError,这两个都是常见虚拟机异常(VirtualMachineError),异常有RuntimeException、IOException、CloneNotSupportedException、InterruptedException等,非受检异常指的是java.lang.RuntimeException和java.lang.Error类及其子类,所有其他的异常类都称为受检异常。Java编译器要求程序必须捕获或声明抛出受检异常。
现有四张表:student学生表、course课程表、teacher教师表、sc成绩表
-
查询选修了1号课程的成绩大于2号课程的学生的姓名
分析:这道题可以拆分来看,首先查询这名学生的1号课程的成绩,然后查询这名学生的2号课程的成绩,做个比较就可以了。
SELECT * FROM student s where (select score FROM sc AS a where a.stu_id=s.id AND a.course_id=1)>(select score FROM sc AS b where b.stu_id=s.id AND b.course_id=2);
-
查询没有选修张三老师教授课程的学生信息
这道题的意思就是说张三老师的所有课程都没有选修,不存在一门课程是张三老师教授的这名课程却选修了,所以要使用NOT EXISTS
SELECT * FROM student s where NOT EXISTS (SELECT * FROM sc INNER JOIN course c ON sc.course_id=c.id LEFT JOIN teacher t ON t.id=c.teacher_id WHERE t.name="张三" AND sc.stu_id=s.id)
-
查询了选修的全部课程的学生姓名
分析:没有一门课程这名学生没有选修,一个NOT EXISTS不能确定,需要两个NOT EXISTS
SELECT * FROM student s WHERE NOT EXISTS (SELECT * FROM course c WHERE NOT EXISTS (SELECT * FROM sc WHERE sc.stu_id=s.id AND sc.course_id=c.id) )
有点类似双重循环的感觉,从student表中每次取一个,然后针对student中的每一个元组再从course表中每次取一个。
-
查询至少选修了学号为2的学生选修的全部课程的学号
SELECT DISTINCT(stu_id) FROM sc scx WHERE NOT EXISTS (SELECT * FROM sc scy WHERE scy.stu_id=2 AND NOT EXISTS (SELECT * FROM sc scz WHERE scz.stu_id=scx.stu_id AND scz.course_id=scy.course_id))
网友评论