SQL - EXCEPT Оператор: Полное руководство для начинающих
Здравствуйте,野心勃勃 SQL энтузиасты! Сегодня мы отправимся в увлекательное путешествие в мир SQL, особенно focusing на оператор EXCEPT. Не волнуйтесь, если вы новички в программировании - я буду вашим дружелюбным гидом, объясняя все шаг за шагом. Так что, погружаемся!
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 их в более сложном примере.
Пример: Сложный запрос на сотрудников
Давайте найдем всех сотрудников, которые:
- Не являются менеджерами
- В возрасте от 25 до 40 лет
- Не работают в IT или HR
- Не имеют '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