作者ARCHERDEVIL (开弓)
看板Examination
标题Re: [课业] 资料库两题
时间Tue Jun 11 08:06:12 2013
以下我没有自己建资料库跑过
纯粹就个人认知回答欧XD
※ 引述《Mayinggo (马赢狗)》之铭言:
: 1. A SQL SELECT statement contains a nested query in the WHERE clause,comparing
: the value of an attribute to the values returned by the nested SELECT with an
: IN predicate. Which of the following predicates can be used in that statement
: instead of IN?
: (A)=SOME (B)=ALL
: (C)=ANY (D)=EVERY
: 答案是C
: 查了一下用法IN=ANY=SOME
: 所以不选SOME的理由是 还是答案其实可以选
优先选 =any
可以复选的话我会把any 跟 some 都选起来
如果是sql 92标准的话,的确some 是可以的
但 =any 是通用的,算常识
如果你选some可能会有版本问题
不会在每个版本都正确..
我猜应该是这样。
: 2. Two tables are given: STUDENT(StudNO,Name,Department) and GRADES(StudNo,
: Course,Grade). Which of the given SQL statements will retrieve the names
: of
: students who got an A in each course they passed?
: (A) SELECT name
: FROM student
: WHERE NOT EXISTS(SELECT *
: FROM grades
: WHERE grade IN('B','C')and
: student.studno=grades.studno);
: (B) SELECT name
: FROM student JOIN grades ON student.studno=grades.studno
: WHERE grade='A';
: (C) SELECT name
: FROM student,grades
: WHERE grade='A'and student.studno=grades.studno;
: (D) SELECT name
: FROM student
: WHERE 'A'=ALL(SELECT grade
: FROM grades
: WHERE student.studno=grades.studno);
: 已知题目没有提到等第有哪些 所以不考虑A
: 由於grades的属性没有name 所以C也不考虑
: B跟D不知道差在哪 答案是D 可是不知道B错在哪
把B改一下变成
select name
from student, grades
where student.studno=grades.studno
and grade='A'
B很明显错了
这样选应该只会跑出「得到A的学生」
而不是跑出「每一科都用A passed 的学生」
如果你选D,那会选出每一科成绩都等於A的学生
只有差在这里
题意条件是
retrieve the names of students who got an A in each course they passed?
应该是这样吧我想...
顺便说...
选项C我看一下,运算结果大概跟B一样。
这跟grades table里面有没有name属性没关系
使用table_name.column_name 来呼叫特定行这种写法
只有在join 的tables里面有一样的column命名时才需要特别标明
其他时候不需要...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.111.51.2
※ 编辑: ARCHERDEVIL 来自: 175.111.51.2 (06/11 09:15)
1F:推 beatfuture:好难的题目....请问这些题目是去哪里找到的呢? 06/11 14:15
2F:→ ARCHERDEVIL:看原PO写好像是某年云科大硕班资管所考题? 06/11 15:05