Учебники

Получить данные из нескольких таблиц Вопросы

1. Что из перечисленного не относится к реляционной базе данных?

  1. выбор
  2. проекция
  3. присоединение
  4. Ни один из вышеперечисленных

Ответ: D. Опции A, B и C являются основными возможностями реляционной базы данных Oracle.

2. Какой из следующих методов используется для написания запроса со столбцами из нескольких таблиц?

  1. ВЫБРАТЬ
  2. ГРУППА ПО
  3. СОРТИРОВАТЬ ПО
  4. JOINS

Ответ: D. Соединения используются для соединения нескольких таблиц и данных столбцов проекта из нескольких таблиц в Oracle.

3. Какой из следующих способов является одним из наиболее распространенных способов объединения нескольких таблиц?

  1. Hash Join
  2. эквисоединения
  3. Самостоятельное присоединение
  4. Перекрестное соединение

Ответ: B. Equijoin — это один из типов объединений, который является наиболее распространенным и простым способом объединения более чем одной таблицы. Equijoin также называют простыми соединениями или внутренними соединениями. Equijoin включает первичный ключ и внешний ключ.

4. Что из следующего будет использовано для объединения строк с другими таблицами, если значения столбцов попадают в диапазон, определенный операторами неравенства?

  1. эквисоединения
  2. Простое соединение
  3. Non-эквисоединения
  4. Ни один из вышеперечисленных

Ответ: C. Уравнения используют операторы равенства для объединения строк, а неэквиноины — операторы неравенства.

5. Какое из следующих утверждений верно в отношении объединений Oracle?

  1. Значения NULL включены в набор результатов
  2. Извлекаются только те строки, которые соответствуют условиям
  3. Все строки, которые присутствуют в одной из таблиц, выбираются
  4. Ни один из вышеперечисленных

Ответ: B. Значения NULL и различные записи в столбцах общего объединения исключаются при использовании объединений.

6.Какое из следующего можно использовать для объединения строк таблицы с другими строками той же таблицы?

  1. эквисоединения
  2. Non-эквисоединения
  3. Внешнее соединение
  4. Автообъединение

Ответ: D. Ассоциация основана на столбцах с логическими и обычно иерархическими отношениями друг с другом.

7.Что верно в отношении декартового объединения двух таблиц в БД Oracle?

  1. Следует избегать, так как это дорого и не оптимизировано
  2. Он формируется, когда каждая строка из одной таблицы объединяется со всеми строками во второй таблице.
  3. Оба а и Б
  4. Ни один из вышеперечисленных

Ответ: B. Декартово объединение часто является результатом отсутствия или неадекватных условий соединения. Это просто перекрестное произведение двух таблиц.

8. Что из перечисленного является одним из основных типов соединений в БД Oracle?

  1. Внешнее соединение
  2. Автообъединение
  3. Обор присоединиться
  4. Все вышеперечисленное

Ответ: C. Equi-join и non-equijoin — это два основных типа объединений в БД Oracle.

9. Каково основное условие использования объединений между исходной таблицей и таблицей назначения в Oracle DB для получения результата не декартовой системы?

  1. Нет условий
  2. По крайней мере один из столбцов в обеих таблицах должен быть общим.
  3. Имена столбцов в обеих соединительных таблицах должны быть одинаковыми для использования объединений
  4. Ни один из вышеперечисленных

Ответ: B. Таблицы должны быть связаны через общий столбец, связывающий две сущности. Таблица, объединенная в общем столбце, производит не декартово произведение.

10. Что из следующего можно использовать для извлечения строк из нескольких таблиц в одном запросе SQL?

  1. ВЫБРАТЬ
  2. ГДЕ
  3. ОТ
  4. Обор-соединяет

Ответ: D. Equijoins также называют простыми соединениями или внутренними соединениями. Equijoin включает в себя первичный ключ и внешний ключ.

11.Что верно в отношении исходной таблицы и целевой таблицы в терминах объединений Oracle?

  1. Они должны иметь по крайней мере один столбец с тем же именем
  2. Все столбцы должны иметь одинаковое имя и одинаковый тип данных для объединения двух таблиц
  3. Исходные и целевые таблицы нельзя поменять местами и они зависят от позиции
  4. Ни один из вышеперечисленных

Ответ: D. Исходную и целевую таблицы можно менять местами, и они не фиксируются на своих позициях. В зависимости от типа объединения, используемого в запросе, результат может отличаться или оставаться неизменным.

12.Что верно в отношении естественных объединений в БД Oracle?

  1. Имена столбцов исходной и целевой таблиц должны быть идентичны
  2. Если имена столбцов исходной и целевой таблиц не совпадают, Oracle неявно делает необходимые
  3. ПРИРОДНЫЕ СОЕДИНЕНИЯ, ИСПОЛЬЗОВАНИЕ и ВКЛ — ключевые слова, связанные с естественными объединениями
  4. Все вышеперечисленное

Ответ: C. Ключевое слово NATURAL JOIN указывает Oracle идентифицировать столбцы с одинаковыми именами между исходной и целевой таблицами. Естественные объединения используют все столбцы с совпадающими именами и типами данных для объединения таблиц. Предложение USING может использоваться для указания только тех столбцов, которые должны использоваться для эквиойно.

13. Предположим, что таблицы СОТРУДНИКИ и ОТДЕЛ должны быть объединены с помощью ЕСТЕСТВЕННОГО СОЕДИНЕНИЯ. В чем разница между следующими двумя запросами? (Рассмотрим структуру таблицы как дано)

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)
SELECT department_id 
FROM employees NATURAL JOIN department
WHERE first_name = 'John'
AND last_name = 'Bacon';
SELECT department_id 
FROM department NATURAL JOIN employees
WHERE first_name = 'John'
AND last_name = 'Bacon';
  1. Нет никакой разницы
  2. Результат отличается в обоих случаях
  3. Оба запроса приведут к ошибке ORA при выполнении
  4. Ни один из вышеперечисленных

Ответ: B. Исходную и целевую таблицы можно поменять местами при использовании NATURAL JOIN, что дает реляционно разные наборы результатов.

14.Какая из следующих опций верна в отношении ЕСТЕСТВЕННОГО СОЕДИНЕНИЯ в БД Oracle?

  1. При использовании NATURAL JOIN упоминание имен всех столбцов из обеих таблиц является обязательным
  2. NATURAL JOIN можно использовать только в том случае, если имена всех столбцов обеих таблиц идентичны
  3. Объединение в NATURAL JOIN происходит только тогда, когда пользователь указывает столбцы исходной и целевой таблиц.
  4. При использовании NATURAL JOINS нет необходимости упоминать столбцы.

Ответ: D. При использовании NATURAL JOIN существует неявное объединение столбцов из исходной и целевой таблиц. NATURAL JOIN — это операция JOIN, которая создает для вас неявное предложение соединения на основе общих столбцов в двух объединяемых таблицах. Общие столбцы — это столбцы с одинаковыми именами в обеих таблицах.

15. В чем разница между ЕСТЕСТВЕННЫМ СОЕДИНЕНИЕМ и объединением с СОЕДИНЕНИЕМ .. НА?

  1. Там нет никакой разницы между обоими
  2. JOIN..ON объединяет исходную и целевую таблицы в определенных столбцах с одинаковыми именами
  3. NATURAL JOIN неявно объединяет все соответствующие столбцы из исходной и целевой таблиц
  4. Ни один из вышеперечисленных

Ответ: B, C. Условие соединения для естественного объединения — это, по сути, эквивалентность всех столбцов с одинаковым именем. Используйте условие ON, чтобы указать произвольные условия или указать столбцы для объединения. Условие соединения отделено от других условий поиска. Предложение ON облегчает понимание кода.

16.Что верно для предложения JOIN..ON в БД Oracle?

  1. Он не зависит от одинаковых имен столбцов в исходной и целевой таблицах.
  2. В этом разделе можно использовать только те столбцы из исходной и целевой таблиц, которые имеют одинаковые имена.
  3. Это формат ЕСТЕСТВЕННОГО СОЕДИНЕНИЯ
  4. Все вышеперечисленное

Ответ: A, C. Условие соединения для естественного соединения — это в основном эквивалент всех столбцов с одинаковыми именами. Используйте предложение ON, чтобы указать произвольные условия или указать столбцы для объединения. Условие соединения отделено от других условий поиска. Предложение ON облегчает понимание кода.

17. Разработчик базы данных назвал ключевые (уникальные) столбцы из двух таблиц по-разному. При объединении этих таблиц, что из следующего будет наилучшей практикой?

  1. JOIN..ON
  2. Либо ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ или ОБЪЕДИНЕНИЕ … ON
  3. Оба а и Б
  4. Ни один из вышеперечисленных

