Pull to refresh

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

Reading time 4 min
Views 23K
Всем привет! В этой статье пойдет речь об одной из базовых сертификаций от 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. WHERE обязательно вернет FALSE, если в списке значений для оператора NOT IN есть 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.
  • Пользователь издал любую DDL или 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 – обязательно!

Данная статья в виде слайдиков на YouTube.

Удачи Вам всем! До скорых встреч.
Tags:
Hubs:
+19
Comments 28
Comments Comments 28

Articles