RIGHT JOIN
RIGHT JOIN имеет противоположный смысл от LEFT JOIN, то есть выводит все результаты из правой таблицы , даже если в левой таблице нет совпадающих значений.
Как пример: если вам нужно вывести посты и категории (допустим, что у каждого поста есть категория, а категории хранятся в отдельной таблице), то использовав RIGHT JOIN мы сможем вывести все категории без исключения, даже если нет поста с такой категорией.
Made in SQL
RIGHT JOIN имеет противоположный смысл от LEFT JOIN, то есть выводит все результаты из правой таблицы , даже если в левой таблице нет совпадающих значений.
Как пример: если вам нужно вывести посты и категории (допустим, что у каждого поста есть категория, а категории хранятся в отдельной таблице), то использовав RIGHT JOIN мы сможем вывести все категории без исключения, даже если нет поста с такой категорией.
Made in SQL
👍2
FULL JOIN
FULL JOIN выполняет функции LEFT и RIGHT JOINов, то есть возвращает все строки из обеих таблиц, даже если нет совпадений между ними.
Если в таблице есть категория, к которой не относится ни один пост, и есть пост без категории, то FULL JOIN все равно их выведет (просто там, где не будет совпадений, будет значение NULL).
Made in SQL
FULL JOIN выполняет функции LEFT и RIGHT JOINов, то есть возвращает все строки из обеих таблиц, даже если нет совпадений между ними.
Если в таблице есть категория, к которой не относится ни один пост, и есть пост без категории, то FULL JOIN все равно их выведет (просто там, где не будет совпадений, будет значение NULL).
Made in SQL
CROSS JOIN
CROSS JOIN возвращает декартово произведение двух таблиц, что означает, что каждая строка из первой таблицы будет сочетаться с каждой строкой из второй таблицы. Это может привести к очень большому количеству результатов, особенно если обе таблицы содержат много строк.
Подобные запросы полезны, если вам нужно вывести все возможные комбинации строк из двух таблиц. Это может быть полезно в различных сценариях, таких как генерация всех возможных сочетаний данных для анализа
Made in SQL
CROSS JOIN возвращает декартово произведение двух таблиц, что означает, что каждая строка из первой таблицы будет сочетаться с каждой строкой из второй таблицы. Это может привести к очень большому количеству результатов, особенно если обе таблицы содержат много строк.
Если 1ая таблица содержит n строк, а 2ая m, то результат выполнения запроса с CROSS будет содержать в себе n*m строк.
В отличии от других CROSS JOIN не нуждается в указании условии связки.
Подобные запросы полезны, если вам нужно вывести все возможные комбинации строк из двух таблиц. Это может быть полезно в различных сценариях, таких как генерация всех возможных сочетаний данных для анализа
Made in SQL
👍3
SELF JOIN
SELF JOIN используется, когда вам нужно сравнить строки в одной и той же таблице. Это особенно полезно для работы с иерархическими данными (то есть запись выше может быть частью следующего), такими как сотрудники и их менеджеры. В данном примере SELF JOIN позволяет нам получить пары сотрудников и их менеджеров.
Made in SQL
SELF JOIN используется, когда вам нужно сравнить строки в одной и той же таблице. Это особенно полезно для работы с иерархическими данными (то есть запись выше может быть частью следующего), такими как сотрудники и их менеджеры. В данном примере SELF JOIN позволяет нам получить пары сотрудников и их менеджеров.
Made in SQL
👍1
Какой тип JOIN возвращает все строки из обеих таблиц, и если нет совпадений, результат будет содержать NULL для столбцов из таблицы, в которой нет совпадений?
Anonymous Quiz
60%
a) INNER JOIN
0%
b) LEFT JOIN
0%
c) RIGHT JOIN
40%
d) FULL JOIN
👍2
Подзапросы
Подзапросы в SQL — это запросы, вложенные внутри другого запроса. Они позволяют выполнять сложные операции и анализировать данные на более глубоком уровне. Подзапросы могут быть использованы в различных частях основного запроса, таких как SELECT, FROM, WHERE, HAVING, и других.
Как пример, нам нужно вывести заказы и информацию по ним, где имя заказчика начинается на букву А. Обратите внимание, что во внутреннем запросе мы можем обращаться к другой таблице, что показывает еще одно преимущество подзапросов
Made in SQL
Подзапросы в SQL — это запросы, вложенные внутри другого запроса. Они позволяют выполнять сложные операции и анализировать данные на более глубоком уровне. Подзапросы могут быть использованы в различных частях основного запроса, таких как SELECT, FROM, WHERE, HAVING, и других.
Как пример, нам нужно вывести заказы и информацию по ним, где имя заказчика начинается на букву А. Обратите внимание, что во внутреннем запросе мы можем обращаться к другой таблице, что показывает еще одно преимущество подзапросов
Существует 3 вида подзапросов:
1)Скалярные подзапросы
- Возвращают одно значение.
2)Табличные подзапросы:
- Возвращают набор строк.
3)Коррелированные подзапросы:
- Зависят от значений внешнего запроса.
Made in SQL
👍2
Скалярные подзапросы (SELECT)
Такой вид подзапросов возвращает одно значение и может быть использован в SELECT, WHERE, HAVING.
Самый простой пример использования скалярных подзапросов на изображении, на котором вычисление среднего значения происходит в подзапросе,
Данный пример демонстрирует, как можно использовать подзапросы в SELECT.
Такой вид подзапросов возвращает одно значение и может быть использован в SELECT, WHERE, HAVING.
Самый простой пример использования скалярных подзапросов на изображении, на котором вычисление среднего значения происходит в подзапросе,
Данный пример демонстрирует, как можно использовать подзапросы в SELECT.
👍1
Скалярные подзапросы (WHERE)
Подзапросы особенно полезны в условии WHERE, когда нам нужно сравнить значения в таблице с результатами другого запроса.
Пример: предположим, у нас есть таблица products (товары), и мы хотим выбрать все товары, цена которых выше средней цены всех товаров.
В запросе на изображении скалярный подзапрос (
Подзапросы особенно полезны в условии WHERE, когда нам нужно сравнить значения в таблице с результатами другого запроса.
Пример: предположим, у нас есть таблица products (товары), и мы хотим выбрать все товары, цена которых выше средней цены всех товаров.
В запросе на изображении скалярный подзапрос (
SELECT AVG(price) FROM products) вычисляет среднюю цену всех товаров, а основной запрос выбирает только те товары, цена которых превышает эту среднюю. Это позволяет нам быстро находить более дорогие товары по сравнению с остальными.👍2
Подзапросы (HAVING)
Подзапросы могут быть также использованы в условии HAVING, что позволяет фильтровать группы данных на основе агрегированных значений.
Пример: Предположим, у нас есть таблица orders, в которой хранится информация о заказах (номер заказа, id пользователя и сумма заказа)
Теперь мы хотим найти клиентов, чьи общие заказы превышают среднюю сумму заказов всех клиентов
Это реализуется запросом на изображении.
Объяснение:
1) Внутренний подзапрос вычисляет общую сумму заказов для каждого клиента и возвращает результат в виде таблицы с двумя столбцами: customer_id и total_amount.
2) Средний подзапрос вычисляет среднюю сумму заказов для всех клиентов, используя результаты внутреннего подзапроса.
3) Основной запрос фильтрует результаты, оставляя только те клиенты, у которых общая сумма заказов больше средней суммы заказов для всех клиентов.
Подзапросы могут быть также использованы в условии HAVING, что позволяет фильтровать группы данных на основе агрегированных значений.
Пример: Предположим, у нас есть таблица orders, в которой хранится информация о заказах (номер заказа, id пользователя и сумма заказа)
Теперь мы хотим найти клиентов, чьи общие заказы превышают среднюю сумму заказов всех клиентов
Это реализуется запросом на изображении.
Объяснение:
1) Внутренний подзапрос вычисляет общую сумму заказов для каждого клиента и возвращает результат в виде таблицы с двумя столбцами: customer_id и total_amount.
2) Средний подзапрос вычисляет среднюю сумму заказов для всех клиентов, используя результаты внутреннего подзапроса.
3) Основной запрос фильтрует результаты, оставляя только те клиенты, у которых общая сумма заказов больше средней суммы заказов для всех клиентов.
Коррелированные подзапросы
В отличие от обычных подзапросов, которые могут быть выполнены независимо, коррелированные подзапросы ссылаются на столбцы внешнего запроса и выполняются для каждой строки результата.
Пример: предположим, у нас есть таблица
Объяснение: Внешний запрос: SELECT name FROM employees e
- Мы выбираем имена сотрудников из таблицы employees, обозначенной как e.
Коррелированный подзапрос: (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id)
- Внутренний запрос вычисляет среднюю зарплату для каждого отдела. Здесь department_id = e.department_id связывает внутренний запрос с текущей строкой внешнего запроса.
Условие: WHERE salary >
- Мы фильтруем сотрудников, оставляя только тех, чья зарплата выше средней зарплаты их отдела.
Made in SQL
В отличие от обычных подзапросов, которые могут быть выполнены независимо, коррелированные подзапросы ссылаются на столбцы внешнего запроса и выполняются для каждой строки результата.
Пример: предположим, у нас есть таблица
employees, содержащая информацию о сотрудниках, включая их зарплату и идентификатор отдела (department_id). Мы хотим найти имена сотрудников, чья зарплата выше средней зарплаты их отдела.Объяснение: Внешний запрос: SELECT name FROM employees e
- Мы выбираем имена сотрудников из таблицы employees, обозначенной как e.
Коррелированный подзапрос: (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id)
- Внутренний запрос вычисляет среднюю зарплату для каждого отдела. Здесь department_id = e.department_id связывает внутренний запрос с текущей строкой внешнего запроса.
Условие: WHERE salary >
- Мы фильтруем сотрудников, оставляя только тех, чья зарплата выше средней зарплаты их отдела.
Made in SQL
👍2
DISTINCT
DISTINCT — это оператор SQL, который возвращает только уникальные строки из таблицы. Он игнорирует дубликаты и показывает только уникальные значения.
Пример: допустим, у нас есть таблица products с колонками id, name, и category. Мы хотим получить список всех уникальных категорий.
Подобный результат можно достичь сделав запрос как на изображении
Made in SQL
DISTINCT — это оператор SQL, который возвращает только уникальные строки из таблицы. Он игнорирует дубликаты и показывает только уникальные значения.
Пример: допустим, у нас есть таблица products с колонками id, name, и category. Мы хотим получить список всех уникальных категорий.
Подобный результат можно достичь сделав запрос как на изображении
Made in SQL
🔥1
DISTINCT с несколькими колонками
Когда вы используете SELECT DISTINCT с несколькими колонками, SQL возвращает уникальные комбинации значений этих колонок. Это полезно, когда вам нужно получить уникальные пары или наборы значений.
Пример: берем ту же таблицу products с колонками id, name и category. Укажем для запроса два столбца name и category. В итоге мы получим список комбинации (
Made in SQL
Когда вы используете SELECT DISTINCT с несколькими колонками, SQL возвращает уникальные комбинации значений этих колонок. Это полезно, когда вам нужно получить уникальные пары или наборы значений.
Пример: берем ту же таблицу products с колонками id, name и category. Укажем для запроса два столбца name и category. В итоге мы получим список комбинации (
name: яблоко и category: фрукт и т. д.).Made in SQL
🔥1
Рассмотрим все на примере запроса, который демонстрирует применение DISTINCT
У нас есть три таблицы: tasks, users, task_users. Последняя таблица - промежуточная, то есть хранит всех исполнителей для задач.
Нужно вывести те задачи, где присутствует исполнитель с id = 7.
В данном примере подзапрос использует DISTINCT для получения уникальных идентификаторов задач, в которых участвует указанный исполнитель.
Made in SQL
У нас есть три таблицы: tasks, users, task_users. Последняя таблица - промежуточная, то есть хранит всех исполнителей для задач.
Нужно вывести те задачи, где присутствует исполнитель с id = 7.
В данном примере подзапрос использует DISTINCT для получения уникальных идентификаторов задач, в которых участвует указанный исполнитель.
Made in SQL
🔥1
GROUP_CONCAT
Как вы обратили внимание, в прошлом запросе присутствует неизвестная команда GROUP_CONCAT. Она позволяет объединять данные из группы строк в одну. По умолчанию, если ничего не указывать, в качестве разделителя будет запятая.
Однако можно указать параметр SEPARATOR ' | '. По названию понятно, что этот параметр меняет символ между строками и в кавычках вы можете указать свое значение. В нашем случае информация будет выглядеть в следующем виде:
Made in SQL
Как вы обратили внимание, в прошлом запросе присутствует неизвестная команда GROUP_CONCAT. Она позволяет объединять данные из группы строк в одну. По умолчанию, если ничего не указывать, в качестве разделителя будет запятая.
Однако можно указать параметр SEPARATOR ' | '. По названию понятно, что этот параметр меняет символ между строками и в кавычках вы можете указать свое значение. В нашем случае информация будет выглядеть в следующем виде:
Информация1 | Информация2 | Информация3 ...Made in SQL
🔥2
ANY
Этот оператор используется для сравнения значения с любым значением, возвращаемым подзапросом. Он возвращает
Пример:
Здесь мы выбираем имена сотрудников, чья зарплата выше хотя бы одной зарплаты сотрудников из департамента с ID 3.
Made in SQL
Этот оператор используется для сравнения значения с любым значением, возвращаемым подзапросом. Он возвращает
True, если условие выполняется для хотя бы одного из значений.Пример:
Здесь мы выбираем имена сотрудников, чья зарплата выше хотя бы одной зарплаты сотрудников из департамента с ID 3.
Made in SQL
👍2
ALL
Этот оператор используется для сравнения значения со всеми значениями, возвращаемыми подзапросом. Он возвращает
Пример:
В этом случае мы выбираем имена сотрудников, чья зарплата выше зарплат всех сотрудников из департамента с ID 3.
Made in SQL
Этот оператор используется для сравнения значения со всеми значениями, возвращаемыми подзапросом. Он возвращает
True, только если условие выполняется для всех значений.Пример:
В этом случае мы выбираем имена сотрудников, чья зарплата выше зарплат всех сотрудников из департамента с ID 3.
Made in SQL
👍2
Что выполнит запрос на изображении
Anonymous Quiz
0%
А) Имена всех студентов
50%
B) Имена студентов, которые учатся на курсе с id = 1
50%
C) Имена студентов, которые не учатся на курсе с id = 1
0%
D) Имена студентов, которые учатся на всех курсах