Ответ: A. Использование NATURAL JOINS в этом случае может привести к неожиданным результатам, так как происходит неявный поиск столбцов с одинаковыми именами, которых в этом случае нет.

18. Что из нижеперечисленного можно использовать для извлечения несоответствующих строк вместе с совпадающими строками между исходной и целевой таблицами в БД Oracle?

  1. EQUI-JOIN
  2. Автообъединение
  3. ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ
  4. Внешнее_соединение

Ответ: D. Внешнее объединение создается, когда записи должны быть включены в результаты, не имея соответствующих записей в таблицах объединения. Эти записи сопоставляются с записями NULL, поэтому они включаются в вывод.

19. Что такое декартовы объединения, также известные как в базе данных Oracle?

  1. Обор присоединиться
  2. Anti-присоединиться
  3. Кросс-Join
  4. Ни один из вышеперечисленных

Ответ: C. Декартово соединение между двумя таблицами возвращает каждую возможную комбинацию строк из таблиц. Декартово объединение можно получить, не включив в запрос операцию соединения или используя CROSS JOIN.

20. Каков будет результат ЕСТЕСТВЕННОГО СОЕДИНЕНИЯ между двумя таблицами СОТРУДНИКИ и ОТДЕЛЕНИЕ, как указано в запросе ниже? (Рассмотрим структуру таблицы как дано)

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)
SELECT * FROM employees NATURAL JOIN department;
  1. Общий столбец DEPARTMENT_ID с одинаковым именем в обеих таблицах появится в наборе результатов дважды
  2. Все столбцы с одинаковыми именами, объединенные с NATURAL JOIN, дважды появятся в наборе результатов
  3. В результирующем наборе будет только один столбец для каждой пары столбцов с одинаковыми именами из обеих таблиц
  4. Ни один из вышеперечисленных

Ответ: C. Для ключевых слов NATURAL JOIN не требуется условие для установления связи между двумя таблицами. Однако общий столбец должен существовать. Спецификаторы столбцов нельзя использовать с ключевыми словами NATURAL JOIN.

21.В чем разница между ЕСТЕСТВЕННЫМ И СОЕДИНЕНИЕМ в БД Oracle?

  1. Нет никакой разницы
  2. Они одинаковы по отношению к набору результатов, который получается из обоих
  3. Оба а и Б
  4. Ни один из вышеперечисленных

Ответ: D. NATURAL JOIN объединяет все столбцы с одинаковыми именами, тогда как EQUI-JOIN требует, чтобы столбцы были явно упомянуты в запросе SQL.

22.Что ВНУТРЕННЕЕ СОЕДИНЕНИЕ в БД Oracle?

  1. Объединение, дающее совпадающие записи между двумя таблицами, называется INNER JOIN
  2. Внутреннее соединение может использовать операторы, такие как <,>, <>
  3. Оба а и Б
  4. Ни один из вышеперечисленных

Ответ: C. Объединение может быть внутренним объединением, в котором единственные возвращенные записи имеют совпадающую запись во всех таблицах, или внешним соединением, в котором записи могут быть возвращены независимо от того, есть ли в соединении совпадающая запись.

23.В чем разница между INNER JOIN и EQUI-JOIN в базе данных Oracle?

  1. Они одинаковы с точки зрения синтаксиса и полученных наборов результатов.
  2. INNER JOIN — это подмножество EQUI-JOIN
  3. ВНУТРЕННЕЕ СОЕДИНЕНИЕ может использовать операторы, такие как <,>, <> вместе с «=», в то время как EQUI-JOIN использует только оператор «=»
  4. Все вышеперечисленное

Ответ: C. EQUI-JOIN — это тип INNER JOIN, содержащий оператор «=» в условии соединения, тогда как INNER JOIN может содержать как операторы равенства, так и операторы неравенства

24.Что верно в отношении ЕСТЕСТВЕННЫХ СОЕДИНЕНИЙ с точки зрения синтаксиса ANSI SQL: 1999 в БД Oracle?

  1. Используется оператор равенства (=)
  2. Они получают разные результаты по сравнению с традиционным синтаксисом
  3. В синтаксисе ANSI SQL используются такие слова, как NATURAL JOIN, в запросах SQL
  4. Ни один из вышеперечисленных.

Ответ: C. Синтаксис ANSI SQL отличается от традиционного способа использования (=) традиционными способами. В синтаксисе ANSI SQL есть ключевые слова, такие как NATURAL JOIN и т. Д., Чтобы различать используемые объединения.

25. Какое из следующих утверждений верно в отношении приведенного ниже запроса? (Рассмотрим структуру таблицы как дано)

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)
SELECT first_name, salary
FROM employees e, departments d
WHERE e.department_id  (+) = d.department_id ;
  1. Существует внешнее объединение между Department_id из обеих таблиц, которое эквивалентно правому внешнему соединению в ANSI SQL
  2. Существует внешнее объединение между Department_id из обеих таблиц, которое эквивалентно левому внешнему соединению в ANSI SQL
  3. Он выбирает все записи отдела_идентификатора из таблицы сотрудников, совпадают они или нет
  4. Извлекает все записи Department_id из таблицы отдела, независимо от того, совпадают они или нет

Ответ: A, D. Условие e.department_id (+) = d.department_id означает, что оно выполнит правое внешнее соединение, и будут отображены все значения Department_id из таблицы отделов, независимо от того, совпадают они или нет

26. Какой из следующих синтаксических моделей широко используется в программных системах по всему миру?

  1. ANSI SQL: 1999
  2. И традиционный синтаксис Oracle, и синтаксис ANSI SQL: 1999
  3. Традиционный синтаксис Oracle
  4. Все варианты

Ответ: C. Синтаксис ANSI SQL: 1999, хотя и используется не так часто, как традиционный синтаксис Oracle, но все же является одним из синтаксисов, которые можно использовать в Oracle SQL.

27.Что из следующего верно относительно декартового произведения в БД Oracle?

  1. Если ‘N’ — это число объединенных таблиц, то если нет. объединений N-1, декартово произведение не выполняется
  2. Если ‘N’ — это число объединенных таблиц, то если нет. объединений, декартово произведение
  3. Если ‘N’ — это число объединенных таблиц, то если нет. объединений N + 1, декартово произведение выполнено
  4. Если ‘N’ — это число объединенных таблиц, то если нет. объединений N-1 или менее, выполняется декартово произведение.

Ответ: A. Декартово соединение между двумя таблицами возвращает каждую возможную комбинацию строк из таблиц. Декартово объединение можно получить, не включив в запрос операцию соединения или используя CROSS JOIN. Запрос должен иметь как минимум (N-1) условия соединения, чтобы предотвратить декартово произведение, где N — количество таблиц в запросе.

28.Что является причиной ошибки в следующем запросе SQL? (Рассмотрим структуру таблицы как дано)

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)
SELECT first_name, last_name
FROM employees, departments
WHERE department_id (+) = department_id ;
  1. Для таблиц не используются псевдонимы.
  2. Слово RIGHT OUTER JOIN здесь не используется, следовательно, оно выдает ошибку
  3. (+) Должен быть справа от условия равенства, а не слева
  4. Псевдонимы таблиц должны использоваться вместе с Department_id в условии, чтобы удалить неоднозначные имена

Ответ: D. Без псевдонимов таблиц Oracle не может определить происхождение соединяемых столбцов и, следовательно, выдает ошибку неоднозначности при выполнении.

29.Какое из перечисленного используется, чтобы избежать неоднозначной проблемы с колонками в БД Oracle?

  1. ;
  2. ,
  3. ,
  4. /

Ответ: C. Синтаксис для устранения проблемы с неоднозначным столбцом: table_alias.column_name

30. Что из следующего является наиболее подходящим для следующего запроса? (Рассмотрим структуру таблицы как дано)

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)
SELECT employee_id , first_name, last_name
FROM employees e right outer join department d
On e.department_id  = d.department_id ;
  1. Он дает подробную информацию о тех сотрудниках, которые не находятся ни в одном отделе
  2. Он дает подробную информацию о тех отделах, в которых нет ни одного сотрудника
  3. Он дает подробную информацию обо всех отделах, независимо от того, есть ли у них какой-либо сотрудник или нет
  4. В нем приводятся данные о сотрудниках, которые были приняты на работу в компанию «Азбука» независимо от отделов.

Ответ: C. С помощью метода JOIN для внешних объединений вы можете добавить ключевые слова LEFT, RIGHT или FULL. Левое внешнее объединение включает в себя все записи из таблицы, приведенной в левой части объединения, даже если не найдено совпадение с другой таблицей в операции объединения. Полное внешнее объединение включает все записи из обеих таблиц, даже если соответствующая запись в другой таблице не найдена.

