Упражнения и задачи по SQL для начинающих

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Введение в SQL и основные понятия

SQL (Structured Query Language) — это язык программирования, предназначенный для управления и манипуляции данными в реляционных базах данных. Он позволяет выполнять различные операции, такие как создание, чтение, обновление и удаление данных. Основные компоненты SQL включают таблицы, строки и столбцы, которые вместе формируют структуру базы данных.

Кинга Идем в IT: пошаговый план для смены профессии

Основные понятия SQL

  • Таблица: Основная структура данных, состоящая из строк и столбцов. Таблицы могут содержать различные типы данных, такие как текст, числа и даты.
  • Строка: Единица данных в таблице, также известная как запись. Каждая строка представляет собой отдельную запись в таблице и содержит данные для всех столбцов.
  • Столбец: Поле в таблице, определяющее тип данных, которые могут быть сохранены в строках. Столбцы имеют имена и типы данных, такие как INT, VARCHAR, DATE и т.д.

Простые запросы: SELECT, FROM, WHERE

Для начала работы с SQL необходимо освоить базовые команды, такие как SELECT, FROM и WHERE. Эти команды позволяют извлекать данные из таблиц и фильтровать их по определенным условиям.

Команда SELECT

Команда SELECT используется для выбора данных из таблицы. Она позволяет выбирать как все столбцы, так и конкретные столбцы. Например, чтобы выбрать все столбцы из таблицы employees, используйте следующий запрос:

SQL
Скопировать код
SELECT * FROM employees;

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

SQL
Скопировать код
SELECT first_name, last_name FROM employees;

Команда FROM

Команда FROM указывает таблицу, из которой будут извлекаться данные. Это обязательная часть запроса SELECT. Например:

SQL
Скопировать код
SELECT first_name, last_name FROM employees;

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

Команда WHERE

Команда WHERE используется для фильтрации данных по определенным условиям. Она позволяет выбирать только те строки, которые соответствуют заданным критериям. Например, чтобы выбрать всех сотрудников с фамилией "Smith":

SQL
Скопировать код
SELECT * FROM employees WHERE last_name = 'Smith';

Вы также можете использовать логические операторы, такие как AND, OR и NOT, чтобы создавать более сложные условия:

SQL
Скопировать код
SELECT * FROM employees WHERE last_name = 'Smith' AND salary > 50000;

Агрегационные функции и группировка данных: GROUP BY, HAVING

Агрегационные функции позволяют выполнять вычисления на множестве значений и возвращать одно значение. Основные агрегационные функции включают COUNT, SUM, AVG, MIN и MAX.

Функция COUNT

Функция COUNT возвращает количество строк, соответствующих заданному условию. Например, чтобы подсчитать количество сотрудников в таблице:

SQL
Скопировать код
SELECT COUNT(*) FROM employees;

Вы можете использовать COUNT с условием WHERE, чтобы подсчитать количество строк, соответствующих определенным критериям:

SQL
Скопировать код
SELECT COUNT(*) FROM employees WHERE department_id = 1;

Функция SUM

Функция SUM возвращает сумму значений в столбце. Например, чтобы вычислить общую зарплату всех сотрудников:

SQL
Скопировать код
SELECT SUM(salary) FROM employees;

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

Функция AVG

Функция AVG возвращает среднее значение в столбце. Например, чтобы вычислить среднюю зарплату всех сотрудников:

SQL
Скопировать код
SELECT AVG(salary) FROM employees;

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

Функция MIN и MAX

Функции MIN и MAX возвращают минимальное и максимальное значения в столбце соответственно. Например, чтобы найти минимальную и максимальную зарплаты:

SQL
Скопировать код
SELECT MIN(salary), MAX(salary) FROM employees;

Эти функции полезны для нахождения крайних значений в данных, таких как самая низкая и самая высокая цена продукта.

Группировка данных: GROUP BY

Команда GROUP BY используется для группировки строк, имеющих одинаковые значения в указанных столбцах. Например, чтобы сгруппировать сотрудников по отделам и подсчитать количество сотрудников в каждом отделе:

SQL
Скопировать код
SELECT department, COUNT(*) FROM employees GROUP BY department;

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

SQL
Скопировать код
SELECT department, job_title, COUNT(*) FROM employees GROUP BY department, job_title;

Условие HAVING

Команда HAVING используется для фильтрации групп, созданных с помощью GROUP BY. Например, чтобы выбрать отделы, в которых больше 10 сотрудников:

SQL
Скопировать код
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 10;

Команда HAVING аналогична команде WHERE, но применяется к группам, а не к отдельным строкам.

Соединение таблиц: JOIN

Соединение таблиц позволяет объединять данные из двух или более таблиц на основе связанных столбцов. Существует несколько типов соединений, включая внутреннее соединение (INNER JOIN), левое соединение (LEFT JOIN), правое соединение (RIGHT JOIN) и полное соединение (FULL JOIN).

Внутреннее соединение: INNER JOIN

Команда INNER JOIN возвращает строки, которые имеют совпадающие значения в обеих таблицах. Например, чтобы выбрать всех сотрудников и их отделы:

SQL
Скопировать код
SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

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

Левое соединение: LEFT JOIN

Команда LEFT JOIN возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений нет, результат содержит NULL. Например:

SQL
Скопировать код
SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

Левое соединение полезно, когда нужно сохранить все строки из левой таблицы, даже если нет совпадений в правой таблице.

Правое соединение: RIGHT JOIN

Команда RIGHT JOIN возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений нет, результат содержит NULL. Например:

SQL
Скопировать код
SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;

Правое соединение полезно, когда нужно сохранить все строки из правой таблицы, даже если нет совпадений в левой таблице.

Полное соединение: FULL JOIN

Команда FULL JOIN возвращает все строки, когда есть совпадения в одной из таблиц. Если совпадений нет, результат содержит NULL. Например:

SQL
Скопировать код
SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
FULL JOIN departments ON employees.department_id = departments.id;

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

Практические задачи и упражнения

Упражнение 1: Выборка данных

Напишите запрос, который выбирает все столбцы из таблицы products, где цена продукта больше 100.

SQL
Скопировать код
SELECT * FROM products WHERE price > 100;

Это упражнение поможет вам освоить базовые команды SELECT и WHERE.

Упражнение 2: Агрегационные функции

Напишите запрос, который подсчитывает количество заказов в таблице orders.

SQL
Скопировать код
SELECT COUNT(*) FROM orders;

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

Упражнение 3: Группировка данных

Напишите запрос, который группирует сотрудников по должностям и подсчитывает среднюю зарплату в каждой должности.

SQL
Скопировать код
SELECT job_title, AVG(salary) FROM employees GROUP BY job_title;

Это упражнение поможет вам освоить команды GROUP BY и AVG.

Упражнение 4: Соединение таблиц

Напишите запрос, который соединяет таблицы customers и orders и выбирает имена клиентов и номера их заказов.

SQL
Скопировать код
SELECT customers.first_name, customers.last_name, orders.order_id
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id;

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

Упражнение 5: Условие HAVING

Напишите запрос, который группирует заказы по статусу и выбирает статусы, где количество заказов больше 5.

SQL
Скопировать код
SELECT status, COUNT(*) FROM orders GROUP BY status HAVING COUNT(*) > 5;

Это упражнение поможет вам освоить команды GROUP BY и HAVING.

Эти упражнения помогут вам закрепить базовые знания SQL и научиться решать практические задачи. Удачи в обучении! 😉

Читайте также