SQL cобеседования
780 subscribers
97 photos
181 links
Подготовка к собеседованиям в IT

Еще больше разобранных вопросов для подготовки на сайте https://frontview-it.ru

Backend - @frontview_backend
Frontend - @frontview_it
Все IT вакансии - @frontview_all_vacancies
Download Telegram
Для ограничения результатов подзапроса используется ключевое слово LIMIT, которое указывает максимальное количество строк, возвращаемых подзапросом. В некоторых СУБД, таких как SQL Server, вместо LIMIT используется TOP или FETCH FIRST N ROWS ONLY.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73
➡️ Работа с временными зонами в SQL требует использования типа данных TIMESTAMP WITH TIME ZONE. Этот тип данных сохраняет временные метки вместе с информацией о временной зоне.

Пример использования в PostgreSQL:


-- Создание таблицы с временной меткой и временной зоной
CREATE TABLE events (
event_id SERIAL PRIMARY KEY,
event_time TIMESTAMP WITH TIME ZONE
);

-- Вставка данных с указанием временной зоны
INSERT INTO events (event_time) VALUES ('2025-01-01 10:00:00+02');

-- Преобразование временной метки в другую временную зону
SELECT event_time AT TIME ZONE 'UTC' FROM events;


Этот подход позволяет корректно обрабатывать временные данные в разных временных зонах.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
Контейнеризация баз данных позволяет изолировать и управлять средой базы данных, обеспечивая легкость развертывания и консистентность между различными окружениями. Используя инструменты, такие как Docker, можно быстро создавать, масштабировать и тестировать базы данных, упрощая процессы разработки и интеграции.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
Удаление данных из таблицы осуществляется с помощью команды DELETE. Она позволяет удалить одну или несколько строк, соответствующих заданным условиям.

Для удаления всех строк из таблицы используется команда без условия WHERE:


DELETE FROM table_name;


Для удаления конкретных строк необходимо указать условие WHERE:


DELETE FROM table_name WHERE condition;


Важно помнить, что DELETE удаляет данные, но не структуру таблицы. Для полного удаления данных и структуры используется команда DROP.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
Хранимая процедура — это предварительно скомпилированный набор SQL-команд, который хранится в базе данных и может быть выполнен по запросу для выполнения повторяющихся задач. Для создания хранимой процедуры используется команда CREATE PROCEDURE, за которой следует имя процедуры и тело, содержащее SQL-код.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2
📝 Для обновления данных в таблице используется оператор UPDATE. Он позволяет изменить существующие записи на основе заданных условий.


UPDATE employees
SET salary = salary * 1.1
WHERE department = 'Sales';


Этот запрос увеличивает зарплату на 10% для всех сотрудников в отделе продаж.

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

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
Работа с многопользовательскими транзакциями требует использования механизмов блокировок и уровней изоляции для предотвращения конфликтов и обеспечения целостности данных. Важно правильно выбирать уровень изоляции, чтобы балансировать между производительностью и консистентностью данных, минимизируя вероятность возникновения таких проблем, как потерянные обновления и фантомные чтения.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4
✔️ Представление (view) — это виртуальная таблица, которая упрощает сложные запросы, сохраняя их логику и структуру. Оно позволяет создавать абстракции над базовыми таблицами, облегчая доступ к данным и улучшая читаемость кода.


-- Создание представления для упрощения сложного запроса
CREATE VIEW ActiveUsers AS
SELECT id, username, email
FROM users
WHERE status = 'active';

-- Использование представления в запросе
SELECT * FROM ActiveUsers;


Представления помогают сократить дублирование кода и централизовать логику выборки данных.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121
Агрегатные функции выполняют вычисления над набором значений и возвращают одно значение, такие как SUM, AVG, COUNT, MIN и MAX. Они часто используются в сочетании с оператором GROUP BY для группировки данных и получения сводной информации из таблиц.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
При работе с JOIN важно учитывать возможные дубликаты, которые могут возникнуть в результате объединения таблиц. Вот несколько способов обработки таких случаев.

🔴 Первый подход — использование DISTINCT для устранения дубликатов в результатах. Например:

SELECT DISTINCT a.column1, b.column2
FROM table_a a
JOIN table_b b ON a.id = b.a_id;


Этот запрос вернет уникальные комбинации значений из обеих таблиц.

🔴 Второй способ — использовать GROUP BY, если требуется агрегировать данные:

SELECT a.column1, COUNT(b.column2) AS count
FROM table_a a
JOIN table_b b ON a.id = b.a_id
GROUP BY a.column1;


Это позволит получить количество связанных записей без дубликатов.

🔴 Также можно воспользоваться подзапросами для более сложных случаев, где нужны конкретные значения без дублирования:

SELECT a.column1, b.column2
FROM table_a a
JOIN (SELECT DISTINCT a_id, column2 FROM table_b) b ON a.id = b.a_id;


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122🔥2
Временные таблицы — это таблицы, которые создаются для временного хранения данных в рамках сессии или транзакции и автоматически удаляются после их завершения. Они полезны для обработки промежуточных данных или упрощения сложных запросов.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
BETWEEN и IN — это операторы, используемые для фильтрации данных, но они работают по-разному.

- BETWEEN: Проверяет, находится ли значение в диапазоне, включая границы. Используется для числовых, временных или строковых данных.


SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';


Этот запрос вернет все заказы, сделанные в 2023 году.

- IN: Проверяет, совпадает ли значение с одним из элементов списка. Подходит для сравнения с конкретными значениями.


SELECT * FROM products WHERE category_id IN (1, 2, 3);


Этот запрос вернет продукты, относящиеся к категориям 1, 2 или 3.