31. Каков будет результат следующего запроса? (Рассмотрим структуру таблицы как дано)

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)
SELECT *
FROM employees e, department d
WHERE a.department_id  = b.department_id ;
  1. Это даст все совпадающие значения из обеих таблиц, которые имеют одинаковый департамент_ид
  2. Это даст все столбцы из таблицы сотрудников и только первые 100 строк из таблицы отделов
  3. Это выдаст ошибку ORA: неверный идентификатор «b.department_id»
  4. Ни один из вышеперечисленных вариантов

Ответ: C. В предложении WHERE должны использоваться те же псевдонимы, что и в предложении FROM.

32.Какое из следующих утверждений верно в отношении предложений USING и ON в объединениях таблиц? (Выберите более одного варианта, если применимо)

  1. Предложение ON может использоваться для объединения таблиц в столбцах с одинаковым типом данных, но не обязательно с одинаковым именем.
  2. Предложения USING и ON используются только в эквивалентах и ​​не в эквивалентах
  3. С предложением ON можно использовать не более одного условия
  4. Предложение WHERE может быть написано после предложения USING..ON для применения дополнительных условий.

Ответ: A, D. Подход JOIN … USING аналогичен подходу NATURAL JOIN, за исключением того, что в предложении USING указан общий столбец. Условие нельзя включить в предложение USING, чтобы указать, как связаны таблицы. Кроме того, квалификаторы столбца нельзя использовать для общего столбца, указанного в предложении USING. Подход JOIN … ON объединяет таблицы на основе указанного условия. Ключевое слово JOIN в предложении FROM указывает таблицы, которые нужно объединить, а предложение ON указывает, как связаны эти две таблицы. Этот подход должен использоваться, если объединяемые таблицы не имеют общего столбца с одинаковым именем в каждой таблице.

33. Сколько таблиц можно объединить с помощью JOINS в Oracle DB?

  1. 1
  2. 2
  3. 255
  4. Нет ограничений

Ответ: D. В настоящее время нет ограничений на количество таблиц, участвующих в объединении.

34. Что верно, когда в операторе SQL используется несколько объединений?

  1. Объединения оцениваются слева направо
  2. Объединения оцениваются справа налево
  3. Там нет приоритета в процессе оценки объединений
  4. Ни один из вышеперечисленных

Ответ: A. Когда в утверждении существуют множественные объединения, они оцениваются слева направо.

35.Что верно в отношении следующего запроса? (Рассмотрим структуру таблицы как дано)

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)
SQL> desc bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
SELECT bonus, first_name, department_id 
FROM bonus b NATURAL JOIN employees e NATURAL JOIN department d;
  1. Использование NATURAL JOIN для объединения нескольких таблиц является лучшим вариантом и дает точные результаты
  2. Вероятность ошибки очень меньше, когда НАТУРАЛЬНЫЕ СОЕДИНЕНИЯ используются для объединения нескольких таблиц
  3. Предложения USING..JOIN..ON дают более точные результаты, чем NATURAL JOINs, при объединении нескольких таблиц.
  4. Oracle неявно объединяет несколько таблиц, когда используется NATURAL JOIN, и поэтому рекомендуется использовать NATURAL JOINS

Ответ: C. Использование NATURAL JOINS может создавать декартовы произведения строк, а также подвержено ошибкам с помощью ненадежных наборов результатов.

36.Что верно в отношении предложений JOIN..ON в Oracle DB?

  1. Они не очень надежны по сравнению с ЕСТЕСТВЕННЫМИ СОЕДИНЕНИЯМИ при объединении нескольких таблиц
  2. Предложение JOIN..ON аналогично предложению WHERE, которое ограничивает строки условиями
  3. Дополнительное предложение WHERE является обязательным при использовании предложения JOIN..ON
  4. Ни один из вышеперечисленных

Ответ: B. Подход JOIN …. ON объединяет таблицы на основе указанного условия. Ключевое слово JOIN в предложении FROM указывает таблицы, которые нужно объединить, а предложение ON указывает, как связаны эти две таблицы. Этот подход должен использоваться, если объединяемые таблицы не имеют общего столбца с одинаковым именем в каждой таблице.

Изучите структуры таблицы, как указано. Ответьте на вопросы 37 и 38, которые следуют за вопросом, данным ниже:

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)
SELECT e.salary, d.department_id 
FROM employees e JOIN department d
On (e.department_id  = d.department_id  and e.last_name = 'Brandon');

37.Что верно в отношении запроса, приведенного выше?

  1. Это дает ошибку ORA, поскольку отсутствует обязательное предложение WHERE.
  2. Предложение JOIN..ON не может содержать более одного условия
  3. Запрос игнорирует последнее условие и выполняется без ошибки ORA
  4. Предложение JOIN..ON может быть записано в форме, приведенной выше, чтобы поставить больше условий.

Ответ: D. Предложение WHERE может быть опущено, а соответствующие условия могут быть учтены в самом предложении JOIN..ON, как показано в данном запросе.

38. По отношению к данному запросу, если используемый JOIN заменяется NATURAL JOIN, он выдает ошибку. В чем причина этой ошибки?

  1. Когда используется NATURAL JOIN, предложение WHERE является обязательным, опускание которого приводит к ошибке
  2. Предложение ON следует заменить на предложение USING
  3. Слова NATURAL, JOIN и USING являются взаимоисключающими в контексте одного и того же предложения соединения
  4. Запрос не может объединять предложения NATURAL JOIN и ON (или USING) при присоединении.

Ответ: C, D.

39.Что верно для Non-equijoins в БД Oracle?

  1. Они присоединяются на основе ключевого слова NON-EQUI JOIN
  2. Они используются с использованием предложения JOIN..ON со знаком «=»
  3. Результаты получают, когда результат упомянутого неравенства оценивается как истинный.
  4. Ни один из вышеперечисленных

Ответ: C. Неравные соединения используются с предложением JOIN..ON, но с операторами неравенства.

Изучите структуры таблиц СОТРУДНИКИ и ОТДЕЛЫ, как дано, и ответьте на вопросы 40 и 41, которые следуют.

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)

40. Каков будет результат следующего запроса в БД Oracle?

SELECT e.first_name, e.last_name, e.employee_id 
FROM employees e JOIN department d
ON (e.salary BETWEEN 1000 AND 10000);
  1. Он выдаст ошибку ORA, поскольку условие в предложении ON неверно.
  2. Он выдаст ошибку ORA из-за синтаксической ошибки, поскольку в предложении ON нет знака равенства «=»
  3. Он будет успешно выполнен и даст имя, фамилию и идентификатор сотрудника с указанным условием.
  4. Неравные соединения могут использоваться только для отображения неравенств, а не диапазонов.

Ответ: C.

41. Вам необходимо найти отчет, в котором указаны имена и фамилии сотрудников, чья зарплата превышает 20000 и которые расположены в любом из отделений в Женеве. Какой из следующих запросов даст требуемые результаты?

  1. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    AND d.loc = upper ('Geneva');
  2. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000);
  3. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000)
    AND d.loc = 'Geneva'; 
  4. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    WHERE d.loc = upper('Geneva');

Ответ: А, С.

42. При каком из следующих условий возвращается строка, когда EQUI-JOIN используется для объединения таблиц?

  1. Результат операции сопоставления неравенства верен
  2. Результат операции сопоставления неравенства равен 0
  3. Результат операции сопоставления неравенства равен 1
  4. Результат операции сопоставления неравенства ложен

Ответ: A. Соединение равенства создается, когда данные, соединяющие записи из двух разных таблиц, являются точным совпадением (то есть условие равенства создает связь). Традиционный подход использует знак равенства в качестве оператора сравнения в предложении WHERE. Подход JOIN может использовать ключевые слова NATURAL JOIN, JOIN … USING или JOIN … ON.

41. Вам необходимо найти отчет, в котором указаны имена и фамилии сотрудников, чья зарплата превышает 20000 и которые расположены в любом из отделений в Женеве. Какой из следующих запросов даст требуемые результаты?

  1. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    AND d.loc = upper ('Geneva');
  2. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000);
  3. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000)
    AND d.loc = 'Geneva'; 
  4. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    WHERE d.loc = upper('Geneva');

Ответ: А, С.

42. При каком из следующих условий возвращается строка, когда EQUI-JOIN используется для объединения таблиц?

  1. Результат операции сопоставления неравенства верен
  2. Результат операции сопоставления неравенства равен 0
  3. Результат операции сопоставления неравенства равен 1
  4. Результат операции сопоставления неравенства ложен

Ответ: A. Соединение равенства создается, когда данные, соединяющие записи из двух разных таблиц, являются точным совпадением (то есть условие равенства создает связь). Традиционный подход использует знак равенства в качестве оператора сравнения в предложении WHERE. Подход JOIN может использовать ключевые слова NATURAL JOIN, JOIN … USING или JOIN … ON.

