Truy vấn con để giải quyết câu hỏi truy vấn

1. Which of the following are the types of sub-queries?

  1. Truy vấn phụ có thứ tự
  2. Các truy vấn phụ được nhóm lại
  3. Truy vấn phụ hàng đơn
  4. Không có cái nào ở trên

Answer: C. Truy vấn con là một truy vấn hoàn chỉnh được lồng trong mệnh đề SELECT, FROM, HAVING hoặc WHERE của một truy vấn khác. Truy vấn con phải được đặt trong dấu ngoặc đơn và tối thiểu phải có mệnh đề SELECT và FROM. Truy vấn phụ một hàng và truy vấn phụ nhiều hàng là các loại truy vấn phụ chính

2.Which of the following is true about sub-queries?

  1. Chúng thực thi sau khi truy vấn chính thực thi
  2. Chúng thực thi song song với truy vấn chính
  3. Người dùng có thể thực hiện truy vấn chính và sau đó, nếu muốn, thực hiện truy vấn phụ
  4. Chúng thực thi trước khi truy vấn chính thực thi.

Answer: D. Truy vấn phụ luôn thực thi trước khi thực thi truy vấn chính. Các truy vấn được hoàn thành trước. Kết quả của truy vấn con được sử dụng làm đầu vào cho truy vấn bên ngoài.

3.Which of the following is true about the result of a sub-query?

  1. Kết quả của một truy vấn con thường bị bỏ qua khi thực thi.
  2. Kết quả của một truy vấn phụ không cho kết quả, nó chỉ hữu ích trong việc tăng tốc độ thực thi truy vấn chính
  3. Kết quả của một truy vấn phụ được sử dụng bởi truy vấn chính.
  4. Kết quả của một truy vấn phụ luôn là NULL

Answer: C. Truy vấn con được hoàn thành trước. Kết quả của truy vấn con được sử dụng làm đầu vào cho truy vấn bên ngoài.

4.Which of the following clause is mandatorily used in a sub-query?

  1. SELECT
  2. WHERE
  3. ĐẶT BỞI
  4. NHÓM THEO

Answer: A. Truy vấn phụ cũng giống như bất kỳ truy vấn nào khác phải bắt đầu bằng mệnh đề SELECT. Chúng được chứa trong một truy vấn bên ngoài.

5. Which of the following is a method for writing a sub-query in a main query?

  1. Bằng cách sử dụng JOINS
  2. Bằng cách sử dụng mệnh đề WHERE
  3. Bằng cách sử dụng mệnh đề GROUP BY
  4. Bằng cách viết một câu lệnh SELECT được nhúng trong mệnh đề của một câu lệnh SELECT khác

Answer: D. Truy vấn con là một truy vấn hoàn chỉnh được lồng trong mệnh đề SELECT, FROM, HAVING hoặc WHERE của một truy vấn khác. Truy vấn con phải được đặt trong dấu ngoặc đơn và tối thiểu phải có mệnh đề SELECT và FROM.

6.In the given scenarios, which one would appropriately justify the usage of sub-query?

  1. Khi chúng ta cần tổng hợp các giá trị
  2. Khi chúng ta cần chuyển đổi các giá trị ký tự thành giá trị ngày tháng hoặc số
  3. Khi chúng ta cần chọn các hàng từ một bảng với một điều kiện phụ thuộc vào dữ liệu từ bảng giống nhau hoặc khác nhau.
  4. Không có cái nào ở trên

Answer: C.

7.In which of the following clauses can a sub-query be used?

  1. HAVING
  2. WHERE
  3. FROM
  4. Tất cả những điều trên

Answer: D. Một truy vấn phụ không khác với một truy vấn thông thường. Nó có thể sử dụng tất cả các mệnh đề chính của một câu lệnh SELECT.

8.Which of the following single-row operators can be used for writing a sub-query?

  1. >=
  2. <
  3. =
  4. Tất cả những điều trên

Answer: D. Các toán tử một hàng bao gồm =,>, <,> =, <=, và <>.

9.Which of the following multi-row operators can be used with a sub-query?

  1. IN
  2. ANY
  3. ALL
  4. Tất cả những điều trên

Answer: D. Truy vấn con nhiều hàng trả về nhiều hơn một hàng kết quả. Các trình vận hành có thể được sử dụng với các truy vấn con nhiều hàng bao gồm IN, ALL, ANY và EXISTS.

10.What is true about the output obtained from a sub-query?

  1. Nó vẫn còn trong bộ đệm đệm
  2. Nó vẫn nằm trong truy vấn phụ và có thể được sử dụng sau này khi cần
  3. Nó được sử dụng để hoàn thành truy vấn bên ngoài (chính)
  4. Cả A và C

Answer: C. Truy vấn con được hoàn thành trước. Kết quả của truy vấn con được sử dụng làm đầu vào cho truy vấn bên ngoài.

11.You need to find the salaries for all the employees who have a higher salary than the Vice President of a company 'ABC'.Which of the following queries will give you the required result? (Consider the table structure as given)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
  1. SELECT first_name, last_name, salary
    FROM employees 
    WHERE salary > (SELECT salary
    FROM employees 
    WHERE job_id = 'VICE-PRESIDENT');
  2. SELECT first_name, last_name, salary
    FROM employees 
    WHERE salary = (SELECT salary
    FROM employees 
    WHERE job_id = 'VICE-PRESIDENT');
  3. SELECT first_name, last_name, salary
    FROM employees 
    WHERE job_id = 'VICE-PRESIDENT');
  4. Không có cái nào ở trên

Answer: A. Trong tùy chọn 'A', truy vấn phụ bên trong cung cấp mức lương của VP do kết quả của truy vấn bên ngoài.

12.What among the following is true about sub-queries?

  1. Truy vấn phụ có thể được viết ở hai bên của toán tử so sánh
  2. Dấu ngoặc đơn không bắt buộc đối với các truy vấn phụ
  3. Truy vấn phụ một hàng có thể sử dụng toán tử nhiều hàng nhưng ngược lại thì không thể
  4. Tất cả những điều trên

Answer: A. Các truy vấn phụ có thể được đặt ở bên trái hoặc bên phải của toán tử so sánh tùy thuộc vào thụt lề truy vấn và khả năng sử dụng.

13. What will be the outcome of the following query? (Consider the given table structure)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT first_name, last_name, salary
FROM employees
WHERE salary ANY (SELECT salary FROM employees);
  1. Nó thực hiện thành công cho kết quả mong muốn
  2. Nó thực hiện thành công nhưng không cho kết quả mong muốn
  3. Nó tạo ra một lỗi ORA
  4. Nó thực thi thành công và đưa ra hai giá trị cho mỗi hàng thu được trong tập kết quả

Answer: C. Toán tử nhiều hàng không thể được sử dụng trong truy vấn con một hàng và ngược lại.

14.Which of the following is true about single-row sub-queries?

  1. Họ đưa ra một kết quả từ truy vấn chính
  2. Họ chỉ đưa ra một hàng trong tập kết quả
  3. Chúng chỉ trả về một hàng từ câu lệnh SELECT bên trong
  4. Chúng cung cấp nhiều hàng từ truy vấn chính (bên ngoài)

Answer: C. Truy vấn con một hàng có thể trả về tối đa một giá trị.

15.What is true about multi-row sub-queries?

  1. Chúng có thể trả về nhiều hơn một cột do kết quả của truy vấn bên trong
  2. Chúng trả về nhiều hàng trong truy vấn chính nhưng chỉ một kết quả duy nhất được đặt trong truy vấn bên trong
  3. Chúng trả về một hàng trong truy vấn chính nhưng nhiều hàng trong truy vấn phụ bên trong
  4. Chúng trả về nhiều hơn một hàng từ câu lệnh SELECT bên trong

Answer: D. Truy vấn phụ nhiều cột trả về nhiều hơn một cột trong tập kết quả của chúng, truy vấn phụ nhiều hàng trả về nhiều hơn một hàng từ truy vấn bên trong.

16.What among the following is true about single-row sub-queries?

  1. Chúng chỉ trả về một hàng
  2. Họ sử dụng toán tử một hàng
  3. Cả A và B
  4. Không có cái nào ở trên

Answer: C.

17.Which of the following operators cannot be used in a sub-query?

  1. AND
  2. <
  3. >
  4. <>

Answer: A. Các toán tử một hàng bao gồm =,>, <,> =, <=, và <>. Toán tử nhiều hàng có thể được sử dụng với các truy vấn con nhiều hàng bao gồm IN, ALL, ANY và EXISTS.

Examine the exhibit and answer the questions 18 to 21 that follow.

18.You need to find out the names of all employees who belong to the same department as the employee 'Jessica Butcher' who is in department 100 and has an employee ID 40. Which of the following queries will be correct?

  1. SELECT first_name, last_name
    FROM employees
    WHERE last_name = 'Butcher'
    And first_name = 'Jessica';
  2. SELECT first_name, last_name
    FROM employees
    WHERE department =100;
  3. SELECT first_name, last_name
    FROM employees
    WHERE department  = (SELECT department
    FROM employees
    WHERE first_name = 'Jessica'
    AND last_name = 'Butcher');
  4. SELECT first_name, last_name
    FROM employees
    WHERE department  = (SELECT department
    FROM employees
    WHERE first_name = 'Jessica'
    AND last_name = 'Butcher'
    AND department = 100
    AND employee_id = 40);