Разница: BETWEEN работает с диапазонами, а IN — с конкретными значениями.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Оператор LIKE используется для поиска строк, соответствующих заданному шаблону. В шаблоне могут применяться символы % для обозначения любой последовательности символов и _ для обозначения одного любого символа.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2
Триггеры — мощный инструмент, но их использование не всегда оправдано.

1. Сложность отладки:
Триггеры выполняются автоматически, что усложняет поиск ошибок. Если логика скрыта в триггерах, это может затруднить понимание работы системы.

2. Производительность:
Триггеры добавляют накладные расходы на каждую операцию. Например, триггер на INSERT будет выполняться при каждой вставке, что может замедлить работу.

3. Альтернативы:
Логику часто можно реализовать на уровне приложения или через хранимые процедуры, что делает код более прозрачным и управляемым.

4. Каскадные эффекты:
Триггеры могут вызывать другие триггеры, создавая цепочки, которые сложно отследить. Это увеличивает риск непредсказуемого поведения.

Триггеры стоит использовать осторожно, когда их преимущества перевешивают потенциальные сложности. В остальных случаях лучше рассмотреть альтернативные подходы.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
Ограничение — это правило, применяемое к данным в таблице для обеспечения их целостности и точности. Основные виды ограничений включают PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL и CHECK.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
🔴 Транзакции позволяют группировать несколько операций в одну логическую единицу работы. Они обеспечивают атомарность: либо все операции выполняются, либо ни одна. Транзакции начинаются с BEGIN TRANSACTION и завершаются COMMIT или ROLLBACK.


BEGIN TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

COMMIT;


Если все операции прошли успешно, изменения фиксируются с помощью COMMIT. В случае ошибки выполняется ROLLBACK, который отменяет все изменения, сделанные в рамках транзакции. Это гарантирует целостность данных.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
➡️ Оптимизация подзапросов важна для повышения производительности запросов. Один из подходов — замена подзапросов на JOIN. Например:


SELECT * FROM orders
WHERE customer_id IN (SELECT id FROM customers WHERE active = 1);


Можно переписать с использованием JOIN:


SELECT orders.* FROM orders
JOIN customers ON orders.customer_id = customers.id
WHERE customers.active = 1;


Также стоит избегать коррелированных подзапросов, так как они выполняются для каждой строки основного запроса. Вместо этого лучше использовать временные таблицы или CTE (Common Table Expressions). Индексация полей, участвующих в подзапросах, также значительно ускоряет выполнение.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
🟥 NULL значения в подзапросах могут привести к неожиданным результатам, если их не обрабатывать корректно. В SQL NULL означает отсутствие данных, и любые операции с NULL возвращают NULL.

Для обработки NULL в подзапросах можно использовать функции, такие как COALESCE или IS NULL.

Пример с COALESCE:

SELECT name
FROM users
WHERE age = (SELECT COALESCE(age, 0) FROM profiles WHERE user_id = 1);


COALESCE возвращает первое ненулевое значение из списка. В данном случае, если age в подзапросе NULL, будет использовано значение 0.

Пример с IS NULL:

SELECT name
FROM users
WHERE (SELECT age FROM profiles WHERE user_id = 1) IS NULL;


Этот запрос вернет имена пользователей, если возраст в подзапросе равен NULL.

Также можно использовать IFNULL или NULLIF в зависимости от задачи. Важно учитывать, что сравнение с NULL через = или != всегда возвращает NULL, поэтому для проверки на NULL используется IS NULL или IS NOT NULL.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4
Уровни изоляции транзакций определяют степень защиты данных от влияния параллельных транзакций, обеспечивая баланс между целостностью данных и производительностью. В SQL стандарте выделяют четыре уровня: Read Uncommitted, Read Committed, Repeatable Read и Serializable, каждый из которых предлагает разную степень изоляции и защиты от аномалий.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
📝 SQL и NoSQL — это два основных типа баз данных, которые отличаются структурой, способом хранения данных и подходами к работе с ними.

SQL (реляционные базы данных) используют таблицы для хранения данных. Данные организованы в строках и столбцах, где каждая строка представляет запись, а каждый столбец — атрибут. SQL-базы строго следуют схеме, которая определяет структуру данных. Примеры: MySQL, PostgreSQL.


SELECT * FROM users WHERE age > 30;


Этот запрос извлекает всех пользователей старше 30 лет из таблицы users.

NoSQL (нереляционные базы) более гибкие. Они могут хранить данные в виде документов, ключ-значение, графов или колонок. NoSQL не требует строгой схемы, что позволяет легко масштабировать и изменять структуру данных. Примеры: MongoDB, Redis.


{
"name": "Alex",
"age": 35,
"city": "Moscow"
}


В NoSQL данные могут храниться в таком формате, без строгой привязки к таблицам.

Основное отличие: SQL подходит для сложных запросов и транзакций, NoSQL — для гибкости и масштабируемости.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Нормализация базы данных — процесс организации данных для минимизации избыточности и аномалий. Основные подходы включают последовательное применение нормальных форм.

Первая нормальная форма (1NF) требует атомарности данных и отсутствия повторяющихся групп. Вторая нормальная форма (2NF) устраняет частичные зависимости, обеспечивая полную функциональную зависимость от первичного ключа. Третья нормальная форма (3NF) удаляет транзитивные зависимости, чтобы атрибуты зависели только от первичного ключа.

Дополнительные уровни, такие как BCNF, 4NF и 5NF, решают более сложные случаи избыточности и зависимостей. Нормализация улучшает структуру данных, но может усложнить запросы, поэтому иногда применяется денормализация для оптимизации производительности.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111