41. Вам необходимо найти отчет, в котором указаны имена и фамилии сотрудников, чья зарплата превышает 20000 и которые расположены в любом из отделений в Женеве. Какой из следующих запросов даст требуемые результаты?

  1. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    AND d.loc = upper ('Geneva');
  2. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000);
  3. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000)
    AND d.loc = 'Geneva'; 
  4. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    WHERE d.loc = upper('Geneva');

Ответ: А, С.

42. При каком из следующих условий возвращается строка, когда EQUI-JOIN используется для объединения таблиц?

  1. Результат операции сопоставления неравенства верен
  2. Результат операции сопоставления неравенства равен 0
  3. Результат операции сопоставления неравенства равен 1
  4. Результат операции сопоставления неравенства ложен

Ответ: A. Соединение равенства создается, когда данные, соединяющие записи из двух разных таблиц, являются точным совпадением (то есть условие равенства создает связь). Традиционный подход использует знак равенства в качестве оператора сравнения в предложении WHERE. Подход JOIN может использовать ключевые слова NATURAL JOIN, JOIN … USING или JOIN … ON.

41. Вам необходимо найти отчет, в котором указаны имена и фамилии сотрудников, чья зарплата превышает 20000 и которые расположены в любом из отделений в Женеве. Какой из следующих запросов даст требуемые результаты?

  1. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    AND d.loc = upper ('Geneva');
  2. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000);
  3. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >=20000)
    AND d.loc = 'Geneva'; 
  4. SELECT e.first_name, e.last_name
    FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id  and e.salary >20000)
    WHERE d.loc = upper('Geneva');

Ответ: А, С.

42. При каком из следующих условий возвращается строка, когда EQUI-JOIN используется для объединения таблиц?

  1. Результат операции сопоставления неравенства верен
  2. Результат операции сопоставления неравенства равен 0
  3. Результат операции сопоставления неравенства равен 1
  4. Результат операции сопоставления неравенства ложен

Ответ: A. Соединение равенства создается, когда данные, соединяющие записи из двух разных таблиц, являются точным совпадением (то есть условие равенства создает связь). Традиционный подход использует знак равенства в качестве оператора сравнения в предложении WHERE. Подход JOIN может использовать ключевые слова NATURAL JOIN, JOIN … USING или JOIN … ON.

43.Что верно в отношении самосоединения в БД Oracle?

  1. Для работы требуется только две таблицы
  2. Столбцы в наборе результатов получены из двух таблиц, но отображаются в одной таблице
  3. Концептуально исходная таблица дублирует себя для создания целевой таблицы. (Oracle не дублирует таблицы)
  4. Все вышеперечисленное

Ответ: C. Самостоятельные объединения используются, когда таблица должна быть присоединена к самой себе для получения нужных вам данных. Псевдонимы таблиц требуются в предложении FROM для выполнения самостоятельного объединения.

44. Относительно запроса и структуры таблицы, приведенной ниже, ответьте на вопрос.

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 *
FROM employees a join employees b
WHERE a.employee_id  = b.employee_id ;

Какую из следующих таблиц Oracle рассматривает как исходную и целевую таблицы?

  1. а является источником и б является целью
  2. б является источником и а является целью
  3. Oracle не рассматривает ни одну из таблиц как исходную или целевую.
  4. Ни один из вышеперечисленных

Ответ: A. В качестве источника выбрано первое вхождение таблицы сотрудников, а последующие вхождения — как b, c и так далее.

45. В каких сценариях мы можем идеально использовать Self-Joins в Oracle DB?

  1. Когда нам нужно найти дубликаты записей в таблице
  2. Когда нам нужно получить значения NULL из таблицы
  3. Когда нам нужно отобразить столбец таблицы дважды
  4. Когда нам нужно отобразить иерархию соответствующих объектов

Ответ: Д.

46. ​​Что верно в отношении ЕСТЕСТВЕННЫХ СОЕДИНЕНИЙ в БД Oracle?

  1. Объединенные столбцы имеют одинаковое имя, но могут иметь разные типы данных.
  2. Объединенные столбцы могут иметь одинаковый тип данных, но разные имена
  3. Объединенные столбцы должны иметь одинаковые имена и одинаковый тип данных.
  4. Ни один из вышеперечисленных

Ответ: C. Для ключевых слов NATURAL JOIN не требуется условие для установления связи между двумя таблицами. Однако общий столбец должен существовать. Спецификаторы столбцов нельзя использовать с ключевыми словами NATURAL JOIN.

47. Должен быть извлечен отчет, в котором указаны название отдела, идентификатор отдела, город отдела и идентификатор местоположения только для отделов 100 и 101. При использовании ЕСТЕСТВЕННЫХ СОЕДИНЕНИЙ какой из следующих вариантов даст требуемые результаты?

Таблица ОТДЕЛОВТаблица МЕСТО

  1. SELECT department_id , department_name  ,location, city
    FROM departments 
    NATURAL JOIN locations 
    WHERE department_id in (100,101); 
  2. SELECT department_id , department_name  ,location, city
    FROM locations 
    NATURAL JOIN departments 
    WHERE department_id BETWEEN 100 AND 101; 
  3. SELECT department_id , department_name  ,location, city
    FROM departments 
    NATURAL JOIN locations 
    WHERE department_id >100
    AND department_id >101; 
  4. SELECT department_id , department_name  ,location, city
    FROM departments 
    NATURAL JOIN locations ; 

Ответ: A. WHERE может использоваться для дополнительных условий после предложения NATURAL JOIN.

48. В каком из следующих сценариев будет использоваться предложение USING или предложение NATURAL JOIN?

  1. Когда имена столбцов из таблиц идентичны, используйте предложение USING
  2. Когда типы данных столбцов из таблиц идентичны, используйте NATURAL JOINS
  3. Если несколько столбцов имеют одинаковые имена, но типы данных не совпадают, можно использовать USING
  4. НАТУРАЛЬНЫЕ СОЕДИНЕНИЯ следует использовать только тогда, когда имена столбцов и их типы данных совпадают

Ответ: C, D. ЕСТЕСТВЕННЫЕ СОЕДИНЕНИЯ и ИСПОЛЬЗОВАНИЕ являются взаимоисключающими, предложение USING должно использоваться для соответствия только одному столбцу, если совпадают несколько столбцов.

49. Изучите приведенные структуры таблиц. Каков будет результат следующего запроса? (Выберите наиболее подходящий ответ)

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 bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
SELECT e.name, b.bonus
FROM employees e 
JOIN bonus b
USING (job_id)
WHERE e.job_id  like 'SA%'); 
  1. Это дает имена и бонусы, полученные всеми сотрудниками в какой-либо компании
  2. Это дает имена и бонусы, полученные всеми сотрудниками в конкретной должности в компании
  3. Выполняется успешно, давая все имена и бонусы, полученные всеми сотрудниками на всех работах
  4. Выдает ошибку ORA.

Ответ: D. Столбцы, используемые в предложении USING, не должны иметь квалификатор (имя таблицы или псевдоним) где-либо в операторе SQL.

50.Что верно в отношении ВНУТРЕННИХ СОЕДИНЕНИЙ И ВНЕШНИХ СОЕДИНЕНИЙ в БД Oracle?

  1. INNER JOIN возвращает только те строки, которые соответствуют
  2. OUTER JOIN возвращает только те строки, которые не совпадают
  3. OUTER JOIN возвращает строки, которые совпадают, а также те, которые не совпадают
  4. Ни один из вышеперечисленных

Ответ: A, C. Объединение может быть внутренним объединением, в котором единственные возвращенные записи имеют совпадающую запись во всех таблицах, или внешним объединением, в котором записи могут быть возвращены независимо от того, есть ли соответствующая запись в соединении. Внешнее объединение создается, когда записи должны быть включены в результаты, не имея соответствующих записей в таблицах объединения. Эти записи сопоставляются с записями NULL, поэтому они включаются в вывод.

51. Что верно в отношении ПОЛНОГО НАРУЖНОГО СОЕДИНЕНИЯ в БД Oracle?

  1. Когда в левом запросе появляются и ЛЕВНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ, и ВПРАВО НАРУЖНОЕ СОЕДИНЕНИЕ, это называется ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
  2. ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ — то же самое, что НАРУЖНОЕ СОЕДИНЕНИЕ
  3. Оба а и Б
  4. Объединение между двумя таблицами, которое возвращает результаты соединения INNER и LEFT и RIGHT OUTER JOIN, называется FULL OUTER JOIN

Ответ: D. Полное внешнее объединение включает в себя все записи из обеих таблиц, даже если соответствующая запись в другой таблице не найдена.

Изучите данные структуры таблиц и ответьте на следующие вопросы 52 и 53.

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)
SQL> desc bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)

52.Рассмотрим следующий запрос.

SELECT e.job_id , e.first_name, d.department_id 
FROM departments D JOIN employees e JOIN BONUS b
USING (job_id );

