🗄️ SQL и базы данных  ·  20 вопросов  ·  ~39 мин  ·  ⏱ Таймер 39:00  ·  Средний  ·  👥 1 прошёл

PostgreSQL на практике

Задания собраны вокруг особенностей PostgreSQL, которые действительно меняют поведение приложения: identity и последовательности не обещают плотной нумерации, RETURNING убирает лишнее чтение, ON CONFLICT требует подходящей уникальности, массивы и диапазоны имеют собственные операторы, а расширения подключаются осознанно и сопровождаются как зависимость базы.

Отвечено: 0 из 20
--:--
0%
💡 Инструкция: Выбери один ответ из четырёх. В тесте 20 вопросов и 39 минут. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и разбор каждого задания.
Вопрос 1 из 20
Какой тип лучше хранит IPv4 и IPv6 с проверкой формата и сетевыми операциями?
SQL
CREATE TABLE access_log (client_ip inet NOT NULL);
Вопрос 2 из 20
Зачем использовать uuid вместо text для UUID?
SQL
id uuid PRIMARY KEY DEFAULT gen_random_uuid()
Вопрос 3 из 20
Как проверить, содержит ли массив tags значение sql?
Вопрос 4 из 20
Какой тип естественно выражает интервал цен от 100 до 500?
SQL
SELECT numrange(100, 500, '[)');
Вопрос 5 из 20
Почему enum стоит применять осмотрительно?
Вопрос 6 из 20
Гарантирует ли GENERATED ... AS IDENTITY отсутствие пропусков?
SQL
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY
Вопрос 7 из 20
Почему SELECT max(id) после INSERT опасен для получения id своей строки?
SQL
INSERT INTO orders(customer_id) VALUES ($1);
SELECT max(id) FROM orders;
Вопрос 8 из 20
Как надёжно получить сгенерированный id одной командой?
Вопрос 9 из 20
Откатывается ли nextval последовательности вместе с транзакцией?
SQL
BEGIN;
SELECT nextval('order_no_seq');
ROLLBACK;
Вопрос 10 из 20
Что означает currval в текущем сеансе?
SQL
SELECT currval('orders_id_seq');
Вопрос 11 из 20
Что необходимо для ON CONFLICT (email)?
SQL
CREATE UNIQUE INDEX ux_users_email ON users(email);
Вопрос 12 из 20
Что означает EXCLUDED.name в DO UPDATE?
SQL
INSERT INTO users(email,name) VALUES ($1,$2)
ON CONFLICT(email) DO UPDATE SET name=EXCLUDED.name;
Вопрос 13 из 20
Как принять повторное внешнее событие без ошибки и без изменения первой записи?
Вопрос 14 из 20
Почему бездумно обновлять created_at через UPSERT плохо?
SQL
ON CONFLICT(external_id) DO UPDATE
SET created_at = EXCLUDED.created_at;
Вопрос 15 из 20
Как вернуть всю фактически вставленную или обновлённую строку?
Вопрос 16 из 20
Что делает CREATE EXTENSION pg_trgm?
SQL
CREATE EXTENSION IF NOT EXISTS pg_trgm;
Вопрос 17 из 20
Для чего полезен pg_trgm?
SQL
SELECT name FROM products WHERE name % 'пылесос';
Вопрос 18 из 20
Какой индекс обычно создают для ILIKE '%фрагмент%' с pg_trgm?
Вопрос 19 из 20
Почему расширение надо указывать в миграциях проекта?
Вопрос 20 из 20
Что проверить перед использованием нового расширения в управляемой базе?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe)

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу