SQL - EXCEPT Оператор: Полное руководство для начинающих

Здравствуйте,野心勃勃 SQL энтузиасты! Сегодня мы отправимся в увлекательное путешествие в мир SQL, особенно focusing на оператор EXCEPT. Не волнуйтесь, если вы новички в программировании - я буду вашим дружелюбным гидом, объясняя все шаг за шагом. Так что, погружаемся!

SQL - EXCEPT Operator

SQL EXCEPT Оператор

Что такое оператор EXCEPT?

Оператор EXCEPT resembles магическую палочку в SQL, которая позволяет нам сравнивать два(result sets) и возвращать только уникальные строки из первого набора, которые не присутствуют во втором наборе. Это как находить разницу между двумя группами вещей.

Представьте, что у вас есть две корзины фруктов. Первая корзина содержит яблоки, апельсины и бананы. Вторая корзина содержит апельсины и груши. Если мы используем оператор EXCEPT, мы получим только яблоки и бананы - фрукты, которые есть в первой корзине, но не во второй.

Основной синтаксис

Вот как мы обычно пишем предложение EXCEPT:

SELECT column1, column2, ...
FROM table1
EXCEPT
SELECT column1, column2, ...
FROM table2;

Простой пример

Давайте представим, что у нас есть две таблицы: employees и managers. Мы хотим найти всех сотрудников, которые не являются менеджерами.

SELECT employee_id, name
FROM employees
EXCEPT
SELECT employee_id, name
FROM managers;

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

EXCEPT с оператором BETWEEN

Теперь давайте добавим немного остроты, combining EXCEPT с оператором BETWEEN. Оператор BETWEEN позволяет нам выбирать значения в заданном диапазоне.

Пример: Поиск сотрудников, не входящих в старший возрастной диапазон

Предположим, мы хотим найти сотрудников, которые не входят в старший возрастной диапазон (допустим, 50-65 лет).

SELECT employee_id, name, age
FROM employees
EXCEPT
SELECT employee_id, name, age
FROM employees
WHERE age BETWEEN 50 AND 65;

Этот запрос даст нам всех сотрудников, которые не находятся в возрасте от 50 до 65 лет. Это как находить молодых и super-seniors в нашей компании!

EXCEPT с оператором IN

Оператор IN позволяет нам указывать несколько значений в предложении WHERE. Когда мы combine его с EXCEPT, это может быть довольно мощно.

Пример: Сотрудники, не входящие в определенные отделы

Давайте найдем сотрудников, которые не работают в отделах IT, HR или Финансы.

SELECT employee_id, name, department
FROM employees
EXCEPT
SELECT employee_id, name, department
FROM employees
WHERE department IN ('IT', 'HR', 'Finance');

Этот запрос вернет всех сотрудников, которые работают в отделах, отличных от IT, HR и Финансов. Это как находить уникальные снежинки в нашей компании!

EXCEPT с оператором LIKE

Оператор LIKE используется в предложении WHERE для поиска указанного шаблона в столбце. Когда мы combine его с EXCEPT, мы можем сделать了一些 довольно классные вещи.

Пример: Сотрудники без 'Manager' в их должности

Давайте найдем всех сотрудников, whose job titles не включают слово 'Manager'.

SELECT employee_id, name, job_title
FROM employees
EXCEPT
SELECT employee_id, name, job_title
FROM employees
WHERE job_title LIKE '%Manager%';

Этот запрос даст нам всех сотрудников, whose job titles не содержат 'Manager'. Это как находить всех worker bees в нашем corporate hive!

Объединение всего вместе

Теперь, когда мы узнали о этих различных операторах, давайте combine их в более сложном примере.

Пример: Сложный запрос на сотрудников

Давайте найдем всех сотрудников, которые:

  1. Не являются менеджерами
  2. В возрасте от 25 до 40 лет
  3. Не работают в IT или HR
  4. Не имеют 'Specialist' в своей должности
SELECT employee_id, name, age, department, job_title
FROM employees
EXCEPT
SELECT employee_id, name, age, department, job_title
FROM employees
WHERE employee_id IN (SELECT employee_id FROM managers)
OR age NOT BETWEEN 25 AND 40
OR department IN ('IT', 'HR')
OR job_title LIKE '%Specialist%';

Этот запрос может показаться пугающим сначала, но если вы разберете его, это просто combine всех концепций, которые мы узнали!

Общие методы EXCEPT

Вот таблица, summarizing методы, которые мы обсуждали:

Метод Описание Пример
Основной EXCEPT Находит строки в первом наборе, не во втором SELECT * FROM A EXCEPT SELECT * FROM B
EXCEPT с BETWEEN Исключает строки в заданном диапазоне ... EXCEPT ... WHERE col BETWEEN x AND y
EXCEPT с IN Исключает строки, соответствующие specified значениям ... EXCEPT ... WHERE col IN (a, b, c)
EXCEPT с LIKE Исключает строки, соответствующие шаблону ... EXCEPT ... WHERE col LIKE '%pattern%'

Помните, практика делает perfect! Попробуйте написать свои запросы с использованием этих операторов. Не бойтесь ошибаться - это как мы учимся и растем.

Надеюсь, это руководство помогло demystify оператор EXCEPT и его друзей. SQL может показаться пугающим сначала, но с временем и практикой, вы будете писать сложные запросы, как профи. Продолжайте программировать, stay curious, и, самое главное, получайте удовольствие от SQL!

Credits: Image by storyset