Этот запрос приводит к ошибке. В чем причина ошибки?

  1. СОЕДИНЕНИЕ может происходить только между двумя таблицами одновременно
  2. Предложение USING в запросе не имеет столбца из отдела
  3. В запросе нет предложения WHERE
  4. Ни один из вышеперечисленных

Ответ: A. Table1 JOIN table2 JOIN table3 не допускается без предложений ON для каждого JOIN

53. Вам нужно отобразить все несовпадающие строки из таблицы EMPLOYEES и несоответствующие строки из таблицы DEPARTMENT, не задавая декартово произведение строк между ними. Какой из следующих запросов даст желаемый результат?

  1. SELECT *
    FROM employees e, department d
    WHERE e.department_id  = d.department_id ; 
  2. SELECT *
    FROM employees e NATURAL JOIN department d; 
  3. SELECT *
    FROM employees e FULL OUTER JOIN department d
    ON  e.department_id  = d.department_id ; 
  4. SELECT *
    FROM employees e JOIN  department d
    ON ( e.department_id  > d.department_id ) ; 

Ответ: C. FULL OUTER JOIN возвращает несопоставленные строки из обеих таблиц. Полное внешнее объединение включает все записи из обеих таблиц, даже если соответствующая запись в другой таблице не найдена.

54. Какой из следующих ANSI SQL: 1999 синтаксических объединений поддерживается Oracle?

  1. Декартовы произведения
  2. Природные соединения
  3. Полное НАРУЖНОЕ присоединение
  4. Equijoins

Ответ: Д.

55.Какое из перечисленных ниже не является форматом внешних соединений в базе данных Oracle?

  1. Правильно
  2. Оставил
  3. Центр
  4. Полный

Ответ: C. Кроме «Центра», остальные 3 типа являются типами форматов Внешних объединений в БД Oracle. С помощью метода JOIN для внешних объединений вы можете добавить ключевые слова LEFT, RIGHT или FULL.

Изучите данные таблицы структур. Ответьте на следующие вопросы 56, 57 и 58, обратившись к следующему запросу:

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)
SELECT *
FROM employees e NATURAL JOIN department d;

56. Вам нужно найти результаты, полученные по вышеуказанному запросу, только для отделов 100 и 101. Какие из следующих пунктов следует добавить / изменить к вышеуказанному запросу?

  1. ON (e.department_id = d.department_id) должен быть добавлен
  2. USING (e.department_id) должен быть добавлен
  3. ГДЕ должен быть добавлен e.department_id в (100,101)
  4. Ни один из вышеперечисленных

Ответ: C. Предложение NATURAL JOIN неявно совпадает со всеми одинаковыми именованными столбцами. Для добавления дополнительных условий можно использовать предложение WHERE.

57. Вам нужно найти результаты, полученные по вышеуказанному запросу, для всех тех сотрудников, у которых зарплата превышает 20000. Какие из следующих пунктов следует добавить / изменить в вышеуказанном запросе?

  1. ON (e.department_id = d.department_id), где зарплата> 20000;
  2. USING (e.department_id), где заработная плата> 20000;
  3. ИСПОЛЬЗОВАНИЕ (департамент_ид), где зарплата> 20000;
  4. ГДЕ зарплата> 20000;

Ответ: Д.

58.Если НАТУРАЛЬНОЕ СОЕДИНЕНИЕ в вышеприведенном запросе заменяется только СОЕДИНЕНИЕМ, что из следующего следует добавить / изменить в вышеупомянутом запросе, чтобы получить результаты, относящиеся к Отделу 100?

  1. ON (отдел_ид = 100);
  2. USING (e.department_id = 100);
  3. ГДЕ d.department_id = 100;
  4. ON (e.department_id = d.department_id и d.department_id = 100);

Ответ: D. Эквиваленты могут быть добавлены для большего количества условий после предложения ON.

59. Необходимо получить отчет, чтобы получить менеджеров для всех сотрудников в отделах 10 и 20 компании «ABC». Какой из следующих запросов даст требуемые результаты? (Рассмотрим структуру таблицы как дано)

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 a.first_name || ' '||a.last_name "Manager", b.first_name||' '||b.last_name "Employees"
    FROM employees a join employees b
    On (employee_id );
  2. SELECT a.first_name || ' '||a.last_name "Manager", b.first_name||' '||b.last_name "Employees"
    FROM employees a join employees b
    On (b.employee_id  = a.employee_id );
  3. SELECT a.first_name || ' '||a.last_name "Manager", b.first_name||' '||b.last_name "Employees"
    FROM employees a join employees b
    On (a.manager_id  = b.employee_id )
    WHERE department_id  in (10,20);
  4. SELECT a.first_name || ' '||a.last_name "Manager", b.first_name||' '||b.last_name "Employees"
    FROM employees a join employees b
    On (a.manager_id  = b.employee_id )
    WHERE a.department_id  in (10,20);

Ответ: D. Опция C неверна, потому что non-aliased Department_id в предложении WHERE выдаст ошибку.

60. Какой из следующих запросов даст результаты без повторяющихся значений между двумя таблицами СОТРУДНИКИ и ОТДЕЛ? (Рассмотрим структуру таблицы как дано)

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)
  1. SELECT *
    FROM employees e NATURAL JOIN department d;
  2. SELECT *
    FROM employees e JOIN department d;
  3. SELECT *
    FROM employees e NATURAL JOIN department d
    USING (e.department_id );
  4. SELECT * 
    FROM employees e FULL OUTER JOIN department d
    USING (department_id );

Ответ: D. FULL OUTER JOIN выдаст все совпадающие, а также несоответствующие строки из обеих таблиц, за исключением повторяющихся значений.

Изучите структуры таблиц, приведенные здесь, и ответьте на вопросы с 61 по 64.

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 bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
SQL> desc locations
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 LOCATION_ID		 NOT NULL NUMBER(4)
 STREET_ADDRESS 		  VARCHAR2(40)
 POSTAL_CODE			  VARCHAR2(12)
 CITY			 NOT NULL VARCHAR2(30)
 STATE_PROVINCE 		  VARCHAR2(25)
 COUNTRY_ID			  CHAR(2)
SQL> desc locations
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 LOCATION_ID		 NOT NULL NUMBER(4)
 STREET_ADDRESS 		  VARCHAR2(40)
 POSTAL_CODE			  VARCHAR2(12)
 CITY			 NOT NULL VARCHAR2(30)
 STATE_PROVINCE 		  VARCHAR2(25)
 COUNTRY_ID			  CHAR(2)

61.Что верно в отношении следующего запроса? (Выберите наиболее подходящий ответ)

SELECT *
FROM bonus b, employees e
WHERE b.job_id  (+) = e.job_id ;
  1. Здесь будут отображаться все бонусы, полученные всеми сотрудниками.
  2. В столбце бонуса будет отображаться NULL, если конкретный сотрудник не получил бонуса
  3. Оба а и Б
  4. Ни один из вышеперечисленных

Ответ: B. (+) на LHS уравнения означает, что это ПРАВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ и наоборот.

62.Вы должны перечислить все отделы, в которых еще нет сотрудников в компании под названием «XYZ». Какой из следующих запросов даст вам требуемые результаты?

  1. SELECT department_id , department_name FROM departments d NATURAL JOIN employees e;
  2. SELECT department_id , department_name FROM employees e JOIN departments d
    ON (e.department_id  = d.department_id );
  3. SELECT department_id , department_name FROM employees e LEFT OUTER JOIN departments d
    USING (department_id );
  4. SELECT department_id , department_name FROM employees e RIGHT OUTER JOIN departments d
    ON (e.department_id  = d.department_id );

Ответ: Д.

63. Вам необходимо извлечь отчет, в котором будет указано «Нет отдела» для всех тех сотрудников, которые еще не распределены по отделу. Что из следующего будет соответствовать цели?

  1. SELECT nvl(department_id ,'No department yet')
    FROM employees e RIGHT OUTER JOIN departments d
    ON (e.department_id  = d.department_id );
  2. SELECT nvl(department_id ,'No department yet')
    FROM departments d LEFT OUTER JOIN employees e
    ON (e.department_id  = d.department_id );
  3. SELECT nvl(department_id ,'No department yet')
    FROM employees e LEFT OUTER JOIN departments d
    ON (e.department_id  = d.department_id );
  4. SELECT nvl(department_id ,'No department yet')
    FROM employees e FULL OUTER JOIN departments d
    ON (e.department_id  = d.department_id );

Ответ: C.

