Перевод статьи «Top SQL Interview Questions and How to Ace Them».
SQL является основой управления и поиска данных. Это мощный инструмент, позволяющий взаимодействовать с базами данных и извлекать необходимую информацию из структурированных данных. Как человек, который прошёл через множество собеседований, а также проводил их сам, я понимаю, как важно быть хорошо подготовленным. Давайте вооружим вас знаниями, чтобы вы могли уверенно отвечать на вопросы по SQL на собеседовании.
БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"
Вопрос 1. Что такое SQL и почему он важен?
SQL – это язык структурированных запросов (structured query language) для создания, модификации, хранения и обработки данных в реляционной базе данных, а также выполнения запросов к таким базам данных. SQL очень важен, поскольку позволяет:
- Получать данные из базы данных с помощью операторов
SELECT
- Вносить, обновлять или удалять данных с помощью операторов
INSERT
,UPDATE
иDELETE
- Создавать и изменять структуру базы данных с помощью операторов
CREATE
,ALTER
иDROP
- Обеспечивать целостность данных при помощи ограничений
- Выполнять сложные манипуляции с данными, например, операции с помощью оператора
JOIN
Фрагмент кода:
-- Пример инструкции SELECT SELECT first_name, last_name FROM employees WHERE department = 'Data Science';
Вопрос 2. В чём разница между SQL и NoSQL базами данных?
SQL основан на использовании реляционных баз данных, в то время как NoSQL — на нереляционных. SQL базы данных используют структурированные схемы, тогда как в NoSQL используются гибкие, бессистемные (schemaless) модели данных.
Фрагмент кода:
-- Создание таблицы в SQL CREATE TABLE employees ( id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50) ); -- Создание документа в NoSQL { "id": 1, "first_name": "John", "last_name": "Doe" }
Вопрос 3. Объясните функции оператора JOIN в SQL
Оператор JOIN
позволяет объединять строки из двух или более таблиц на основе связанного между ними столбца. Распространённые типы оператора JOIN
включают INNER JOIN
, LEFT JOIN
, RIGHT JOIN
и FULL OUTER JOIN
.
Фрагмент кода:
-- Пример INNER JOIN SELECT orders.order_id, customers.customer_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
Вопрос 4. Что такое индексы в SQL и почему они важны?
Индексы необходимы для оптимизации производительности баз данных. Они обеспечивают быстрый поиск данных на основе значений в определённых столбцах. Без индексов базам данных пришлось бы сканировать каждую строку в таблице, что может занять много времени при работе с большими массивами данных.
Фрагмент кода:
-- Создание индекса CREATE INDEX idx_last_name ON employees (last_name);
Вопрос 5. Как предотвратить SQL-инъекции?
SQL-инъекция — это уязвимость в системе безопасности, при которой злоумышленник может манипулировать SQL-запросами, внедряя в них вредоносный код. Чтобы предотвратить SQL-инъекции, всегда используйте параметризованные запросы или подготовленные выражения.
Фрагмент кода (Python с использованием psycopg2):
import psycopg2 # Плохой подход (уязвим для SQL-инъекции) query = f"SELECT * FROM users WHERE username = '{user_input}'" # Хороший подход (использование параметризованного запроса) query = "SELECT * FROM users WHERE username = %s" cursor.execute(query, (user_input,))
Заключение
Подготовка к собеседованиям по SQL может быть сложной, но с правильными знаниями и практикой вы сможете успешно справиться с этой задачей. Помните о важности изучения основ SQL, операций с использованием оператора JOIN
, а также индексов и методов обеспечения безопасности.