Answer: D. 'D' thích hợp hơn 'C' vì nó lọc id nhân viên là duy nhất và đảm bảo rằng truy vấn phụ sẽ chỉ trả về một hàng duy nhất. 'C' có thể không thành công nếu có nhiều hơn một nhân viên có cùng họ và tên.

19.You need to find out the employees which belong to the department of 'Jessica Butcher' and have salary greater than the salary of 'Jessica Butcher' who has an employee ID of 40. Which of the following queries will work?

  1. SELECT first_name, last_name
    FROM employees
    WHERE last_name = 'Butcher'
    AND first_name = 'Jessica'
    AND salary > 10000;
  2. SELECT first_name, last_name
    FROM employees
    WHERE department = 100;
  3. SELECT first_name, last_name
    FROM employees
    WHERE department = (SELECT department
    			FROM employees
    			WHERE first_name = 'Jessica'
    			AND last_name = 'Butcher'
    			AND employee_id = 40)
    AND salary > (SELECT salary
    			 FROM employees
    			 WHERE first_name = 'Jessica'
    			 AND last_name = 'Butcher'
    			 AND employee_id = 40);
  4. SELECT first_name, last_name
    FROM employees
    WHERE department  = (SELECT department
    			FROM employees
    			WHERE first_name = 'Jessica'
    			AND last_name = 'Butcher'
    			AND department = 100);

Answer: C. Có thể viết nhiều truy vấn con trong một câu lệnh SQL để thêm nhiều hơn một điều kiện.

20.Based on the answers for questions 18th and 19th, what type of sub-queries is used by them?

  1. Truy vấn phụ hàng đơn
  2. Truy vấn phụ nhiều hàng
  3. Cả A và B
  4. Truy vấn phụ nội tuyến

Answer: A. Các câu hỏi thứ 18 và 19 được đưa ra ở trên chứng minh cách sử dụng các truy vấn con trong một câu lệnh SELECT.

21.Consider two statements about outer and inner queries in context of SQL sub-queries?

Tôi. Các truy vấn bên trong chỉ có thể lấy dữ liệu từ một bảng

ii. Các truy vấn bên trong có thể lấy dữ liệu từ nhiều bảng

Câu nào trên đây là đúng?

  1. (i)
  2. (ii)
  3. Cả (i) và (ii)
  4. Không (i) cũng không (ii)

Answer: B. Truy vấn phụ có thể tìm nạp dữ liệu từ nhiều bảng.

Examine the table structure as follows and answer the questions 22 to 27 that follow:

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

22.What will be the outcome of the following query? (Choose the most appropriate answer)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT last_name, job_id, salary
FROM employees
WHERE salary = (SELECT max(salary)
FROM employees);
  1. Nó thực hiện thành công và mang lại cho những nhân viên có mức lương bằng với mức lương tối đa.
  2. Nó thực thi thành công nhưng không cho kết quả cần thiết
  3. Nó ném ra một lỗi khi một hàm nhóm được sử dụng trong truy vấn phụ
  4. Nó ném ra một lỗi vì một truy vấn phụ hàng đơn phải chứa toán tử nhiều hàng

Answer: A. Một hàm nhóm có thể được sử dụng trong một truy vấn phụ.

23.What will be the outcome of the query that follows?

SELECT first_name, last_name, min(salary)
FROM employees
GROUP BY department_id 
HAVING MIN(salary) > 
		(SELECT min(salary)
		FROM employees
		WHERE department_id = 100);
  1. Nó thực hiện thành công và đưa ra tên và mức lương tối thiểu lớn hơn bộ phận 100 của tất cả nhân viên
  2. Nó thực hiện thành công và trả lương cho nhân viên trong bộ phận 100
  3. Nó thực hiện thành công và cung cấp tên và mức lương tối thiểu của tất cả nhân viên.
  4. Nó ném ra một lỗi.

Answer: A. Mệnh đề HAVING có thể được sử dụng trong các truy vấn phụ như được hiển thị