64. Вам нужно извлечь отчет, в котором отображаются все департаменты, которые еще не были назначены городу. Какой из следующих запросов даст вам требуемый результат?

  1. SELECT department_id , department_name FROM departments d NATURAL JOIN locations l; 
  2. SELECT department_id , department_name FROM departments d FULL OUTTER JOIN locations l
    ON (d.location_id = l.location_id); 
  3. SELECT  d.department_id , d.department_name FROM departments d JOIN locations l
    USING (location_id); 
  4. SELECT department_id , department_name FROM departments d LEFT OUTER JOIN locations l
    ON (d.location_id = l.location_id); 

Ответ: Д.

65. В каких двух случаях следует использовать OUTER JOIN?

  1. Если столбцы соединенных таблиц имеют значения NULL
  2. Если объединенные таблицы имеют столбцы NOT NULL
  3. Если объединенные таблицы содержат только несопоставленные данные
  4. Если объединенные таблицы имеют как совпадающие, так и несоответствующие данные

Ответ: A, D. Внешнее объединение создается, когда записи должны быть включены в результаты, не имея соответствующих записей в таблицах объединения. Эти записи сопоставляются с записями NULL, поэтому они включаются в вывод.

66. Вам нужно найти оценку заработной платы, полученную каждым сотрудником. Какой из следующих запросов вы будете использовать? (Рассмотрим структуру таблицы как дано)

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 grade
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 GRADE 				  NUMBER
 LOSAL 				  NUMBER
 HISAL				  NUMBER
  1. SELECT employee_id , salary, grade
    FROM employees e JOIN grade g
    ON g.grade BETWEEN g.losal AND g.hisal
  2. SELECT employee_id , salary, grade
    FROM employees e FULL OUTER JOIN grade g
    WHERE g.grade > g.losal AND < g.hisal;
  3. SELECT employee_id , salary, grade 
    FROM employees e JOIN grade g
    ON (MIN(g.grade) = g.losal
    AND MAX(g.grade) = g.hisal);
  4. Ни один из вышеперечисленных

Ответ: А.

67. Изучите приведенные структуры таблиц.

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 bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)

Оцените этот оператор SQL:

SELECT e.employee_id , (.25* e.salary) + (.5 * e.commission_pct) + (.75 * b.bonus) as calc_val
FROM employees e, bonus b
WHERE e.employee_id  = b.employee_id ;

Что произойдет, если вы удалите все скобки из расчета?

  1. Значение, отображаемое в столбце calc_val, будет меньше.
  2. Значение, отображаемое в столбце calc_val, будет выше.
  3. Там не будет никакой разницы в столбце calc_val.
  4. Об ошибке будет сообщено.

Ответ: C.

68. Рассмотрите экспонат и изучите структуры таблиц СОТРУДНИКИ, ОТДЕЛЕНИЯ и СТАДКИ. Для какой ситуации вы бы использовали неэквивалентный запрос?

Стол СОТРУДНИКОВТаблица ОТДЕЛОВСтол GRADE

  1. Чтобы найти оценку для каждого из сотрудников
  2. Чтобы вывести имя, job_id и имя менеджера для всех сотрудников
  3. Чтобы найти название отдела сотрудников.
  4. Найти количество сотрудников, работающих в Административном отделе и зарабатывающих менее 30000

Ответ: A. Соединение с неравенством устанавливает отношения, основанные на чем-либо, кроме условия равенства. Значения диапазона, используемые с соединениями неравенства, должны быть взаимоисключающими.

69. В каких трех случаях вы бы использовали предложение USING? (Выберите три.)

  1. Вы хотите создать non-equijoin.
  2. Таблицы, которые нужно объединить, имеют несколько пустых столбцов.
  3. Таблицы, которые нужно объединить, имеют столбцы с одинаковыми именами и разными типами данных.
  4. Вы хотите использовать ЕСТЕСТВЕННОЕ объединение, но хотите ограничить количество столбцов в условии объединения.

Ответ: C, D. Подход JOIN …. USING аналогичен подходу NATURAL JOIN, за исключением того, что в предложении USING указан общий столбец. Условие нельзя включить в предложение USING, чтобы указать, как связаны таблицы. Кроме того, квалификаторы столбца нельзя использовать для общего столбца, указанного в предложении USING.

70.Если в таблицах EMPLOYEES и BONUS есть два столбца с одинаковыми именами, а именно: — SALARY и JOB_ID, какие из следующих запросов эквивалентны друг другу? (Рассмотрим структуру таблицы как дано)

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 bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
  1. SELECT * FROM employees E JOIN bonus B on (salary, job_id )
  2. SELECT * FROM employees E NATURAL JOIN bonus B on (salary, job_id )
  3. SELECT * FROM employees E JOIN bonus B USING (salary, job_id )
  4. SELECT * FROM employees E JOIN bonus B on (salary, job_id )

Ответ: B, C.

71. Изучите структуры таблиц, как указано.

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)

Изучите следующие два оператора SQL:

Запрос 1

SELECT first_name,department_id 
FROM employees E JOIN departments D
USING (department_id );

Запрос 2

SELECT first_name,department_id 
FROM employees E NATURAL JOIN departments D
USING (department_id );

Какое утверждение верно в отношении результата?

  1. Только запрос 1 выполняется успешно и дает требуемый результат.
  2. Только запрос 2 выполняется успешно и дает требуемый результат.
  3. Оба запроса 1 и 2 успешно выполняются и дают разные результаты.
  4. Оба запроса 1 и 2 успешно выполняются и дают одинаковый требуемый результат.

Ответ: Д.

72. Вам необходимо составить отчет, показывающий местонахождение отдела вместе с именем сотрудника для всех наймов, сделанных до 20 января 2013 года.

Таблица ОТДЕЛОВСтол СОТРУДНИКОВТаблица МЕСТО

Вы выполняете следующий запрос:

SELECT department_name  , first_name||' '||last_name
FROM employees E JOIN department d
ON ( hire_date < '20-JAN-2013')
JOIN locations L
ON  (l.location_id = d.location_id) ;

Какое утверждение верно в отношении вышеуказанного запроса?

  1. Он успешно выполняется и дает требуемый результат.
  2. Выполняется успешно, но не дает требуемого результата.
  3. Это приводит к ошибке, потому что порядок соединения таблиц неверен.
  4. Это приводит к ошибке, потому что условия equijoin и non-equijoin нельзя использовать в одном и том же операторе SELECT.

Ответ: Б.

73. Изучите структуру таблицы СОТРУДНИКОВ:

Стол СОТРУДНИКОВ

Вы хотите узнать, были ли введены какие-либо данные о сотруднике более одного раза с использованием другого EMPLOYEE_ID, перечислив все повторяющиеся имена. Какой метод вы можете использовать, чтобы получить требуемый результат?

  1. автообъединение
  2. полное внешнее соединение с самостоятельным соединением
  3. осталось внешнее соединение с самостоятельным соединением
  4. правое внешнее соединение с самостоятельным соединением

Ответ: A. Самостоятельные объединения используются, когда таблица должна быть присоединена к самой себе для получения нужных вам данных. Псевдонимы таблиц требуются в предложении FROM для выполнения самостоятельного объединения.

Изучите структуру таблиц DEPARTMENTS и LOCATIONS и ответьте на следующие вопросы 74 и 75.

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)
SQL> desc locations
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 LOCATION_ID		 NOT NULL NUMBER(4)
 STREET_ADDRESS 		  VARCHAR2(40)
 POSTAL_CODE			  VARCHAR2(12)
 CITY			 NOT NULL VARCHAR2(30)
 STATE_PROVINCE 		  VARCHAR2(25)
 COUNTRY_ID			  CHAR(2)

74. Вам нужно выяснить, в каких отделах не было выделено ни одного места. Какой запрос даст нужный результат?

  1. SELECT d.department_id , d.department_name FROM departments d JOIN locations l
    ON (d.location_id = l.location_id);
  2. SELECT d.department_id , d.department_name FROM departments d RIGHT OUTER JOIN locations l
    ON (d.location_id = l.location_id);
  3. SELECT d.department_id , d.department_name FROM departments d FULL JOIN locations l
    ON (d.location_id = l.location_id);
  4. SELECT d.department_id , d.department_name FROM departments d LEFT OUTER JOIN locations l
    ON (d.location_id = l.location_id);

Ответ: Б.

75.Вы хотите перечислить все отделы, которые не расположены ни в одном месте, вместе с названием отдела. Оцените следующий запрос:

SELECT d.department_id , d.department_name  ,l.location_id, l.city
FROM departments D __________________   location L 
ON (d.location_id = l.location_id);

Какие два параметра JOIN можно использовать в пустом поле в приведенном выше запросе, чтобы получить правильный вывод?

  1. ПРИСОЕДИНИТЬСЯ
  2. ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ
  3. ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
  4. ПРАВО НАРУЖНОЕ СОЕДИНЕНИЕ

Ответ: А, С.

