- Filtering with the WHERE Clause
- Sorting with the ORDER BY Clause
- Exam Prep Questions
Exam Prep Questions
-
What is the symbol < called in this query?
-
Logical operator
-
Comparison condition
-
Comparison operator
-
Logical condition
-
None of the above
-
This query will cause an error. Why?
-
RANK/100 cannot be compared with 0.5 using the > operator.
-
The FROM clause is incorrect.
-
The WHERE clause should appear before the FROM clause.
-
Too many columns are selected.
-
The query will not cause an error.
-
What will this query find? Select the best answer.
-
All rows with TITLE beginning with the letter B.
-
It will cause an error.
-
All movies containing an e in their title.
-
The intersecting rows from answers A and C.
-
None of the above.
-
Which of these answers are correct? Select three answers.
-
Both IN and EXISTS can compare two expressions.
-
IN compares two expressions.
-
IN compares a single expression against a list of values.
-
EXISTS compares a single expression with a Boolean (true or false) result.
-
All of the above.
-
Assume that the MOVIE table contains titles with YEAR column values in all three of the years 1998, 1999, and 2000. Which of these queries produces the least number of rows?
-
SELECT TITLE FROM MOVIE WHERE YEAR = ANY(1998,1999,2000);
-
SELECT TITLE FROM MOVIE WHERE YEAR = SOME(1998,1999,2000);
-
SELECT TITLE FROM MOVIE WHERE YEAR = ALL(1998,1999,2000);
-
What type of a query is this?
-
How many rows will this query find?
-
How many rows will this query produce?
-
What is wrong with this query?
-
Not enough columns are selected.
-
The second and third comparisons should be replaced with BETWEEN.
-
Precedence!
-
There is nothing wrong with this query.
-
None of the above.
-
For this query, if some rows have NULL valued GENDER columns, where will those NULL valued rows appear in the sorted order?
-
First
-
Last
-
Never
-
In the middle
SELECT TITLE, RANK FROM MOVIE WHERE RANK < 1000;
Answer B, comparison condition, is the correct answer. A, logical operator, should be called a logical condition, and those are NOT, AND, and OR. C contradicts B and is thus incorrect. Because B is correct, E is incorrect.
SELECT TITLE, RANK, REVIEW_RANK FROM MOVIE WHERE RANK/100 > 0.5;
There is nothing wrong with this query, and thus answer E is correct. The WHERE clause, its expression, and the FROM clause are fine; thus A, B, and C are not correct answers. D is incorrect because there is no limitation on the number of columns selected; the only limitation is that they must exist.
SELECT TITLE FROM MOVIE WHERE TITLE LIKE 'B%e%';
Answer D is correct because it is the "best" answer. The query will return only movie titles beginning with B and containing an e. Both answer A and answer C are partially correct because only some rows could be returned for each due to the possibility of rows without both characters. Both answer B and answer E are therefore incorrect as well.
IN compares two expressions; EXISTS produces a Boolean result for a single expression. Therefore, A is wrong, and E is thus incorrect as well. B, C, and D are all correct.
C is correct because it will produce zero rows. A and B will produce at least three rows each (at least one for each year). Why? ANY and SOME require that the YEAR must match at least one of the three years 1998, 1999, and 2000. ALL, on the other hand, requires that every movie must have three values in the YEAR column: 1998, 1999, and 2000. This is of course impossible, and thus C produces no rows at all, the least number of rows.
SELECT * FROM (SELECT TITLE FROM MOVIE ORDER BY RANK DESC) WHERE ROWNUM < 4;
Valid answers are Top-N, TopN, Top-N query, TOPN query, in uppercase, lowercase, or mixed case.
SELECT * FROM (SELECT TITLE FROM MOVIE ORDER BY RANK DESC) WHERE ROWNUM > 4;
Valid answers are 0, zero, none, no rows, in any case. ROWNUM > 4 is invalid. Only ROWNUM < 4 is valid. This is because ROWNUM is a pseudocolumn generated as the query is produced. It is impossible to tell what is greater than when values greater than 4 have not yet been reached.
SELECT TITLE, RANK FROM MOVIE WHERE RANK BETWEEN 1000 AND 900;
Valid answers are 0, zero, none, no rows. Why? RANK BETWEEN 1000 AND 900 equates to the expression: RANK >=1000 AND RANK <= 900. We cannot find >=1000 and <=900 using BETWEEN.
SELECT TITLE FROM MOVIE WHERE YEAR = 2000 AND RANK > 1000 OR REVIEW_RANK > 4;
The correct answer is C; the problem is precedence and lack of parentheses, (... AND ...). A coder examining this query should spot the lack of parentheses before anything else.
SELECT GENDER, TYPECAST, NAME FROM ACTOR ORDER BY TYPECAST DESC NULLS FIRST;
The correct answer is A. By default, NULL values are not sorted and Oracle Database returns them at the end of a query, appearing as the final rows returned. Both the DESC and the NULLS FIRST clauses force NULL rows to be returned as the beginning rows of the query. Therefore, answers B, C, and D are all incorrect.