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

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

Backend - @frontview_backend
Frontend - @frontview_it
Все IT вакансии - @frontview_all_vacancies
Download Telegram
SQL Server — это реляционная система управления базами данных, разработанная Microsoft, которая используется для хранения, управления и извлечения данных по запросам пользователей. Она поддерживает транзакции, обеспечивает безопасность данных и позволяет выполнять сложные аналитические запросы для бизнес-аналитики и отчетности.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2
😎Аутентификация для доступа к базе данных обеспечивает безопасность, требуя проверки подлинности пользователя перед предоставлением доступа.

😎Для настройки аутентификации создается пользователь с уникальными учетными данными. Пример для MySQL:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; 
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
FLUSH PRIVILEGES;


😎CREATE USER создает нового пользователя, GRANT назначает права доступа к базе данных, а FLUSH PRIVILEGES обновляет изменения.

😎Использование аутентификации защищает данные от несанкционированного доступа.

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

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Для ограничения результатов подзапроса используется ключевое слово 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