Как и обещали, выкладываем пост с основными командами в SQL, которыми вы будете пользоваться 90% времени. Также в конце поста Вас ждет бонус, пример неправильного SQL запроса, о котором любят спрашивать на интервью!
Итак, поехали:
SELECT: Выборка данных из таблицы.
SELECT имя, фамилия FROM сотрудники;
INSERT: Вставка новых записей в таблицу.
INSERT INTO сотрудники (имя, фамилия, возраст) VALUES ('Иван', 'Иванов', 30);
UPDATE: Обновление данных в таблице.
UPDATE сотрудники SET возраст = 31 WHERE имя = 'Иван' AND фамилия = 'Иванов';
DELETE: Удаления записей из таблицы.
DELETE FROM сотрудники WHERE имя = 'Иван' AND фамилия = 'Иванов';
CREATE TABLE: Создание новой таблицы в базе данных.
CREATE TABLE новые_сотрудники (
id INT PRIMARY KEY,
имя VARCHAR (100),
фамилия VARCHAR (100),
возраст INT
);
DROP TABLE: Удаления таблицы.
DROP TABLE старые_сотрудники;
ALTER TABLE: Изменение структуры существующей таблицы.
ALTER TABLE сотрудники ADD email VARCHAR (100);
JOIN: Объединение выборки записей из двух или более таблиц, основываясь на связанном поле между ними. Существуют различные типы JOIN: INNER, LEFT, RIGHT, FULL.
SELECT сотрудники. имя, сотрудники. фамилия, отделы. название FROM сотрудники
INNER JOIN отделы ON сотрудники. отделID = отделы. id;
WHERE: Фильтрация результатов запроса на основе заданных условий.
SELECT * FROM сотрудники WHERE возраст > 30;
GROUP BY: Агрегирование данных с помощью функций (COUNT, MAX, MIN, SUM, AVG) для группировки результатов запроса по одному или нескольким столбцам.
SELECT отдел_id, COUNT (*) FROM сотрудники GROUP BY отдел_id;
Бонус:
Работая с SQL важно помнить, что не все его команды и функции будут работать одинаково корректно при различных задачах. Лучше углубиться в теоретическую часть и процессы работы SQL изнутри, если Вы собираетесь тесно работать с базами данных. Так, например, одна из любимых задачек многих собеседующих ставит новичков в тупик:
Как можно оптимизировать данный запрос и почему?
SELECT * FROM A WHERE A. id NOT IN (SELECT id FROM B);
Данный запрос не является оптимальным поскольку он использует подзапрос с оператором NOT IN, что очень замедляет работу, особенно при больших объемах данных. Ваш SQL-сервер будет выполнять подзапрос для каждой строки таблицы A, что замедлит общее выполнение запроса.
Вместо этого вы можете использовать оператор LEFT JOIN для выполнения той же операции, но более эффективно:
SELECT A.*
FROM A
LEFT JOIN B ON A. id = B. id
WHERE B. id IS NULL;
Здесь мы присоединяем таблицу B к таблице A, используя LEFT JOIN, который включает все строки из таблицы A и соответствующие строки из таблицы B (если они существуют). Если нет соответствия, результат равен NULL. Затем мы фильтруем строки, используя условие WHERE B. id IS NULL, что оставляет только те строки из A, для которых нет соответствия в B. Это решение обычно более эффективно, поскольку SQL-серверам обычно легче оптимизировать запросы с JOIN, нежели с подзапросами, особенно когда индексы установлены правильно на соответствующих столбцах.
Имея прямое и простое решение в SQL потратьте 15 минут на поиск альтернативы, возможно, Вам удастся найти более оптимальный вариант. Вот мы и перечислили список основных команд и рассмотрели один из примеров правильного применения, пользуйтесь!