24.You need to find the job which has a maximum average salary.Which of the following queries will give you the required results?

  1. SELECT job_id, avg(salary)
    FROM employees
    GROUP BY job_id;
  2. SELECT job_id, avg(salary)
    FROM employees
    GROUP BY job_id
    HAVING job_id in (SELECT max(avg(salary) FROM employees);
  3. SELECT job_id, avg(salary)
    FROM employees
    GROUP BY job_id
    HAVING max(avg(salary) in (SELECT max(avg(salary) FROM employees);
  4. SELECT job_id, avg(salary)
    FROM employees
    GROUP BY job_id
    HAVING avg(salary) in (SELECT max(avg(salary) FROM employees GROUP BY job_id);

Answer: D. Truy vấn con có thể sử dụng các hàm nhóm và mệnh đề HAVING để hạn chế các nhóm.

25.The following query throws an error. Choose the correct reason for the error as given in the options.

SELECT first_name, last_name
FROM employees
WHERE commission_pct  = (SELECT min(commission_pct )
          FROM employees
          GROUP BY department_id);
  1. Mệnh đề GROUP BY không bắt buộc trong truy vấn phụ
  2. Không thể sử dụng một hàm trong câu lệnh SELECT truy vấn phụ
  3. Truy vấn phụ hàng đơn cung cấp nhiều bản ghi
  4. Việc sử dụng toán tử "=" không hợp lệ; một toán tử IN sẽ hoạt động chính xác

Answer: C, D. Mệnh đề GROUP BY đưa ra mức hoa hồng_pct tối thiểu cho mỗi bộ phận và do đó nhiều kết quả được tải về truy vấn chính gây ra lỗi.

26.Consider the query given below.How many records will be returned as a result of the above query? (Assuming the no employee with job id XX exists in the company)

SELECT first_name, last_name
FROM employees
WHERE salary = (SELECT salary
		FROM employees
		WHERE job_id = 'XX');
  1. 1
  2. NULL
  3. 0
  4. Truy vấn làm tăng lỗi ORA vì truy vấn phụ không hợp lệ.

Answer: C. Vì không có nhân viên nào có job_id "XX" trong công ty, nên truy vấn phụ không trả về kết quả nào, khi tương đương với job_id trong truy vấn chính sẽ cho kết quả là 0.

27.What happens if the WHERE condition in the query given in question 26 is replaced with a new one (WHERE job_id IS NOT NULL)? (Assume the number of records in 'employees' table is 14).

  1. 1
  2. 14
  3. 0
  4. Lỗi ORA

Answer: D. Việc thực thi truy vấn đưa ra ngoại lệ "ORA-01427: truy vấn con một hàng trả về nhiều hơn một hàng".

28.Which of the following are valid multi row operators used for sub-queries?

  1. <=
  2. BẤT KỲ> =
  3. !=
  4. >=

Answer: B. Các truy vấn con nhiều hàng trả về nhiều kết quả. trong tùy chọn B.

Examine the table structure as given. Consider the query given below and answer the questions 29 to 33 that follow

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT first_name, last_name, salary, commission_pct 
FROM employees 
WHERE salary < ANY  (SELECT salary
		FROM employees
		WHERE department_id  = 100)
AND department_id  <> 101;

29.What does the ANY operator evaluates to in the above query?

  1. TRUE
  2. FALSE
  3. NULL
  4. 0

Answer: A. Các toán tử nhiều hàng trả về kết quả Boolean. Khi có kết quả về mức lương trong bộ phận 100, nó trả về TRUE. Nếu có 0 kết quả, nó đánh giá là FALSE.

30.What will be the outcome of the query if we assume that the department 100 has only one employee?

  1. Nó thực thi thành công với một kết quả
  2. Nó thực hiện thành công việc trả lương cho tất cả nhân viên
  3. NULL
  4. Nó tạo ra một lỗi ORA

Answer: D. Nếu bộ phận 100 có một kết quả (truy vấn phụ hàng đơn), toán tử <BẤT KỲ sẽ đưa ra lỗi vì đây là toán tử nhiều hàng.

31.What will be the outcome of the query given above if the < ANY operator is replaced with = ANY operator?

  1. Oracle sẽ xử lý từng giá trị của tiền lương được trả về từ truy vấn con giống như với toán tử IN
  2. Sẽ không có sự khác biệt trong kết quả
  3. Kết quả sẽ khác
  4. Việc thực thi sẽ xuất hiện một lỗi ORA

Answer: A. = Toán tử BẤT KỲ tương đương với toán tử IN.

32.What can be said about the < ANY operator in the query given above?

  1. Nó cho giá trị tiền lương tối đa
  2. Nó cung cấp giá trị tối thiểu của tiền lương
  3. Nó có nghĩa là nó cung cấp các giá trị nhỏ hơn giá trị cao nhất
  4. Không có cái nào ở trên

Answer: C. Toán tử nhiều hàng <ANY đánh giá các câu lệnh "Nhỏ hơn mức tối đa" của truy vấn con. '> ALL' Nhiều hơn giá trị cao nhất mà truy vấn con trả về. '<ALL' Nhỏ hơn giá trị thấp nhất mà truy vấn con trả về. '<ANY' Nhỏ hơn giá trị cao nhất mà truy vấn con trả về. '<ANY' Nhiều hơn giá trị thấp nhất được trả về bởi truy vấn con. '= ANY' Bằng bất kỳ giá trị nào được trả về bởi truy vấn con (giống như IN). Hàng '[NOT] EXISTS' phải khớp với một giá trị trong truy vấn con

33.Assume that the < ANY operator is replaced with the > ANY. What is true about this operator?

  1. Nó đưa ra mức lương tối đa
  2. Nó chỉ tìm thấy mức lương tối đa từ truy vấn phụ
  3. Nó mang lại nhiều hơn mức lương tối thiểu
  4. Nó đưa ra mức lương tối thiểu

Answer: C. Toán tử nhiều hàng> ANY đánh giá các câu lệnh "Lớn hơn mức tối thiểu" của truy vấn con. '> ALL' Nhiều hơn giá trị cao nhất mà truy vấn con trả về. '<ALL' Nhỏ hơn giá trị thấp nhất mà truy vấn con trả về. '<ANY' Nhỏ hơn giá trị cao nhất mà truy vấn con trả về. '> ANY' Nhiều hơn giá trị thấp nhất do truy vấn con trả về. '= ANY' Bằng bất kỳ giá trị nào được trả về bởi truy vấn con (giống như IN). Hàng '[NOT] EXISTS' phải khớp với một giá trị trong truy vấn con

34. Examine the given table structure and consider the following query:

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT employee_id, first_name, last_name
FROM employees
WHERE salary IN (SELECT max(salary)
		FROM employees
		GROUP BY department_id );

Mệnh đề WHERE nào trong số các mệnh đề sau đây tương đương với mệnh đề được đưa ra trong truy vấn trên? (Giả sử rằng mức lương là 2500, 3000, 3500,4000)

  1. WHERE salary < ANY (SELECT max(salary)
    			FROM employees
    			GROUP BY department_id );
  2. WHERE salary < ALL (SELECT max(salary)
    			FROM employees
    			GROUP BY department_id );
  3. WHERE salary = (SELECT max(salary)
    			FROM employees
    			GROUP BY department_id );
  4. WHERE salary IN (2500,3000,3500,4000);

Answer: D. Khi toán tử IN được sử dụng, Oracle xử lý các kết quả riêng lẻ của truy vấn phụ như được hiển thị trong tùy chọn D.

Examine the structure of the EMPLOYEES table as given below and answer the questions 35 to 37 that follow.

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

35. You need to find out which of the employees have a salary less than that of the salary for the job ID 'FIN_ACT'. Which of the following queries will give you the required output?

  1. SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary < ALL 
    		(SELECT salary
    		 FROM employees
    		 WHERE job_id = 'FIN_ACT')
    		 AND job_id <> 'FIN_ACT';
  2. SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary > ALL 
    		(SELECT salary
    		FROM employees
    		WHERE job_id = 'FIN_ACT')
    		AND job_id <> 'FIN_ACT';
  3. SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary < ANY 
    		(SELECT salary
    		FROM employees
    		WHERE job_id = 'FIN_ACT')
    		AND job_id <> 'FIN_ACT';
  4. SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary = 	(SELECT salary
    		FROM employees
    		WHERE job_id = 'FIN_ACT')
    		AND job_id <> 'FIN_ACT';

Answer: A. <ALL có nghĩa là ít hơn mức tối thiểu. '> ALL' Nhiều hơn giá trị cao nhất mà truy vấn con trả về. '<ALL' Nhỏ hơn giá trị thấp nhất mà truy vấn con trả về. '<ANY' Nhỏ hơn giá trị cao nhất mà truy vấn con trả về. '> ANY' Nhiều hơn giá trị thấp nhất do truy vấn con trả về. '= ANY' Bằng bất kỳ giá trị nào được trả về bởi truy vấn con (giống như IN). Hàng '[NOT] EXISTS' phải khớp với một giá trị trong truy vấn con

36.What will be the outcome of the above query (the option A in the question above), if the < ALL is replaced with the >ALL?

  1. Nó sẽ thực thi thành công cho cùng một kết quả.
  2. Nó sẽ xuất hiện một lỗi ORA
  3. Nó sẽ thực thi thành công nhưng cung cấp thông tin chi tiết của nhân viên có mức lương thấp hơn tất cả nhân viên có job_id 'FI_ACCOUNTANT'.
  4. Không có cái nào ở trên

Answer: C. > TẤT CẢ có nghĩa là ít hơn mức tối thiểu. '> ALL' Nhiều hơn giá trị cao nhất mà truy vấn con trả về. '<ALL' Nhỏ hơn giá trị thấp nhất mà truy vấn con trả về. '<ANY' Nhỏ hơn giá trị cao nhất mà truy vấn con trả về. '> ANY' Nhiều hơn giá trị thấp nhất do truy vấn con trả về. '= ANY' Bằng bất kỳ giá trị nào được trả về bởi truy vấn con (giống như IN). Hàng '[NOT] EXISTS' phải khớp với một giá trị trong truy vấn con

37.You need to find the salaries for all employees who are not in the department 100. Which of the following queries will give you the required result?

  1. SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary !=ALL 
    		(SELECT salary
    		FROM employees
    		WHERE department_id  = 100)
    		AND department_id  <> 100;
  2. SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary NOT IN 
    		(SELECT salary
    		FROM employees
    		WHERE department_id  = 100)
    		AND department_id  <> 100;
  3. SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary NOT ALL 
    		(SELECT salary
    		FROM employees
    		WHERE department_id  = 100)
    		AND department_id  <> 100;
  4. SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary != (SELECT salary
    		FROM employees
    		WHERE department_id  = 100)
    		AND department_id  <> 100;

Answer: C. NOT có thể được sử dụng với các toán tử nhiều hàng IN, ANY và ALL.

Kiểm tra cấu trúc bảng như đã cho. Hãy xem xét truy vấn sau và trả lời các câu hỏi 38 và 39 tiếp theo. Bạn cần tìm những nhân viên không có chức vụ phụ để báo cáo cho họ. (Giả sử có 0 kết quả mong đợi)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT first_name, last_name 
FROM employees
WHERE employee_id NOT IN 
		(SELECT manager_id
		FROM employees);

38.What will be the result of the query given above?

  1. 10
  2. NULL
  3. Lỗi ORA
  4. 0

Answer: D. Một trong những giá trị trong truy vấn phụ bên trong là NULL (tất cả nhân viên không phải là người quản lý!)

39.Which of the following WHERE clauses should be added / modified to the above query to give the expected results?

  1. WHERE employee_id != (SELECT manager_id FROM employees);
  2. WHERE employee_id IN (SELECT manager_id FROM employees);
  3. WHERE employee_id <>ALL (SELECT manager_id FROM employees);
  4. WHERE employee_id NOT IN (SELECT manager_id
    			FROM employees
    			WHERE manager_id is NOT NULL);

Answer: B, D. Nếu truy vấn phụ có khả năng có giá trị NULL, không sử dụng toán tử NOT IN hoặc nếu sử dụng, hãy sửa đổi truy vấn phụ bằng mệnh đề WHERE bổ sung (tùy chọn D)

40.What is true about sub-queries in general?

  1. Truy vấn phụ phải được thực hiện tách biệt với các truy vấn chính
  2. Các truy vấn phụ có thể được thực thi theo ý muốn của người dùng, chúng không liên quan đến việc thực thi truy vấn chính
  3. Truy vấn phụ bằng hai truy vấn tuần tự trong đó kết quả của truy vấn bên trong được truy vấn chính sử dụng
  4. Tất cả những điều trên

Answer: C.

41. Which of the following is true about sub-queries?

  1. Một truy vấn phụ có thể trả về 0 hoặc nhiều hàng
  2. Một truy vấn phụ chỉ có thể được sử dụng trong mệnh đề SELECT
  3. Việc lồng các truy vấn phụ được giới hạn ở 2 cấp
  4. Các hàm nhóm không thể được sử dụng trong các truy vấn phụ

Answer: A. Truy vấn con là một truy vấn hoàn chỉnh được lồng trong mệnh đề SELECT, FROM, HAVING hoặc WHERE của một truy vấn khác. Truy vấn con phải được đặt trong dấu ngoặc đơn và tối thiểu phải có mệnh đề SELECT và FROM. Truy vấn con một hàng có thể trả về tối đa một giá trị. Truy vấn con nhiều cột trả về nhiều hơn một cột cho truy vấn bên ngoài.

42. Examine the table structure as given.

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)

Hãy xem xét truy vấn sau đây.

SELECT first_name, last_name 
FROM employees
WHERE employee_id NOT IN 
		(SELECT manager_id, hire_date
		FROM employees 
		WHERE manager_id is not null);

Truy vấn này trả về một lỗi. Lý do lỗi là gì?

  1. Toán tử NOT IN được sử dụng không hợp lệ
  2. Mệnh đề WHERE trong truy vấn phụ bị viết sai
  3. Cột trong mệnh đề SELECT truy vấn phụ chỉ nên là một khi có bất đẳng thức được sử dụng trong truy vấn chính
  4. Truy vấn phụ sử dụng cùng một bảng với truy vấn chính

Answer: C. Các cột được chọn trong truy vấn phụ phải giống như ở phía bên kia của toán tử so sánh. Bất kỳ sự bất bình đẳng nào về kiểu dữ liệu hoặc số lượng cột sẽ dẫn đến lỗi ORA.

43.A report has to be extracted which displays all the departments that have one or more employees assigned to them. Which of the following queries will give the required output? (Consider the table structure as given)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
  1. SELECT department_name
    FROM employees
    WHERE department_id  IN (SELECT distinct (department_id )
    			FROM employees);
  2. SELECT department_name
    FROM employees
    WHERE department_id  ANY (SELECT distinct (department_id )
    			FROM employees);
  3. SELECT department_name
    FROM employees
    WHERE department_id  < ANY (SELECT distinct (department_id )
    			FROM employees);
  4. SELECT department_name
    FROM employees
    WHERE department_id  = ANY (SELECT distinct (department_id )
    			FROM employees);

Answer: A, D.

44.What is the maximum level of sub-queries allowed in Oracle in a single SQL statement?

  1. 20
  2. 50
  3. Unlimited
  4. 255

Answer: D. Oracle hỗ trợ lồng các truy vấn đến 255 cấp độ.

45. What should be the best practice to follow when we know what values we need to pass on to the main query in Oracle queries?

  1. Sử dụng GROUP BY
  2. Sử dụng truy vấn phụ
  3. Sử dụng HAVING
  4. Không có cái nào ở trên

Answer: D. Có thể các truy vấn phụ cho kết quả NULL, kết quả là 0 hàng trong kết quả chính; do đó, chỉ nên sử dụng chúng nếu chúng ta biết mình cần những giá trị nào.

Examine the table structure as given. Consider the following query and answer the questions 46 and 47 that follow:

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT employee_id, first_name, last_name, job_id
FROM employees
WHERE job_id = (SELECT job_id FROM employees);

46.You need to find all the employees whose job ID is the same as that of an employee with ID as 210. Which of the following WHERE clauses would you add / modify to achieve this result? (Consider the table structure as given

  1. WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 210);
  2. WHERE job_id IN (SELECT job_id FROM employees WHERE employee_id = 210);
  3. WHERE job_id > (SELECT job_id FROM employees WHERE employee_id = 210);
  4. WHERE job_id >= (SELECT job_id FROM employees WHERE employee_id = 210);

Answer: A.

47.Assume that you change the WHERE clause as given in the option A in question 46 as the following.

WHERE job_id = (SELECT job_id FROM employees WHERE employee_id < 210);

Kết quả của sự thay đổi này sẽ như thế nào?

  1. Kết quả sẽ giống nhau
  2. Đã xảy ra lỗi ORA khi thực thi
  3. Kết quả sẽ khác
  4. Truy vấn sẽ thực hiện thành công với 0 hàng.

Answer: B. Truy vấn phụ cung cấp nhiều hơn một kết quả cho thay đổi đã cho và do đó, toán tử nhiều hàng sẽ thay thế "=" trong truy vấn chính đã cho ở trên.

48.Examine the table structures as shown in the exhibit below.

Bạn cần hiển thị tên của những nhân viên có mức lương cao nhất. Câu lệnh SQL nào sau đây sẽ đúng?

  1. SELECT first_name, last_name, grade
    FROM employees, grade
    WHERE (SELECT max (salary) FROM employees) BETWEEN losal and hisal;
  2. SELECT first_name, last_name, grade
    FROM employees, grade
    WHERE (SELECT max (salary) FROM employees) BETWEEN losal and hisal
    AND salary BETWEEN losal and hisal;
  3. SELECT first_name, last_name, grade
    FROM employees, grade
    WHERE salary = (SELECT max (salary) FROM employees) 
    AND salary BETWEEN losal and hisal;
  4. SELECT first_name, last_name, grade
    FROM employees, grade
    WHERE salary IN (SELECT max (salary) FROM employees) 
    AND max(salary) BETWEEN losal and hisal;

Answer: B, C. Các truy vấn phụ có thể được viết ở hai bên của toán tử

49.What is the sub-query in the FROM clause of an SQL statement? (Choose the most appropriate answer)

  1. Truy vấn phụ hàng đơn
  2. Truy vấn phụ nhiều hàng
  3. Chế độ xem nội tuyến
  4. Truy vấn phụ có liên quan

Answer: C. Nếu một truy vấn phụ xuất hiện trong mệnh đề FROM của các câu lệnh SELECT, nó tạo thành một dạng xem Nội tuyến. Nội bộ Oracle tạo một khung nhìn tạm thời để thực thi truy vấn.

50.What is the maximum number of nesting level allowed in an Inline View type sub-query?

  1. 255
  2. 300
  3. 216
  4. Unlimited

Answer: D. Vì không có giới hạn về số lượng bảng có thể được kết hợp, nên không có giới hạn về số chế độ xem nội tuyến trong một truy vấn.

51.What is true about co-related sub-queries?

  1. Các bảng được sử dụng trong truy vấn chính cũng được sử dụng trong truy vấn phụ có liên quan
  2. Các truy vấn phụ tham chiếu đến một cột được sử dụng trong truy vấn chính được gọi là các truy vấn phụ đồng liên quan
  3. Các truy vấn con được viết không có dấu ngoặc đơn được gọi là các truy vấn con đồng liên quan
  4. Các truy vấn phụ bắt buộc sử dụng các bảng khác với các bảng được sử dụng trong truy vấn chính được gọi là truy vấn phụ đồng liên quan

Answer: B. Truy vấn con có liên quan tham chiếu đến một cột trong truy vấn bên ngoài và thực thi truy vấn con một lần cho mỗi hàng trong truy vấn bên ngoài trong khi truy vấn con Không liên quan thực hiện truy vấn con trước và chuyển giá trị cho truy vấn bên ngoài.

52.Which of the following statements cannot be parent statements for a sub-query?

  1. SELECT
  2. NHÓM THEO
  3. UPDATE
  4. DELETE

Answer: B. Phần còn lại của các tùy chọn có thể nằm trong truy vấn chính (truy vấn mẹ) của truy vấn phụ.

53.What is true about a co-related sub-query?

  1. Nó chỉ được đánh giá một lần cho truy vấn chính
  2. Nó chỉ được đánh giá ba lần cho truy vấn chính
  3. Nó được đánh giá một lần cho mỗi hàng được xử lý bởi truy vấn phụ chính
  4. Tất cả những điều trên

Answer: C. Truy vấn con có liên quan tham chiếu đến một cột trong truy vấn bên ngoài và thực thi truy vấn con một lần cho mỗi hàng trong truy vấn bên ngoài; và toán tử EXISTS được sử dụng để kiểm tra xem mối quan hệ hoặc liên kết có tồn tại hay không.

54.Examine the given table structure. You need to write a query which returns the names of the employees whose salaries exceed their respective department's average salary. Which of the following will work? (Choose the most appropriate answer)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
  1. SELECT employee_id, first_name, last_name
    FROM employees e
    WHERE salary > (SELECT avg (salary)
    		FROM employees
    		WHERE e.department_id  = department_id )
    		ORDER BY department_id ;
  2. SELECT employee_id, first_name, last_name
    FROM employees e
    WHERE salary > ANY (SELECT avg(salary)
    		FROM employees
    		WHERE e.department_id  = department_id )
    		ORDER BY department_id ;
  3. SELECT employee_id, first_name, last_name
    FROM employees e
    WHERE salary = (SELECT avg(salary)
    		FROM employees
    		WHERE e.department_id  = department_id )
    		ORDER BY department_id ;
  4. SELECT employee_id, first_name, last_name
    FROM employees e
    WHERE salary < ANY  (SELECT avg(salary)
    		FROM employees
    		WHERE e.department_id  = department_id )
    		ORDER BY department_id ;

Answer: A. Tại đây ID phòng ban được lấy, được sử dụng để đánh giá truy vấn chính và nếu mức lương trong hàng đó lớn hơn mức lương trung bình của các phòng ban thuộc hàng đó, kết quả đó sẽ được trả về.

55.Examine the given table structure. Which of the following queries will display duplicate records in a table EMPLOYEES?

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
  1. SELECT *
    FROM employees E
    WHERE exists (SELECT 1 FROM employees E1
    		WHERE E.employee_id = E1.employee_id);
  2. SELECT *
    FROM employees E
    WHERE exists (SELECT 1 FROM employees E1
    		WHERE E.employee_id = E1.employee_id
    		AND E.ROWID < E1.ROWID);
  3. SELECT *
    FROM employees E
    WHERE exists (SELECT 1 FROM employees E1
    		WHERE E.ROWID < E1.ROWID);
  4. SELECT *
    FROM employees E
    WHERE = ANY (SELECT 1 FROM employees E1
    		WHERE E.employee_id = E1.employee_id
    		And E.ROWID < E1.ROWID);

Answer: A. Truy vấn con có liên quan tham chiếu đến một cột trong truy vấn bên ngoài và thực thi truy vấn con một lần cho mỗi hàng trong truy vấn bên ngoài; và toán tử EXISTS được sử dụng để kiểm tra xem mối quan hệ hoặc liên kết có tồn tại hay không. Nó có thể được sử dụng để tìm các hàng trùng lặp trong một bảng nơi có sự trùng lặp đối với một cột hoặc tập hợp các cột.

Examine the structures for the tables DEPARTMENTS and EMPLOYEES and answer the questions 56 and 57 that follow.

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SQL> DESC departments
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 DEPARTMENT_ID		 NOT NULL NUMBER(4)
 DEPARTMENT_NAME	 NOT NULL VARCHAR2(30)
 MANAGER_ID			  NUMBER(6)
 LOCATION_ID			  NUMBER(4)

56.Which of the following queries will display the system date and count of records in the DEPARTMENTS and EMPLOYEES table?

  1. SELECT sysdate,
    		(SELECT * FROM departments) dept_count,
    		(SELECT * FROM employees) emp_count
    FROM DUAL;
  2. SELECT sysdate,
    		(SELECT count(*) FROM departments) dept_count,
    		(SELECT count(*) FROM employees) emp_count
    FROM DUAL
    GROUP BY department_id ;
  3. SELECT sysdate,
    		(SELECT * FROM departments) dept_count,
    		(SELECT * FROM employees) emp_count
    FROM DUAL
    GROUP BY employee_id;
  4. SELECT sysdate,
    		(SELECT count(*) FROM departments) dept_count,
    		(SELECT count(*) FROM employees) emp_count
    FROM DUAL;

Answer: D. Một truy vấn con một hàng cũng có thể được lồng trong mệnh đề SELECT của truy vấn bên ngoài. Trong trường hợp này, giá trị mà truy vấn con trả về có sẵn cho mọi hàng đầu ra mà truy vấn bên ngoài tạo ra. Thông thường, kỹ thuật này được sử dụng để thực hiện các phép tính với một giá trị được tạo ra từ một truy vấn con.

57.Which of the following queries will tell whether a given employee is a manager in a Company 'XYZ'?

  1. SELECT employee_id, manager_id
    FROM employees A
    WHERE employee_id ANY (SELECT manager_id from employees B)
    ORDER BY manager_id desc;
  2. SELECT employee_id, manager_id
    FROM employees A
    WHERE employee_id < ALL (SELECT manager_id from employees B)
  3. SELECT employee_id, manager_id
    FROM employees A
    WHERE employee_id IN (SELECT manager_id from employees B)
    ORDER BY manager_id desc;
  4. SELECT employee_id, manager_id
    FROM employees A
    WHERE employee_id in (SELECT manager_id from employees B)
    GROUP BY department_id ;

Answer: C.

Examine the exhibit and answer the question 58 that follows:

58.Which of the following queries will give you maximum salary of an employee in a particular city?

  1. SELECT max (salary), city
    FROM
    (SELECT salary, department_id , loc, city
    FROM employees natural join departments natural join locations);
  2. SELECT salary, city
    FROM
    (SELECT salary, department_id , loc, city
    FROM employees natural join departments natural join locations);
  3. SELECT max (salary), city
    FROM
    (SELECT salary, department_id , loc, city
    FROM employees natural join departments natural join locations)
    GROUP BY city;
  4. SELECT max (avg(salary)), city
    FROM
    (SELECT salary, department_id , loc, city
    FROM employees natural join departments natural join locations);

Answer: C. Khi một truy vấn con nhiều cột được sử dụng trong mệnh đề FROM của truy vấn bên ngoài, nó sẽ tạo ra một bảng tạm thời có thể được tham chiếu bởi các mệnh đề khác của truy vấn bên ngoài. Bảng tạm thời này được gọi chính thức hơn là một dạng xem nội tuyến. Kết quả của truy vấn con được xử lý giống như bất kỳ bảng nào khác trong mệnh đề FROM. Nếu bảng tạm thời chứa dữ liệu được nhóm lại, thì các tập hợp con được nhóm lại được coi như các hàng dữ liệu riêng biệt trong bảng.

Examine the table structures as given below.

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SQL> DESC departments
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 DEPARTMENT_ID		 NOT NULL NUMBER(4)
 DEPARTMENT_NAME	 NOT NULL VARCHAR2(30)
 MANAGER_ID			  NUMBER(6)
 LOCATION_ID			  NUMBER(4)

Hãy xem xét truy vấn sau và trả lời các câu hỏi từ 59 đến 62 tiếp theo.

SELECT  department_name
FROM departments d INNER JOIN employees e
ON (d.employee_id = e.employee_id)
GROUP BY department_name;

59.Which of the following queries can replace the above query by using sub-queries giving the same result?

  1. SELECT department_name
    FROM departments
    WHERE department_id  = ANY (SELECT department_id  FROM employees);
  2. SELECT department_name
    FROM departments
    WHERE department_id  IN (SELECT distinct(department_id ) FROM employees);
  3. SELECT department_name
    FROM departments
    WHERE department_id  = (SELECT distinct(department_id ) FROM employees);
  4. SELECT department_name
    FROM departments
    WHERE department_id  ANY (SELECT distinct(department_id ) FROM employees);

Answer: A, B.

60.Assume that the sub-query as shown in the query given above is modified to the following.

(SELECT distinct (department_id ) FROM employees ORDER BY department_id );

Kết quả của sự thay đổi này sẽ như thế nào? (Chọn câu trả lời thích hợp nhất)

  1. Nó sẽ ra lệnh cho Department_id được tìm nạp từ truy vấn phụ và hiển thị chúng theo thứ tự tăng dần
  2. Nó sẽ tạo ra một lỗi ORA vì mệnh đề ORDER BY phải đi kèm với mệnh đề GROUP BY
  3. Nó sẽ tạo ra lỗi ORA vì không thể sử dụng mệnh đề ORDER BY bên trong truy vấn phụ
  4. Nó sẽ thực thi thành công.

Answer: C. Một truy vấn con, ngoại trừ một truy vấn trong mệnh đề FROM, không thể có mệnh đề ORDER BY.

61.Assume that the query given above is modified as the below one.

SELECT department_name
FROM departments
WHERE department_id  = ANY (SELECT department_id  FROM employees)
ORDER BY department_id  desc;

Kết quả của sự thay đổi này sẽ như thế nào? (Chọn câu trả lời thích hợp nhất)

  1. Nó sẽ ra lệnh cho Department_id được tìm nạp từ truy vấn phụ và hiển thị chúng theo thứ tự tăng dần
  2. Nó sẽ sắp xếp thứ tự của Department_id được lấy từ truy vấn phụ và hiển thị chúng theo thứ tự giảm dần
  3. Nó sẽ tạo ra lỗi ORA vì không thể sử dụng mệnh đề ORDER BY bên trong truy vấn phụ
  4. Không có cái nào ở trên

Answer: D. Một truy vấn con, ngoại trừ một truy vấn trong mệnh đề FROM, không thể có mệnh đề ORDER BY.

62.Which of the following can be used to order results in a sub-query?

  1. ĐẶT BỞI
  2. HAVING
  3. NHÓM THEO
  4. Tất cả những điều trên

Answer: C. Theo mặc định, mệnh đề GROUP BY thực hiện việc sắp xếp thứ tự trong một truy vấn con.

Examine the exhibit below and answer the questions 63 to 65 that follow:

Hãy xem xét truy vấn sau:

SELECT au_id, au_title
FROM audit
WHERE au_details in (SELECT au_details
		  FROM audit
		  WHERE au_title like 'S%')
		  ORDER BY au_title;

63.What will be the outcome of the query given above?

  1. Nó cung cấp tất cả AU_ID và AU_TITLE bắt đầu bằng chữ cái 'S%'
  2. Nó cung cấp tất cả AU_ID và AU_TITLE bắt đầu bằng chữ cái 'S%' được sắp xếp theo tiêu đề theo thứ tự tăng dần
  3. Nó tạo ra một lỗi ORA
  4. Nó trả về giá trị 0

Answer: C. Không thể sử dụng cột có CLOB, BLOB, NCLOB hoặc ARRAY trong truy vấn phụ.

64. What will be the outcome of the following query?

SELECT *
FROM employees
WHERE salary BETWEEN (SELECT max(salary)
			FROM employees
			WHERE department_id  = 100) 
AND (SELECT min(salary) FROM employees where department_id  = 100);

Truy vấn này trả về một lỗi. Lý do cho lỗi là gì?

  1. Mệnh đề GROUP BY nên được sử dụng khi hàm MAX được sử dụng
  2. Cả hai truy vấn phụ không thể sử dụng cùng một ID bộ phận trong cùng một truy vấn bên ngoài
  3. Toán tử BETWEEN không thể được sử dụng với một truy vấn phụ
  4. Mệnh đề SELECT phải có các cột được đề cập và không phải là asterix (*)

Answer: C. Toán tử BETWEEN có thể được sử dụng trong một truy vấn phụ nhưng không được sử dụng với một truy vấn phụ.

65.What is true about using NOT IN when writing queries with sub-queries in them?

  1. NOT IN bỏ qua tất cả các giá trị NULL và chỉ cung cấp các giá trị NOT NULL
  2. NOT IN đặt tất cả các giá trị NULL ở cuối cùng và cho phép NOT NULL được hiển thị đầu tiên
  3. NOT IN không được sử dụng nếu giá trị NULL được mong đợi trong tập kết quả
  4. NOT IN chỉ là một phủ định của toán tử IN và có thể được thay đổi mà không cần báo trước.

Answer: C. SQL xử lý các giá trị NULL theo một cách khác và do đó, bạn nên tránh KHÔNG VÀO nếu tập kết quả có thể chứa NULL.

Consider the following table structures and answer the questions 66 to 72 that follow:

66. You need to find out the names and IDs of the departments in which the least salary is greater than the highest salary in the department 10. Which of the following queries will give the required result.

  1. SELECT department_id , min(salary)
    FROM employees
    GROUP BY department_id 
    HAVING min(salary) >
    		(
    		select max(salary)
    		FROM employees
    		where department_id  = 10
    		)
  2. SELECT department_id , min(salary)
    FROM employees
    GROUP BY department_id 
    HAVING min(salary) > ANY
    		(
    		select max(salary)
    		FROM employees
    		)
  3. SELECT department_id , min(salary)
    FROM employees
    HAVING max(salary) < ANY
    		(
    		select min(salary)
    		FROM employees
    		where department_id  = 10
    		)
  4. SELECT department_id , min(salary)
    FROM employees
    GROUP BY department_id 
    HAVING min(salary) > ALL
    		(
    		select max(salary)
    		FROM employees
    		where department_id  = 10
    		)

Answer: A.

67.Write a query to find the employees whose salary is equal to the salary of at least one employee in department of id 10. (Choose the best answer)

  1. SELECT employee_id, Salary
    FROM employees
    WHERE salary in
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  2. SELECT employee_id, Salary
    FROM employees
    WHERE salary =ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  3. SELECT employee_id, Salary
    FROM employees
    WHERE salary ALL
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  4. SELECT employee_id, Salary
    FROM employees
    WHERE salary  < ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)

Answer: A, B.

68.You need to find out all the employees who have salary greater than at least one employee in the department 10. Which of the following queries will give you the required output?

  1. SELECT employee_id, Salary
    FROM employees
    WHERE salary >= ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  2. SELECT employee_id, Salary
    FROM employees
    WHERE salary > ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  3. SELECT employee_id, Salary
    FROM employees
    WHERE salary < ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  4. SELECT employee_id, Salary
    FROM employees
    WHERE salary = ALL
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)

Answer: B.

69.You need to find out all the employees who have salary lesser than the salary of all the employees in the department 10. Which of the following queries will give you the required output?

  1. SELECT employee_id, Salary
    FROM employees
    WHERE salary > ALL
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  2. SELECT employee_id, Salary
    FROM employees
    WHERE salary =ALL
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  3. SELECT employee_id, Salary
    FROM employees
    WHERE salary < ALL
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)
  4. SELECT employee_id, Salary
    FROM employees
    WHERE salary < ANY
    		(
    		SELECT salary
    		FROM employees
    		where department_id  = 10
    		)

