[Из песочницы] Выходим на уровень эксперта! 50 оттенков экзамена 1Z0-047 (сертификация Oracle Database SQL Certified Expert)

Всем привет! В этой статье пойдет речь об одной из базовых сертификаций от ORACLE — Oracle Database SQL Certified Expert.
image

Чтобы получить сертификат, нужно сдать экзамен 1Z0–047.

Стоит экзамен для разных стран по-разному. Для Азербайджана — это 150 USD. Также есть опция купить тесты для практики от Transcender вместе с ваучером на экзамен (bundle). Это обойдется Вам в 200 USD. И это выгодней, нежели покупать тесты отдельно.

Готовился сам по следующим книгам и документам + практика на базе:

— Oracle Database 11g SQL (Oracle Press) by Jason Price (старенькая, но неплохая книга)
 — OCA Oracle Database 12c SQL Fundamentals I Exam Guide (Exam 1Z0–061) (Oracle Press) (был очень приятно удивлен, когда узнал сколько полезных советов она в себе таит)
 — Beginning Oracle SQL (Expert’s Voice in Oracle) (очень много полезного. Хорошая книга)
 — OCE Oracle Database SQL Certified Expert Exam Guide (Exam 1Z0–047) (Oracle Press) (классика жанра)
 — Oracle Database Sample Schemas 12c Release 2 (12.2) (понадобится при развертывании тестовых схем)

Не могу сказать, что экзамен простой.

Поэтому решил поделиться примочками и скрытыми уловками, которые Вас там поджидают.

Итак, поехали!

1. SQL является декларативным языком программирования, который описывает какие вычисления следует произвести, но не как. Как  — это удел императивных языков.

2. Когда Вас просят оценить код либо схему или таблицу, не тратьте время на подробное изучение таковых. Сначала изучите вопрос полностью. Возможно, Вам даже и не понадобятся ни таблица, ни схема, ни SQL-выражение.

3. Максимальная размерность типа NUMBER — 38 знаков.

4. Маска для даты по умолчанию — DD-MON-YY. Хоть и видны только две последние цифры года, по умолчанию все равно хранятся все четыре.

5. Самая распространённая форма для транзакционных БД — это 3-я нормальная форма.

6. FOREIGN KEY может быть привязан не обязательно к PRIMARY KEY. Единственное условие — данное поле должно быть UNIQUE.

7. Максимальная размерность VARCHAR2, NVARCHAR2, RAW:

  • 32767 байт — если MAX_STRING_SIZE = EXTENDED
  • 4000 байт — если MAX_STRING_SIZE = STANDARD

8. Валидный рейндж для DATE — от 1 Января, 4712 до н.э. до 31 Декабря, 9999.

9. Размерность фракционных секунд для TIMESTAMP (всех подвидов) — может быть от 0 до 9. Но по умолчанию — 6.

10. Всего на экзамене рассматриваются:

  • 5 DML команд: SELECT, INSERT, UPDATE, DELETE, MERGE
  • 8 DDL команд: CREATE, ALTER, DROP, RENAME, TRUNCATE, COMMENT, FLASHBACK, PURGE
  • 2 DCL команды: GRANT, REVOKE
  • 3 TCL команды: COMMIT, ROLLBACK, SAVEPOINT

11. NOT IN обязательно вернет FALSE, если в списке значений есть NULL. Будьте внимательны!

12. Количество джойнов = количество таблиц в джойнах — 1.

13. Использовать имя таблицы или алиасы в USING запрещено!

14. SELECT реализует основные три концепции: PROJECTION, SELECTION, JOINING.

15. Будьте внимательны к пунктуации. Составители тестов могут преднамеренно допустить ошибку в коде!

16. Любая арифметическая операция с NULL обязательно вернет NULL.

17. Ошибочно предполагать, что результат арифметической операции с датами также будет типа даты. Нет. Как правило, тип ответа либо типа INTERVAL, либо типа NUMBER.

18. DISTINCT можно использовать с любой из агрегирующих функций.

19. Порядок выполнения команд в обычном запросе:

  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • SELECT
  • ORDER BY

20. Не существует привилегии DROP TABLE. Существует DROP ANY TABLE.

21. Чтобы дать привилегию всем юзерам, надо дать ее PUBLIC.

22. У INDEX-ов и CONSTRAINT-ов — свой неймспейс.

23. Агрегирующие функции запрещены в блоке WHERE.

24. GROUP BY может быть использован без HAVING, но HAVING — может быть использован только с GROUP BY.

25. CONSTRAINT типа NOT NULL не может быть создана вне описания поля при создании таблицы, а только вместе с описанием поля.

26. В функции MONTHS_BETWEEN () при подстановке параметров разрешается в качестве первого параметра ставить меньшую дату, а потом большую. Просто ответ будет отрицательным.

27. Тип DATE не может хранить фракционные секунды и часовые пояса.

28. Вместе с ROLLUP можно использовать любую агрегирующую функцию.

29. Группирующие функции могут быть вложены максимум на 2 уровня.

30. В ORDER BY к колонке можно обратиться 3-мя способами:

  • По имени колонки.
  • По ее алиасу.
  • По порядковому номеру.

31. NATURAL + USING либо NATURAL + ON — не место в одном запросе. Вы получите ошибку.

32. В разделе FROM может быть бесконечное количество вложенных подзапросов, но в разделе WHERE — максимум 255.

33. Всего существует 3 вида подзапросов: SINGLE-ROW, MULTIPLE-ROW и CORRELATED.

34. Отсчет символов в строке начинается с 1, а не с 0.

35. Единственный SET OPERATOR, при котором строки не сортируются — UNION ALL.

36. Случаи, когда транзакция насильно завершается:

  • Пользователь сам издал команду COMMIT или ROLLBACK.
  • Пользователь издал любую DML или DCL команду.
  • Сессия пользователя истекла.
  • Сломался ORACLE (Не дай Бог, конечно!)

37. Наиболее подходящие поля для индексации:
  • Поля внешних ключей.
  • Поля, наиболее часто используемые в WHERE, GROUP BY и ORDER BY.

38. В ORACLE SQL не существует типа BOOLEAN.

39. То, что COUNT (1) быстрее COUNT (*) — всего лишь миф.

40. Невозможно поменять часовой пояс БД, если есть хотя бы одна таблица с полем типа TIMESTAMP WITH LOCAL TIME ZONE.

41. Функция может принять от 0 или более параметров. Но возвращает всегда 1 значение. Не больше и не меньше.

42. COUNT никогда не сможет вернуть NULL. При отсутствии строк вернет 0.

43. SELECT COUNT (ALL DUMMY) FROM DUAL — синтаксически верный запрос.

44. SEMIJOIN — это запрос с использованием оператора EXISTS.

45. Если был вызван NEXTVAL, то счетчик сработает независимо от того успешно ли был выполнен запрос или нет.

46. Если был создан синоним для объекта, а объект ликвидирован, то синоним продолжает существовать.

47. FLASHBACK TABLE невозможно откатить.

48. Для n выражений, CUBE возвращает 2 в степени n группировок.

49. SQL, PL/SQL и JAVA являются нативными языками для ORACLE DB.

50. Для формирования иерархического запроса, наличие START WITH и CONNECT BY — обязательно!

Удачи Вам всем! До скорых встреч.

Комментарии (0)

© Habrahabr.ru