SQL - IS NOT NULL: руковод Beginner's Guide
Привет, будущие маги SQL! Сегодня мы погрузимся в fascinierende аспект SQL, который я видел, как он сбивает с толку многих студентов на протяжении многих лет. Но не волнуйтесь - к концу этого руководства вы будете работать с NULL значениями, как профессионал!
Оператор SQL IS NOT NULL
Давайте начнем с основ. В SQL NULL - это особое значение (или, скорее, отсутствие значения), которое представляет собой отсутствующие или неизвестные данные. Это как когда вы заполняете форму и оставляете поле пустым - это Essentially то, что NULL представляет собой в базе данных.
Теперь, где это становится сложным: вы не можете использовать обычные операторы сравнения, такие как = или !=, с NULL. Вот где наш герой дня enters - оператор IS NOT NULL!
Основная Синтаксис
Основная синтаксис для IS NOT NULL следующая:
SELECT column_name(s)
FROM table_name
WHERE column_name IS NOT NULL;
Давайте разберем это с реальным примером. Представьте, что у нас есть таблица под названием students
с колонками для student_id
, name
, и email
.
SELECT name, email
FROM students
WHERE email IS NOT NULL;
Этот запрос вернет все имена и адреса электронной почты студентов, но только для студентов, у которых есть адрес электронной почты в базе данных. Это как decir, "Эй, база данных, дай мне всех студентов, которые действительно заполнили свое поле электронной почты!"
Почему не использовать '!=' или '<>'?
Вы можете задаваться вопросом: "Почему мы не можем просто использовать email != NULL
?" Отличный вопрос! В SQL NULL представляет собой неизвестное значение. Поскольку это неизвестно, мы не можем сравнить его ни с чем - даже не с самим собой! Это как пытаться сравнить яблоки с... ну, ничем.
Давайте рассмотрим пример:
-- Это не сработает, как预期
SELECT name, email
FROM students
WHERE email != NULL;
-- Это правильный способ
SELECT name, email
FROM students
WHERE email IS NOT NULL;
Первый запрос на самом деле вернет ноль результатов, regardless данных в вашей таблице. Второй запрос правильно вернет все строки, где адрес электронной почты имеет значение.
IS NOT NULL с функцией COUNT()
Теперь, когда мы понимаем основы, давайте посмотрим, как IS NOT NULL можно использовать с другими функциями SQL, такими как COUNT().
Подсчет не NULL значений
Функция COUNT() используется для подсчета количества строк, которые соответствуют определенному критерию. Когда она используется с IS NOT NULL, она может告诉我们, сколько строк имеют значение в определенной колонке.
SELECT COUNT(*) AS total_students,
COUNT(email) AS students_with_email
FROM students;
В этом запросе COUNT(*)
подсчитывает все строки, в то время как COUNT(email)
только подсчитывает строки, где адрес электронной почты не NULL. Это быстрый способ увидеть, насколько полны ваши данные!
Вычисление процентов
Мы можем пойти дальше и вычислить процент студентов, которые предоставили свой адрес электронной почты:
SELECT
COUNT(*) AS total_students,
COUNT(email) AS students_with_email,
(COUNT(email) * 100.0 / COUNT(*)) AS email_percentage
FROM students;
Этот запрос не только подсчитывает общее количество студентов и тех, у кого есть адреса электронной почты, но также вычисляет процент студентов, которые предоставили свои адреса электронной почты. Это как брать участие и определять, кто сделал домашнее задание!
IS NOT NULL с оператором DELETE
Иногда нам нужно почистить нашу базу данных, удалив строки с пропущенными данными. Вот где IS NOT NULL comes в handy с оператором DELETE.
Основной DELETE с IS NOT NULL
Вот как вы можете удалить все строки, где определенная колонка NULL:
DELETE FROM students
WHERE phone_number IS NULL;
Этот запрос удалит все записи студентов, где номер телефона не указан. Это как стирать все пустые строки в вашей адресной книге.
Combining Условия
Мы также можем combine IS NOT NULL с другими условиями:
DELETE FROM students
WHERE graduation_year IS NULL
AND enrollment_date < '2020-01-01';
Этот запрос удаляет записи студентов, у которых не указан год окончания, и которые записались до 2020 года. Это способ очистки старых неполных записей.
IS NOT NULL с оператором UPDATE
Наконец, давайте посмотрим, как IS NOT NULL можно использовать с операторами UPDATE для изменения существующих данных.
Обновление не NULL значений
Предположим, мы хотим обновить все адреса электронной почты, которые не NULL, чтобы они были в нижнем регистре:
UPDATE students
SET email = LOWER(email)
WHERE email IS NOT NULL;
Этот запрос изменяет все существующие адреса электронной почты на строчные, но только если они не NULL. Это как проходить через ваш список контактов и убедиться, что все адреса электронной почты форматированы единообразно.
Условные обновления
Мы также можем использовать IS NOT NULL в более сложных операторах UPDATE:
UPDATE students
SET status = 'Active'
WHERE enrollment_date IS NOT NULL
AND graduation_date IS NULL;
Этот запрос устанавливает статус 'Active' для всех студентов, у которых есть дата зачисления, но нет даты окончания. Это способ автоматически обновлять статусы студентов на основе имеющейся у нас информации.
Заключение
И вот оно,folks! Мы отправились в путешествие по земле IS NOT NULL, исследуя его использование в SELECT, COUNT, DELETE и UPDATE операторах. Помните, правильная обработка NULL значений имеет решающее значение в управлении базой данных. Это разница между получением точных результатов и... ну, NULL результатами!
Вот быстрый справочный стол с методами, которые мы рассмотрели:
Операция | Пример |
---|---|
SELECT | SELECT * FROM table WHERE column IS NOT NULL |
COUNT | SELECT COUNT(column) FROM table |
DELETE | DELETE FROM table WHERE column IS NULL |
UPDATE | UPDATE table SET column = value WHERE other_column IS NOT NULL |
Практикуйте эти запросы, экспериментируйте с ними, и скоро вы обнаружите, что обработка NULL значений стала второй натурой. Продолжайте программировать, продолжайте учиться, и помните - в мире баз данных, иногда nothing (NULL) может значить everything!
Credits: Image by storyset