Answer: C. Truy vấn con nhiều hàng trả về nhiều hơn một hàng kết quả. Các toán tử có thể được sử dụng với các truy vấn con nhiều hàng bao gồm IN, ALL, ANY và EXISTS.Các truy vấn con nhiều cột trả về nhiều hơn một cột cho truy vấn bên ngoài. Các cột dữ liệu được chuyển đến truy vấn bên ngoài theo cùng thứ tự mà chúng được liệt kê trong mệnh đề SELECT của truy vấn con.

70.You need to find out all the employees who have their manager and department matching with the employee having an Employee ID of 121 or 200. Which of the following queries will give you the required output?

  1. SELECT employee_id, manager_id,department_id 
    FROM employees
    WHERE (manager_id,department_id ) = ANY
    		(
    		select manager_id,
    		department_id 
    		FROM employees
    		where employee_id in (121,200)
    		)
  2. SELECT employee_id, manager_id,department_id 
    FROM employees
    WHERE (manager_id,department_id ) < ANY
    		(
    		select manager_id,
    		department_id 
    		FROM employees
    		where employee_id in (121,200)
    		)
  3. SELECT employee_id, manager_id,department_id 
    FROM employees
    WHERE (manager_id,department_id ) > ANY
    		(
    		select manager_id,
    		department_id 
    		FROM employees
    		where employee_id in (121,200)
    		)
  4. SELECT employee_id, manager_id,department_id 
    FROM employees
    WHERE (manager_id,department_id ) in
    		(
    		select manager_id,
    		department_id 
    		FROM employees
    		where employee_id in (121,200)
    		)

