SQL - IS NULL: Искусство работы с пустыми значениями
Здравствуйте, начинающие энтузиасты баз данных! Добро пожаловать в наш увлекательный мир SQL, где мы исследуем загадочное царство пустых значений (NULL). Я ваш гид, профессор Квери, и сегодня мы разгадаем тайны оператора IS NULL. Так что берите свои виртуальные блокноты, и lets go!
Оператор 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 информации:
- Общее количество студентов
- Количество студентов с адресом электронной почты
- Количество студентов без адреса электронной почты
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 адресами электронной почты:
- Берет их имя
- Заменяет пробелы на подчеркивания
- Преобразует его в нижний регистр
- Добавляет '@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