Всем привет! В этой статье пойдет речь об одной из базовых сертификаций от ORACLE — Oracle Database SQL Certified Expert.
Чтобы получить сертификат, нужно сдать экзамен 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 – обязательно!
Удачи Вам всем! До скорых встреч.
Автор: hasanfalizada