Answer: A, D. Truy vấn con nhiều hàng trả về nhiều hơn một hàng kết quả. Các toán tử có thể được sử dụng với các truy vấn con nhiều hàng bao gồm IN, ALL, ANY và EXISTS. Truy vấn con nhiều cột trả về nhiều hơn một cột cho truy vấn bên ngoài. Các cột dữ liệu được chuyển đến truy vấn bên ngoài theo cùng thứ tự mà chúng được liệt kê trong mệnh đề SELECT của truy vấn con.

71.You need to find the department name of an employee with employee ID 200. Which of the following queries will be correct? (Choose the most appropriate answer)

  1. SELECT employee_id, first_name, last_name,department_id ,
    (SELECT department_name
    FROM departments d, employees E
    WHERE d.department_id  = e.department_id 
    And employee_id = 200
    )
    FROM employees e
  2. SELECT employee_id, first_name, last_name,department_id ,
    (SELECT department_ID
    FROM departments d
    WHERE d.department_id  = department_id 
    )
    FROM employees e
    WHERE employee_id = 200;
  3. SELECT employee_id, first_name, last_name,department_id ,
    (SELECT department_name
    FROM departments d
    WHERE d.department_id  = e.department_id 
    And employee_id = 200
    )
    FROM employees e
  4. SELECT employee_id, first_name, last_name,department_id ,
    (SELECT department_name
    FROM departments d,employee E 
    WHERE d.department_id  = e.department_id 
    )
    FROM employees e

