SQL - IS NULL: Искусство работы с пустыми значениями

Здравствуйте, начинающие энтузиасты баз данных! Добро пожаловать в наш увлекательный мир SQL, где мы исследуем загадочное царство пустых значений (NULL). Я ваш гид, профессор Квери, и сегодня мы разгадаем тайны оператора IS NULL. Так что берите свои виртуальные блокноты, и lets go!

SQL - IS NULL

Оператор SQL IS NULL: ваш детектор пустых значений

Представьте, что вы на вечеринке и пытаетесь выяснить, кто не принес подарок. В мире баз данных IS NULL как ваш суперсиловой детектор подарков, помогающий вам заметить тех, кто пришел без hands (или в нашем случае, с пустыми полями в базе данных).

Оператор IS NULL используется для проверки пустых значений (NULL) в базе данных. Но подождите, что такое NULL?

NULL не ноль. Это не пустая строка. Это отсутствие какого-либо значения. Представьте это как эквивалент耸новения плечами в базе данных ?‍♂️.

Вот быстрый шпаргалка по нашим операторам, связанным с NULL:

Оператор Описание
IS NULL Проверяет, является ли значение NULL
IS NOT NULL Проверяет, не является ли значение NULL

Теперь давайте посмотрим, как мы можем использовать этого супергероя в различных сценариях SQL!

IS NULL с оператором SELECT: поиски невидимых

Основное использование

Давайте начнем с простого примера. Допустим, у нас есть таблица students с колонками student_id, name, и email. Некоторые студенты еще не указали свои адреса электронной почты.

SELECT * FROM students
WHERE email IS NULL;

Этот запрос вернет все строки, где поле email является NULL. Это как будто вы говорите: "Покажи мне всех студентов, которые забыли записать свои адреса электронной почты!"

Combining with Other Conditions

Мы также можем combine IS NULL с другими условиями. Например:

SELECT name, student_id
FROM students
WHERE email IS NULL AND student_id > 1000;

Этот запрос говорит: "Дай мне имена и ID студентов без адреса электронной почты и с ID больше 1000." Это как быть детективом, сужающим圈子 поиска!

IS NULL с функцией COUNT(): подсчет voids

Функция COUNT() может быть отличным partner для IS NULL. Давайте посмотрим, как они работают вместе:

SELECT COUNT(*) AS total_students,
COUNT(email) AS students_with_email,
COUNT(*) - COUNT(email) AS students_without_email
FROM students;

Этот запрос gives нам три piece of информации:

  1. Общее количество студентов
  2. Количество студентов с адресом электронной почты
  3. Количество студентов без адреса электронной почты

Remember, COUNT(*) считает все строки, в то время как COUNT(email) считает только non-NULL значения email. Это как будто вы считаете всех гостей на вечеринке, а затем считаете тех, кто brought подарки, и вычитаете, чтобы понять, кто пришел без hands!

IS NULL с оператором UPDATE: заполнение пробелов

Иногда мы хотим update NULL значения на что-то более значимое. Вот как мы можем это сделать:

UPDATE students
SET email = '[email protected]'
WHERE email IS NULL;

Этот запрос заменяет все NULL значения email на '[email protected]'. Это как будто вы даете default подарок всем тем, кто пришел без hands!

Более сложный пример

Давайте представим, что мы хотим update NULL адреса электронной почты combinцией имени студента и default домена:

UPDATE students
SET email = LOWER(REPLACE(name, ' ', '_')) || '@student.example.com'
WHERE email IS NULL;

Этот запрос делает следующее для студентов с NULL адресами электронной почты:

  1. Берет их имя
  2. Заменяет пробелы на подчеркивания
  3. Преобразует его в нижний регистр
  4. Добавляет '@student.example.com' в конце

Таким образом, "John Doe" становится "[email protected]". Это как будто вы создаете персонализированные бирки для тех, кто forgot свои!

IS NULL с оператором DELETE: удаление пустых

Иногда мы можем хотеть удалить строки с NULL значениями. Вот как мы можем это сделать:

DELETE FROM students
WHERE email IS NULL;

Этот запрос удаляет все строки, где email является NULL. Будьте осторожны с этим! Это как будто вы выгоняете всех гостей на вечеринке, кто не brought подарки – это немного жестоко, не находите ли?

Более безопасный подход

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

INSERT INTO incomplete_records
SELECT * FROM students
WHERE email IS NULL;

DELETE FROM students
WHERE email IS NULL;

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

Заключение: принятие NULL

И вот вы, дорогие студенты! Мы исследовали оператор IS NULL и его различные использования в SQL. Помните, что NULL значения не ваши враги – они просто непонятые piece of информации, ждущие correct обработки.

Продолжайте практиковаться, stay curious, и помните: в мире баз данных, иногда nothing (NULL) может означать everything!

Credits: Image by storyset