76. Вам необходимо создать отчет, который показывает все идентификаторы отделов, с соответствующими сотрудниками (если есть) и бонусными данными (если есть) для всех сотрудников. Какое предложение FROM дает требуемый результат? (Рассмотрим структуру таблицы как дано)

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 bonus
 Name			 Null?	  Type
 ----------------------- -------- ----------------
 EMPLOYEE_ID		 NOT NULL NUMBER
 JOB_ID 			  VARCHAR2(10)
 SALARY 			  NUMBER(8,2)
 COMMISSION_PCT 		  NUMBER(2,2)
  1. ОТ департаментов LEFT OUTER JOIN сотрудники ИСПОЛЬЗУЯ (департамент_id) бонус FULL OUTER JOIN
  2. ИСПОЛЬЗОВАНИЕ ВСЕГО ВНЕШНЕГО СОЕДИНЕНИЯ (отдел_идентификатор);
  3. ОТ ИСПОЛЬЗОВАНИЯ бонусных сотрудников JOIN (job_id)
  4. ОТ сотрудников FULL OUTER JOIN Бонус FULL OUTER JOIN бонус

Ответ: А.

77. Изучите следующие экспонаты:

Стол БОНУСТаблица ОТДЕЛОВСтол СОТРУДНИКОВ

Вы хотите создать отчет со списком идентификаторов сотрудников и их соответствующих комиссий и отделов (если таковые имеются), если комиссии существуют или нет. Оцените следующий запрос:

SELECT e.employee_id , bonus, department_name FROM bonus b_____________ employees
USING (job_id ) ____________ departments 
USING (department_id )
WHERE commission_pct  IS NOT NULL;

Какая комбинация объединений, используемых в пробелах в приведенном выше запросе, дает правильный вывод?

  1. ПРИСОЕДИНИТЬСЯ; ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
  2. ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ; ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
  3. ПРАВИЛЬНО НАРУЖНОЕ СОЕДИНЕНИЕ; ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
  4. ЛЕВЫЙ НАРУЖНЫЙ РЕЙТИНГ; ПРАВО НАРУЖНОЕ СОЕДИНЕНИЕ

Ответ: А.

78. Прогнозируем результат следующего запроса.

SELECT e.salary, bonus
FROM employees E JOIN bonus b
USING (salary,job_id ); 
  1. Это выполняется успешно.
  2. Выдает ошибку, потому что бонус в SELECT не псевдоним
  3. Выдает ошибку, потому что предложение USING не может иметь более 1 столбца.
  4. Он выполняется успешно, но результаты не верны.

Ответ: Д.

Просмотрите приложение и изучите структуру СОТРУДНИКОВ, ОТДЕЛЕНИЙ, РАСПОЛОЖЕНИЙ и БОНУСОВ. Ответьте на вопросы из 79 и 80, которые следуют:

Стол БОНУСТаблица ОТДЕЛОВСтол СОТРУДНИКОВСтол GRADEТаблица МЕСТО

79. Вам нужно перечислить все отделы в городе Цюрих. Вы выполняете следующий запрос:

SELECT D.DEPARTMENT_ID , D.DEPARTMENT_NAME  , L.CITY
FROM departments D JOIN LOCATIONS L
USING (LOC_ID,CITY) 
WHERE L.CITY = UPPER('ZURICH');

Предсказать результат вышеупомянутого запроса.

  1. Это выполняется успешно.
  2. Это дает ошибку, потому что в выражении SELECT используется квалификатор CITY.
  3. Это дает ошибку, потому что имена столбцов в SELECT не совпадают
  4. Это дает ошибку, потому что предложение USING имеет CITY, который не соответствует столбцу.

Ответ: D. В предложении USING должны использоваться только совпадающие имена столбцов.

80. Ответьте на вопрос, который следует за запросом, данным ниже:

 
SELECT e.first_name, d.department_id , e.salary, b.bonus
FROM bonus b join employees e
USING (job_id )
JOIN department d
USING (department_id )
WHERE d.loc = 'Zurich';

Вам необходимо извлечь отчет, в котором указаны имя, номер отдела, зарплата и бонусы сотрудников компании под названием «ABC». Какой из следующих запросов решит цель?

  1. SELECT e.first_name, d.department_id , e.salary, b.bonus
    FROM bonus b join employees e join departments d
    on (b.job_id  = e.job_id )
    on (e.department_id =d.department_id )
    WHERE d.loc = 'Zurich';
  2. SELECT e.first_name, d.department_id , e.salary, b.bonus
    FROM bonus b join employees e
    on (b.job_id  = e.job_id )
    JOIN department d
    on (e.department_id =d.department_id )
    WHERE d.loc = 'Zurich';
  3. SELECT e.first_name, d.department_id , e.salary, b.bonus
    FROM employees e join bonus b
    USING (job_id )
    JOIN department d
    USING (department_id )
    WHERE d.loc = 'Zurich';
  4. Ни один из вышеперечисленных

Ответ: C. Запрос A выдаст синтаксическую ошибку, запрос B выдаст ошибку неверного идентификатора между бонусом и отделом.

Изучите приведенные ниже экспонаты и ответьте на вопросы с 81 по 85, которые следуют ниже.

Стол БОНУСТаблица ОТДЕЛОВСтол СОТРУДНИКОВ

81. Вам необходимо найти имя менеджера для тех сотрудников, которые зарабатывают более 20000. Какой из следующих запросов будет работать для получения требуемых результатов?

  1. SELECT e.employee_id  "Employee", salary, employee_id , 
    FROM employees E JOIN employees M
    USING (e.manager_id  = m.employee_id )
    WHERE e.salary >20000; 
  2. SELECT e.employee_id  "Employee", salary, employee_id , 
    FROM employees E JOIN employees M
    USING (e.manager_id)
    WHERE e.salary >20000; 
  3. SELECT e.employee_id  "Employee", salary, employee_id , 
    FROM employees E  NATURAL JOIN employees M
    USING (e.manager_id = m.employee_id )
    WHERE e.salary >20000; 
  4. SELECT e.employee_id  "Employee", salary, employee_id , 
    FROM employees E JOIN employees M
    ON (e.manager_id = m.employee_id )
    WHERE e.salary >20000; 

Ответ: Д.

82.Вы выполняете следующий запрос:

SELECT e.employee_id ,d.department_id 
FROM employees e NATURAL JOIN department d NATURAL JOIN bonus b
WHERE department_id  =100;

Какое утверждение верно относительно результата этого запроса?

  1. Это выполняется успешно.
  2. Это приводит к ошибке, потому что НАТУРАЛЬНОЕ соединение может использоваться только с двумя таблицами.
  3. Это приводит к ошибке, потому что столбец, используемый в соединении NATURAL, не может иметь спецификатор.
  4. Это приводит к ошибке, потому что все столбцы, используемые в соединении NATURAL, должны иметь квалификатор.

Ответ: C.

83. Вы хотите отобразить все имена сотрудников и соответствующие им имена руководителей. Оцените следующий запрос:

SELECT e.first_name "EMP NAME", m.employee_name "MGR NAME"
FROM employees e ______________ employees m
ON e.manager_id = m.employee_id ;

Какой параметр JOIN можно использовать в пустом поле в приведенном выше запросе, чтобы получить требуемый результат?

  1. Простой внутренний JOIN
  2. ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
  3. ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
  4. ПРАВО НАРУЖНОЕ СОЕДИНЕНИЕ

Answer: C. A left outer join includes all records from the table listed on the left side of the join, even if no match is found with the other table in the join operation.

Consider the below exhibit and following query to answer questions 84 and 85. (Assume the table department has manager_id and department_name as its columns)

Таблица ОТДЕЛОВ

 
Select *
FROM employees e JOIN department d
ON (e.employee_id  = d.manager_id);

84. You need to display a sentence «(first_name) (last_name) is manager of the (department_name) department». Which of the following SELECT statements will successfully replace ‘*’ in the above query to fulfill this requirement?

  1. SELECT e.first_name||' '||e.last_name||' is manager of the '||d.department_name||' department.' "Managers"
  2. SELECT e.first_name, e.last_name||' is manager of the '||d.department_name||' department.' "Managers"
  3. SELECT e.last_name||' is manager of the '||d.department_name||' department.' "Managers"
  4. Ни один из вышеперечисленных

Ответ: А.

85.What will happen if we omit writing the braces «( )» after the ON clause in the above query?

  1. It will give only the names of the employees and the managers’ names will be excluded from the result set
  2. It will give the same result as with braces «( )»
  3. It will give an ORA error as it is mandatory to write the braces «()» when using the JOIN..ON clause
  4. Ни один из вышеперечисленных

Answer: B. The braces are not mandatory, but using them provides a clear readability of the conditions within it.

86. Which of the following queries creates a Cartesian join?

  1. SELECT title, authorid FROM books, bookauthor;
  2. SELECT title, name FROM books CROSS JOIN publisher;
  3. SELECT title, gift FROM books NATURAL JOIN promotion;
  4. all of the above