Answer: C.

72.You need to find the highest earning employee with the job ID as 'SA_REP'. Which of the following queries will be correct? (Choose the most appropriate answer)

  1. SELECT job_id, employee_id, Salary
    FROM employees e
    WHERE job_id  =
    (
    SELECT  distinct salary
    FROM employees E1
    WHERE E.job_id  = E1.job_id 
    AND E.salary <=  E1.salary
    AND job_id  = 'SA_REP'
  2. SELECT department_id , employee_id, Salary
    FROM employees E
    WHERE 1 =
    (
    SELECT  count(distinct salary)
    FROM employees E1
    WHERE E.job_id  = E1.job_id 
    AND E.salary <=  E1.salary
    AND job_id  = 'SA_REP'
    )
  3. SELECT department_id , employee_id, Salary
    FROM employees E
    WHERE 0 =
    (
    SELECT  count(distinct salary)
    FROM employees E1
    WHERE E.job_id  = E1.job_id 
    AND E.salary =  E1.salary
    AND job_id  = 'SA_REP'
    )
  4. SELECT department_id , employee_id, Salary
    FROM employees E
    WHERE 1 =
    (
    SELECT salary
    FROM employees E1
    WHERE E.job_id  < E1.job_id 
    AND E.salary <=  E1.salary
    AND job_id  = 'SA_REP'
    )

Answer: B.

Consider the EMPLOYEES table structure as shown in the exhibit and answer the questions 73 to 77 that follow:

73.You need to find the job which has at least one employee in it. Which of the following queries will be correct? (Choose the most appropriate answer)

  1. SELECT employee_id, Job_id
    FROM employees E
    WHERE exists
    (
    SELECT 1
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  2. SELECT employee_id, Job_id 
    FROM employees E
    WHERE exists
    (
    SELECT *
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  3. SELECT employee_id, Job_id 
    FROM employees E
    WHERE not exists
    (
    SELECT *
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  4. SELECT employee_id, Job_id 
    FROM employees E
    WHERE exists
    (
    SELECT 1
    FROM employees E1
    WHERE E.job_id  < E1.job_id )

Answer: A. Toán tử EXISTS được sử dụng để kiểm tra và khớp các bản ghi giữa các truy vấn. Nó trả về một giá trị BOOLEAN. Truy vấn con có liên quan tham chiếu đến một cột trong truy vấn bên ngoài và thực thi truy vấn con một lần cho mỗi hàng trong truy vấn bên ngoài; và toán tử EXISTS được sử dụng để kiểm tra xem mối quan hệ hoặc liên kết có tồn tại hay không. Một truy vấn con không liên quan sẽ thực thi truy vấn con trước và chuyển giá trị cho truy vấn bên ngoài.

74.You need to find the job which has no employees in it. Which of the following queries will be correct? (Choose the most appropriate answer)

  1. SELECT employee_id, Job_id 
    FROM employees E
    WHERE exists
    (
    SELECT *
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  2. SELECT employee_id, Job_id 
    FROM employees E
    WHERE not exists
    (
    SELECT 1
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  3. SELECT employee_id, Job_id 
    FROM employees E
    WHERE not exists
    (
    SELECT *
    FROM employees E1
    WHERE E.job_id  = E1.job_id )
  4. SELECT employee_id, Job_id 
    FROM employees E
    WHERE exists
    (
    SELECT 1
    FROM employees E1
    WHERE E.job_id  < E1.job_id )

Answer: B. NOT EXISTS là toán tử phủ định cho EXISTS.

75.You need to find the 3rd maximum salary from the EMPLOYEES table. Which of the following queries will give you the required results? (Choose the most appropriate answer)

  1. SELECT * 
    FROM employees E
    WHERE salary = (SELECT count(distinct salary ) 
    		FROM employees 
    		WHERE e.salary = salary 
    		);
  2. SELECT * 
    FROM employees E
    WHERE 1 = (SELECT count(distinct salary ) 
    		FROM employees 
    		WHERE e.salary < salary 
    		);
  3. SELECT * 
    FROM employees E
    WHERE 2 = (SELECT count(distinct salary ) 
    		FROM employees 
    		WHERE e.salary >salary 
    		);
  4. SELECT * 
    FROM employees E
    WHERE 3 = (SELECT count(distinct salary ) 
    		FROM employees 
    		WHERE e.salary <= salary 
    		);

Answer: D.

76. You need to find the maximum salary by using the user input for getting the value of N. Which of the following queries will give you the required results? (Choose the most appropriate answer)

  1. SELECT salary FROM 
    (
    	SELECT rowid as user_sal 
    	FROM (SELECT distinct salary  from employees ORDER BY salary  desc)
    ) 
    WHERE user_sal=&N ;
  2. SELECT salary FROM 
    (	
    	SELECT rownum as user_sal
    	FROM (SELECT distinct salary  FROM employees   		GROUP BY salary )
    ) 
    WHERE user_sal <= &N ;
  3. SELECT salary FROM 
    (
    	SELECT rownum as user_sal, salary 	FROM (SELECT distinct salary  FROM employees 		 ORDER BY salary  desc)
    ) 
    WHERE user_sal=&N ;
  4. SELECT salary FROM 
    (
    	SELECT max(rownum) as user_sal, salary 	FROM (SELECT distinct salary  FROM employees 		ORDER BY salary  desc)
    ) 
    WHERE user_sal=&N ;

Answer: C. ROWNUM là một cột giả được sử dụng để tìm kết quả của đơn hàng thứ n.

77.What will happen if a value is provided to the &N variable in the above query (option C in question 76) does not match with any row? (Choose the best answer)

  1. Câu lệnh sẽ gây ra lỗi ORA
  2. Câu lệnh sẽ trả về tất cả các hàng trong bảng
  3. Câu lệnh sẽ trả về NULL dưới dạng kết quả đầu ra.
  4. Câu lệnh sẽ không trả về hàng nào trong kết quả.

Answer: D.

78.What is the maximum level up to which Sub-queries can be nested?

  1. 255
  2. 100
  3. 2
  4. 16

Answer: A.

79.What is true about the EXISTS operator in SQL queries with respect to sub-queries?

  1. Các cột được chọn trong các truy vấn phụ là quan trọng
  2. Truy vấn bên trong sẽ trả về các hàng, bất kỳ kết quả nào là quan trọng, không phải là được CHỌN
  3. Cả A và B
  4. Không phải A cũng không phải B

Answer: B.

80.What is true about the ANY operator used for sub-queries?

  1. Trả về các hàng khớp với tất cả các giá trị trong danh sách / truy vấn con
  2. Trả về các hàng khớp với 5 giá trị đầu tiên trong danh sách / truy vấn phụ
  3. Trả về các hàng khớp với bất kỳ giá trị nào trong danh sách / truy vấn phụ
  4. Trả về giá trị 0 khi tất cả các hàng khớp trong một danh sách / truy vấn con

Answer: C.

81.What is true about the ALL operator used for sub-queries? (Choose the most appropriate answer.)

  1. Trả về các hàng khớp với tất cả các giá trị trong danh sách / truy vấn con
  2. Trả về các hàng chỉ khớp với một số giá trị trong danh sách / truy vấn phụ
  3. Chỉ trả về các hàng nếu tất cả các giá trị khớp trong danh sách / truy vấn phụ
  4. Tất cả những điều trên

Answer: C. '> ALL' Nhiều hơn giá trị cao nhất mà truy vấn con trả về. '<ALL' Nhỏ hơn giá trị thấp nhất mà truy vấn con trả về. '<ANY' Nhỏ hơn giá trị cao nhất mà truy vấn con trả về. '> ANY' Nhiều hơn giá trị thấp nhất do truy vấn con trả về. '= ANY' Bằng bất kỳ giá trị nào được trả về bởi truy vấn con (giống như IN). Hàng '[NOT] EXISTS' phải khớp với một giá trị trong truy vấn con.

82.What is true about using sub-queries in INSERT statements in Oracle?

  1. Chúng có thể được sử dụng trong mệnh đề INSERT mà không có bất kỳ hạn chế nào
  2. Chúng có thể được sử dụng trong mệnh đề INSERT chỉ cho các giá trị dạng số
  3. Danh sách SELECT của một truy vấn con phải giống với danh sách cột của câu lệnh INSERT.
  4. Không có cái nào ở trên

Answer: C.

Examine the table structures as given below and answer the questions 83 to 86 that follow.

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SQL> DESC departments
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 DEPARTMENT_ID		 NOT NULL NUMBER(4)
 DEPARTMENT_NAME	 NOT NULL VARCHAR2(30)
 MANAGER_ID			  NUMBER(6)
 LOCATION_ID			  NUMBER(4)

83.You need to find the details of all employees who were hired for the job ID 'SA_REP' in the month of June, 2013. Which of the following queries will give the required results? (Consider the table structure as given)

  1. SELECT first_name 
    FROM employees 
    WHERE employee_id  =
    (	SELECT employee_id 
    	FROM employees 
    	WHERE to_char(hiredate, 'MM/YYYY')= '02/1981'
    	AND job_id  = 'SA_REP'
    );
  2. SELECT first_name 
    FROM employees 
    WHERE employee_id  = ANY
    (	SELECT employee_id 
    	FROM employees 
    	WHERE to_char(hiredate, 'MM/YYYY')= '02/1981'
    	AND job_id  = 'SA_REP'
    );
  3. SELECT first_name 
    FROM employees 
    WHERE employee_id  ANY
    (	SELECT employee_id 
    	FROM employees 
    	WHERE to_char(hiredate, 'MM/YYYY')= '02/1981'
    	AND job_id  = 'SA_REP'
    );
  4. SELECT first_name 
    FROM employees 
    WHERE employee_id  exists
    (	SELECT employee_id 
    	FROM employees 
    	WHERE to_char(hiredate, 'MM/YYYY')= '02/1981'
    	AND job_id  = 'SA_REP'
    );

Answer: B.

84.Which of the following statements are equivalent?

  1. SELECT employee_id , salary
    FROM employees 
    WHERE salary < ALL (SELECT salary FROM employees WHERE department_id=100);
  2. SELECT employee_id , salary
    FROM employees WHERE salary < (SELECT min(salary) FROM employees WHERE department_id=100);
  3. SELECT employee_id 
    FROM employees 
    WHERE salary not >= ANY (SELECT salary FROM employees WHERE department_id=100);
  4. Không có cái nào ở trên

Answer: A, B.

85.Consider the following two queries:

Query 1:
SELECT first_name 
FROM employees e join departments d
ON e.department_id  = d.department_id
WHERE department_name='ACCOUNTS';
Query 2:
SELECT first_name 
FROM employees  e 
WHERE department_id  = ANY (SELECT department_id 		FROM departments d 
		WHERE department_name='ACCOUNTS');

Có thể nói gì về hai tuyên bố?

  1. Cả hai truy vấn sẽ tạo ra cùng một kết quả.
  2. Cả hai truy vấn sẽ xuất hiện một lỗi.
  3. Nếu có hai phòng ban có cùng tên, cả hai truy vấn sẽ không thành công.
  4. Cả hai truy vấn sẽ chạy thành công ngay cả khi có nhiều hơn một bộ phận có tên là 'TÀI KHOẢN'.

Answer: A, D.

86.You need to display all the employees who have the highest salary in a department 100. You fire a query as below.

SELECT E.first_name, E.last_name , E.salary
FROM employees E
WHERE E.salary > ALL (SELECT E1.salary
      FROM employees E1
      WHERE E.department_id  =E1.department_id 
      AND E.department_id  = 100);

Kết quả của truy vấn trên sẽ là gì?

  1. Nó thực thi thành công và cho kết quả cần thiết
  2. Nó thực thi thành công nhưng không cung cấp đầu ra cần thiết
  3. Nó ném ra một lỗi ORA khi thực thi
  4. Nó thực thi thành công và cho kết quả cần thiết khi> ALL được thay thế bằng> = ALL

Answer: B, D. > TẤT CẢ sẽ không đưa ra kết quả cần thiết vì có thể có hai nhân viên có cùng mức lương và ai là người có thu nhập cao nhất trong bộ phận 100

Consider table structures as shown in the exhibit and answer the questions 87 to 89 that follow:

87.You need to fetch the first names (in a reverse alphabetical order) of all the employees in the department ID = 100 and who have the maximum salary in the JOB ID = 'SA_REP'. Which of the following queries will give the required output? (Choose the most appropriate output)

  1. SELECT E.first_name, job_id , salary
    FROM employees E
    WHERE salary =
    		(SELECT max(salary)
    		FROM employees E1
    		WHERE E1.department_id  = 100
    		GROUP BY job_id )
    AND job_id  = 'SA_REP'
    ORDER BY first_name;
  2. SELECT E.first_name, job_id , salary
    FROM employees E
    WHERE salary in
    		(SELECT max(salary)
    		FROM employees E1
    		where E1.department_id  = 100)
    ORDER BY first_name;
  3. SELECT E.first_name, job_id , salary
    FROM employees E
    WHERE salary IN
    		(SELECT max(salary)
    		FROM employees E1
    		where job_id  = 'SA_REP'
    		GROUP BY job_id )
    AND WHERE E.department_id  = 100
    ORDER BY first_name desc;
  4. SELECT E.first_name, job_id , salary
    FROM employees E
    WHERE salary IN
    		(SELECT max(salary)
    		FROM employees E1
    		WHERE E1.department_id  = 100
    		GROUP BY job_id )
    ORDER BY first_name ;

Answer: C.

88.In the queries given above (option C is the correct answer), you need to display all the employees with the JOB ID 'SA_REP' who have the maximum salary in the department 100. Which of the following queries will give the required output?

  1. SELECT E.first_name, job_id , salary
    FROM employees E
    WHERE salary IN
    		(SELECT max(salary)
    		FROM employees E1
    		WHERE E1.department_id  = 100
    		GROUP BY job_id )
    AND job_id  = 'SA_REP'
    ORDER BY first_name;
  2. SELECT E.first_name, job_id , salary
    FROM employees E
    WHERE salary in
    		(SELECT max(salary)
    		FROM employees E1
    		WHERE E1.department_id  = 100)
    ORDER BY first_name;
  3. SELECT E.first_name, job_id , salary
    FROM employees E
    WHERE salary in
    		(SELECT max(salary)
    		FROM employees E1
    		WHERE job_id  = 'SA_REP'
    		GROUP BY job_id )
    And WHERE E.department_id  = 100
    ORDER BY first_name desc;
  4. SELECT E.first_name, job_id , salary
    FROM employees E
    WHERE salary in
    		(SELECT max(salary)
    		FROM employees E1
    		WHERE E1.department_id  = 100
    		GROUP BY job_id )
    ORDER BY first_name ;

Answer: A.

89.Select the query which will give you the maximum salary and maximum comm percentage. The query should also give the maximum comm percentage paid if the highest salaried employee gets the maximum comm percentage.

  1. SELECT employee_id, max(salary), max(commission_pct )
    FROM employees E
    GROUP BY salary, commission_pct ;
  2. SELECT employee_id, max(salary), max(commission_pct )
    FROM employees E
    GROUP BY salary;
  3. SELECT employee_id, max(salary)
    FROM employees E
    GROUP BY salary, commission_pct 
    HAVING max(commission_pct ) = 100;
  4. SELECT employee_id,
    (SELECT max(salary) FROM employees) * (SELECT max(commission_pct ) FROM employees)
    FROM DUAL;

Answer: D. Một truy vấn con một hàng cũng có thể được lồng trong mệnh đề SELECT của truy vấn bên ngoài. Trong trường hợp này, giá trị mà truy vấn con trả về có sẵn cho mọi hàng đầu ra mà truy vấn bên ngoài tạo ra. Thông thường, kỹ thuật này được sử dụng để thực hiện các phép tính với một giá trị được tạo ra từ một truy vấn con.

90.What is true about the sub-queries used in the SELECT clause of an SQL statement?

  1. Các truy vấn phụ này giống nhau về mọi mặt với các truy vấn được sử dụng trong mệnh đề FROM hoặc WHERE
  2. Các truy vấn phụ này bắt buộc phải là các truy vấn phụ hàng đơn
  3. Chúng ta có thể sử dụng toán tử nhiều hàng khi viết các truy vấn con như vậy
  4. Không có cái nào ở trên

Answer: B.

91.What will be the outcome of the following query? (Consider the table structure as given)

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT sysdate,
(SELECT max(salary) FROM employees GROUP BY department_id )
FROM DUAL;
  1. Nó cung cấp ngày hệ thống và mức lương tối đa cho từng bộ phận
  2. Nó đưa ra mức lương tối đa cho tất cả các bộ phận
  3. Nó tạo ra một lỗi ORA
  4. Nó thực thi thành công với 0 hàng

Answer: C. Không thể sử dụng truy vấn con Nhiều hàng trong mệnh đề SELECT của câu lệnh SQL. Chỉ một truy vấn con một hàng mới có thể được lồng trong mệnh đề SELECT của truy vấn bên ngoài.

Examine the given table structure. Consider the following query and answer the questions 92 to 95 that follow:

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT salary
FROM employees
WHERE salary > ALL (10, 20, 30);

92.Which of the following queries are equivalent to the above query?

  1. SELECT salary
    FROM employees
    WHERE salary >10 or salary > 20 and salary >30;
  2. SELECT salary
    FROM employees
    WHERE salary <10 and salary < 20 and salary <30;
  3. SELECT salary
    FROM employees
    WHERE salary >10 and salary > 20 and salary >30;
  4. SELECT salary
    FROM employees
    WHERE salary >10 and salary > 20 or salary < 30;

Answer: C. Câu hỏi hiển thị mệnh đề TẤT CẢ theo cách đơn giản khi nó được theo sau bởi một danh sách.

93. If in the above query the list (10,20,30) is replaced by a sub-query, which of the following queries will give the required output for the department number 100?

  1. SELECT E.salary
    FROM employees E
    WHERE E.salary > (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. SELECT E.salary
    FROM employees E
    WHERE E.salary >ALL (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  3. SELECT E.salary
    FROM employees E
    WHERE E.salary = (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  4. SELECT E.salary
    FROM employees E
    WHERE E.salary >= (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);

Answer: B. Câu hỏi hiển thị mệnh đề TẤT CẢ theo cách đơn giản khi nó được theo sau bởi một truy vấn phụ

94.With respect to the question 14 above, what among the following will be an equivalent query if ALL has to be replaced with ANY?

  1. SELECT E.salary
    FROM employees E
    WHERE NOT EXISTS (E.salary =ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. SELECT E.salary
    FROM employees E
    WHERE E.salary >ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  3. SELECT E.salary
    FROM employees E
    WHERE E.salary =ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  4. SELECT E.salary
    FROM employees E
    WHERE NOT ( E.salary <= ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100));

Answer: D. Toán tử NOT được sử dụng khi sử dụng '<= ANY' được sử dụng để phủ định kết quả được trả về bởi truy vấn phụ

95.With respect to the question 94, if the operator ANY is not to be used, which of the following queries will be correct?

  1. SELECT E.salary
    FROM employees E
    WHERE NOT EXISTS (E.salary = ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. SELECT E.salary
    FROM employees E
    WHERE NOT EXISTS (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100
    And E.salary <= E1.salary);
  3. A hoặc B
  4. Không có cái nào ở trên

Answer: B. Truy vấn con có liên quan tham chiếu đến một cột trong truy vấn bên ngoài và thực thi truy vấn con một lần cho mỗi hàng trong truy vấn bên ngoài; và toán tử EXISTS được sử dụng để kiểm tra xem mối quan hệ hoặc liên kết có tồn tại hay không. Một truy vấn con không liên quan sẽ thực thi truy vấn con trước và chuyển giá trị cho truy vấn bên ngoài.

Examine the given table structures. Consider the following query and answer the questions 96 to 98 that follow:

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT salary
FROM employees
WHERE salary > ANY (10, 20, 30);

96. Which of the following queries are equivalent to the above query?

  1. SELECT salary
    FROM employees
    WHERE salary >10 or salary > 20 and or >30;
  2. SELECT salary
    FROM employees
    WHERE salary <10 and salary < 20 and salary <30;
  3. SELECT salary
    FROM employees
    WHERE salary >10 and salary > 20 or salary >30;
  4. SELECT salary
    FROM employees
    WHERE salary >10 and salary > 20 or salary < 30;

Answer: A. Câu hỏi hiển thị mệnh đề BẤT KỲ theo cách đơn giản khi nó được theo sau bởi một danh sách.

97. In the above query, if the list (10, 20, 30) is replaced by a sub-query, which of the following queries will give the required output for the department number 100?

  1. SELECT E.salary
    FROM employees E
    WHERE E.salary > (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. SELECT E.salary
    FROM employees E
    WHERE E.salary >ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  3. SELECT E.salary
    FROM employees E
    WHERE E.salary = (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  4. SELECT E.salary
    FROM employees E
    WHERE E.salary >= (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);

Answer: B. Câu hỏi hiển thị mệnh đề BẤT KỲ theo cách đơn giản khi nó được theo sau bởi một truy vấn phụ

98.With respect to the question 97 above, what among the following will be an equivalent query if ANY is removed?

  1. SELECT E.salary
    FROM employees E
    WHERE NOT EXISTS (E.salary =ANY (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);
  2. SELECT E.salary
    FROM employees E
    WHERE EXISTS (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100
    And E.salary >E1.salary);
  3. SELECT E.salary
    FROM employees E
    WHERE EXISTS (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100
    );
  4. SELECT E.salary
    FROM employees E
    WHERE IN (SELECT  E1.salary
    FROM employees E1
    WHERE E1.department_id  = 100);

Answer: B. Toán tử EXISTS có thể thay thế toán tử BẤT KỲ. Truy vấn con có liên quan tham chiếu đến một cột trong truy vấn bên ngoài và thực thi truy vấn con một lần cho mỗi hàng trong truy vấn bên ngoài; và toán tử EXISTS được sử dụng để kiểm tra xem mối quan hệ hoặc liên kết có tồn tại hay không.

99.Examine the given table structure. How many rows will get generated if the sub-query mentioned returns 0 rows?

SQL> DESC employees
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER(6)
 FIRST_NAME			  VARCHAR2(20)
 LAST_NAME		 NOT NULL VARCHAR2(25)
 EMAIL			 NOT NULL VARCHAR2(25)
 PHONE_NUMBER			  VARCHAR2(20)
 HIRE_DATE		 NOT NULL DATE
 JOB_ID 		 NOT NULL VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
 MANAGER_ID			  NUMBER(6)
 DEPARTMENT_ID			  NUMBER(4)
SELECT E.salary
FROM employees E
WHERE E.salary > ANY ( select E1.salary FROM employees E1 where E1.department_id  = 100);
  1. 1 hàng
  2. Không có hàng
  3. A hoặc B
  4. Không có cái nào ở trên

Answer: B. Nếu truy vấn con trả về 0 hàng, điều kiện '> ANY' sẽ đánh giá là FALSE, do đó "Không có hàng" được trả về.

100. A subquery must be placed in the outer query's HAVING clause if:

  1. Truy vấn bên trong cần tham chiếu đến giá trị được trả về cho truy vấn bên ngoài.
  2. Giá trị được trả về bởi truy vấn bên trong sẽ được so sánh với dữ liệu được nhóm trong truy vấn bên ngoài.
  3. Truy vấn con trả về nhiều giá trị cho truy vấn bên ngoài.
  4. Không có điều nào ở trên. Không thể sử dụng truy vấn con trong mệnh đề HAVING của truy vấn bên ngoài.

Answer: B. Mệnh đề HAVING được sử dụng khi kết quả nhóm của một truy vấn cần được hạn chế dựa trên một số điều kiện. Nếu kết quả của một truy vấn con phải được so sánh với một hàm nhóm, bạn phải lồng truy vấn bên trong vào mệnh đề HAVING của truy vấn bên ngoài.