資料庫兩題 - 考試
By Aaliyah
at 2013-06-11T08:06
at 2013-06-11T08:06
Table of Contents
以下我沒有自己建資料庫跑過
純粹就個人認知回答歐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命名時才需要特別標明
其他時候不需要...
--
純粹就個人認知回答歐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命名時才需要特別標明
其他時候不需要...
--
Tags:
考試
All Comments
By James
at 2013-06-12T14:42
at 2013-06-12T14:42
By Cara
at 2013-06-17T02:00
at 2013-06-17T02:00
Related Posts
資料庫兩題
By Jake
at 2013-06-11T03:37
at 2013-06-11T03:37
行政學的問題
By Hamiltion
at 2013-06-11T00:52
at 2013-06-11T00:52
補習班准考證價
By Robert
at 2013-06-11T00:21
at 2013-06-11T00:21
電機機械-同步發電機
By Ida
at 2013-06-11T00:03
at 2013-06-11T00:03
民法兩題相似題目...
By Olga
at 2013-06-10T23:35
at 2013-06-10T23:35