Answer: A, B. A Cartesian join between two tables returns every possible combination of rows from the tables. A Cartesian join can be produced by not including a join operation in the query or by using a CROSS JOIN.

87. Which of the following operators is not allowed in an outer join?

  1. А ТАКЖЕ
  2. знак равно
  3. ИЛИ ЖЕ
  4. >

Answer: C. Oracle raises the exception «ORA-01719: outer join operator (+) not allowed in operand of OR or IN»

88. Which of the following queries contains an equality join?

  1. SELECT title, authorid FROM books, bookauthor WHERE books.isbn = bookauthor.isbn AND retail > 20;
  2. SELECT title, name FROM books CROSS JOIN publisher; 
  3. SELECT title, gift FROM books, promotion WHERE retail >= minretail AND retail <= maxretail;
  4. Ни один из вышеперечисленных

Answer: A. An equality join is created when data joining records from two different tables is an exact match (that is, an equality condition creates the relationship).

89. Which of the following queries contains a non-equality join?

  1. SELECT title, authorid FROM books, bookauthor WHERE books.isbn = bookauthor.isbn AND retail > 20;
  2. SELECT title, name FROM books JOIN publisher USING (pubid);
  3. SELECT title, gift FROM books, promotion WHERE retail >= minretail AND retail <= maxretail;
  4. Ни один из вышеперечисленных

Answer: D. Nonequijoins match column values from different tables based on an inequality expression. The value of the join column in each row in the source table is compared to the corresponding values in the target table. A match is found if the expression used in the join, based on an inequality operator, evaluates to true. When such a join is constructed, a nonequijoin is performed.A nonequijoin is specified using the JOIN..ON syntax, but the join condition contains an inequality operator instead of an equal sign.

90. The following SQL statement contains which type of join?

SELECT title, order#, quantity
FROM books FULL OUTER JOIN orderitems
ON books.isbn = orderitems.isbn;
  1. равенство
  2. self-join
  3. non-equality
  4. outer join

Answer: D. A full outer join includes all records from both tables, even if no corresponding record in the other table is found.

91. Which of the following queries is valid?

  1. SELECT b.title, b.retail, o.quantity FROM books b NATURAL JOIN orders od NATURAL JOIN orderitems o WHERE od.order# = 1005;
  2. SELECT b.title, b.retail, o.quantity FROM books b, orders od, orderitems o WHERE orders.order# = orderitems.order# AND orderitems.isbn=books.isbn AND od.order#=1005;
  3. SELECT b.title, b.retail, o.quantity FROM books b, orderitems o WHERE o.isbn = b.isbn AND o.order#=1005;
  4. Ни один из вышеперечисленных

Answer: C. If tables in the joins have alias, the selected columns must be referred with the alias and not with the actual table names.

92. Given the following query.

SELECT zip, order#
FROM customers NATURAL JOIN orders;

Which of the following queries is equivalent?

  1. SELECT zip, order# FROM customers JOIN orders WHERE customers.customer# = orders.customer#;
  2. SELECT zip, order# FROM customers, orders WHERE customers.customer# = orders.customer#;
  3. SELECT zip, order# FROM customers, orders WHERE customers.customer# = orders.customer# (+);
  4. ни один из вышеперечисленных

Answer: B. Natural join instructs Oracle to identify columns with identical names between the source and target tables.

93. Examine the table structures as given. Which line in the following SQL statement raises an error?

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)
1. SELECT e.first_name, d.department_name
2. FROM employees  e, department d
3. WHERE e.department_id=d.department_id
  1. line 1
  2. line 2
  3. line 3
  4. No errors

Answer: A. If a query uses alias names in the join condition, their column should use the alias for reference.

94. Given the following query:

SELECT lastname, firstname, order#
FROM customers LEFT OUTER JOIN orders
USING (customer#)
ORDER BY customer#;

Which of the following queries returns the same results?

  1. SELECT lastname, firstname, order# FROM customers c OUTER JOIN orders o ON c.customer# = o.customer# ORDER BY c.customer#;
  2. SELECT lastname, firstname, order# FROM orders o RIGHT OUTER JOIN customers c ON c.customer# = o.customer# ORDER BY c.customer#;
  3. SELECT lastname, firstname, order# FROM customers c, orders o WHERE c.customer# = o.customer# (+) ORDER BY c.customer#;
  4. Ни один из вышеперечисленных

Ответ: B, C.

95. Which of the below statements are true?

  1. Group functions cannot be used against the data from multiple data sources.
  2. If multiple tables joined in a query, contain identical columns, Oracle selects only one of them.
  3. Natural join is used to join rows from two tables based on identical columns.
  4. А и Б

Answer: C. Group functions can be used on a query using Oracle joins. Ambiguous columns must be referenced using a qualifier.

96. Which line in the following SQL statement raises an error?

1. SELECT name, title
2. FROM books JOIN publisher
3. WHERE books.pubid = publisher.pubid
4. AND
5. cost < 45.95
  1. line 1
  2. line 2
  3. line 3
  4. line 4

Answer: C. Since the tables are joined using JOIN keyword, the equality condition should be written with the USING clause and not WHERE clause.

97. Given the following query:

SELECT title, gift
FROM books CROSS JOIN promotion;

Which of the following queries is equivalent?

  1. SELECT title, gift
    FROM books NATURAL JOIN promotion;
  2. SELECT title
    FROM books INTERSECT
    SELECT gift
    FROM promotion;
  3. SELECT title
    FROM books UNION ALL
    SELECT gift
    FROM promotion;
  4. SELECT title, gift
    FROM books, promotion;

Answer: D. Cartesian joins are same as Cross joins.

98. If the CUSTOMERS table contains seven records and the ORDERS table has eight records, how many records does the following query produce?

SELECT *
FROM customers CROSS JOIN orders;
  1. 0
  2. 56
  3. 7
  4. 15

Answer: B. Cross join is the cross product of rows contained in the two tables.

99. Which of the following SQL statements is not valid?

  1. SELECT b.isbn, p.name
    FROM books b NATURAL JOIN publisher p;
  2. SELECT isbn, name
    FROM books b, publisher p
    WHERE b.pubid = p.pubid;
  3. SELECT isbn, name
    FROM books b JOIN publisher p
    ON b.pubid = p.pubid;
  4. SELECT isbn, name
    FROM books JOIN publisher
    USING (pubid);

Answer: A. Ambiguous columns must be referred with the table qualifiers.

100. Which of the following lists all books published by the publisher named ‘Printing Is Us’?

  1. SELECT title
    FROM books NATURAL JOIN publisher
    WHERE name = 'PRINTING IS US';
  2. SELECT title
    FROM books, publisher
    WHERE pubname = 1;
  3. SELECT *
    FROM books b, publisher p
    JOIN tables ON b.pubid = p.pubid
    WHERE name = 'PRINTING IS US';
  4. ни один из вышеперечисленных

Answer: A. Assuming that the column NAME is not contained in BOOKS table, query A is valid.

101. Which of the following SQL statements is not valid?

  1. SELECT isbn
    FROM books
    MINUS
    SELECT isbn
    FROM orderitems;
  2. SELECT isbn, name
    FROM books, publisher
    WHERE books.pubid (+) = publisher.pubid (+);
  3. SELECT title, name
    FROM books NATURAL JOIN publisher
  4. All the above SQL statements are valid.

Answer: B. The query B raises an exception «ORA-01468: a predicate may reference only one outer-joined table».

102. Which of the following statements about an outer join between two tables is true?

  1. If the relationship between the tables is established with a WHERE clause, both tables can include the outer join operator.
  2. To include unmatched records in the results, the record is paired with a NULL record in the deficient table.
  3. The RIGHT, LEFT, and FULL keywords are equivalent.
  4. all of the above

Ответ: Б.

103. Which line in the following SQL statement raises an error?

1. SELECT name, title
2. FROM books b, publisher p
3. WHERE books.pubid = publisher.pubid
4. AND
5. (retail > 25 OR retail-cost > 18.95);
  1. line 1
  2. line 3
  3. line 4
  4. line 5

Answer: B. Since the tables used in the query have a qualifier, the columns must be referred using the same.

104. What is the maximum number of characters allowed in a table alias?

  1. 10
  2. 155
  3. 255
  4. 30

Answer: D. The table alias can be maximum of 30 characters.

105. Which of the following SQL statements is valid?

  1. SELECT books.title, orderitems.quantity
    FROM books b, orderitems o
    WHERE b.isbn= o.ibsn;
  2. SELECT title, quantity
    FROM books b JOIN orderitems o;
  3. SELECT books.title, orderitems.quantity
    FROM books JOIN orderitems
    ON books.isbn = orderitems.isbn;
  4. ни один из вышеперечисленных

Ответ: C.