SQL - IS NOT NULL: руковод Beginner's Guide

Привет, будущие маги SQL! Сегодня мы погрузимся в fascinierende аспект SQL, который я видел, как он сбивает с толку многих студентов на протяжении многих лет. Но не волнуйтесь - к концу этого руководства вы будете работать с NULL значениями, как профессионал!

SQL - IS NOT 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