MySQL - Оператор IS NOT NULL

Здравствуйте,dartующиеся базы данных! Сегодня мы окунемся в чудесный мир MySQL и рассмотрим полезный маленький оператор под названием IS NOT NULL. Не волнуйтесь, если вы новички в программировании; я проведу вас через это путешествие шаг за шагом, как я делал это для countless студентов на протяжении многих лет преподавания. Так что возьмите кружку вашего любимого напитка и давайте начнем!

MySQL - IS NOT NULL Operator

Оператор IS NOT NULL в MySQL

Представьте, что вы организовываете день рождения и составляете список гостей. Некоторые гости подтвердили, что придут, некоторые сказали, что не смогут, а другие еще не ответили. В мире баз данных мы можем представить эту ситуацию тремя значениями: 'Да', 'Нет' и NULL (для тех, кто еще не ответил). Оператор IS NOT NULL помогает нам найти всех гостей, которые дали нам ответ, будь то 'Да' или 'Нет'.

В MySQL NULL представляет собой пропущенное или неизвестное значение. Это не то же самое, что пустая строка или ноль; это отсутствие любого значения. Оператор IS NOT NULL позволяет нам найти строки, где определенный столбец имеет значение (любое значение), а не NULL.

Давайте рассмотрим простой пример:

SELECT * FROM guests WHERE response IS NOT NULL;

Этот запрос вернет всех гостей, которые дали ответ, независимо от того, придут они на вечеринку или нет.

Теперь создадим таблицу и посмотрим, как это работает:

CREATE TABLE guests (
id INT PRIMARY KEY,
name VARCHAR(50),
response VARCHAR(3)
);

INSERT INTO guests VALUES
(1, 'Алиса', 'Да'),
(2, 'Боб', 'Нет'),
(3, 'Чарли', NULL),
(4, 'Дэвид', 'Да'),
(5, 'Эва', NULL);

SELECT * FROM guests WHERE response IS NOT NULL;

Этот запрос вернет:

id name response
1 Алиса Да
2 Боб Нет
4 Дэвид Да

Как видите, Чарли и Эва, которые не ответили (NULL), не включены в результат.

IS NOT NULL с функцией COUNT()

Теперь давайте представим, что вы хотите узнать, сколько гостей на самом деле ответили. Мы можем использовать функцию COUNT() вместе с IS NOT NULL, чтобы получить эту информацию:

SELECT COUNT(*) AS responded_guests
FROM guests
WHERE response IS NOT NULL;

Этот запрос вернет:

responded_guests
3

Это告诉我们, что 3 гостя ответили на наше приглашение. Неплохо, правда?

IS NOT NULL с оператором UPDATE

Иногда мы можем захотеть обновить нашу базу данных в зависимости от того, является ли значение NULL или нет. Например, давайте представим, что мы хотим изменить все NULL ответы на 'Может быть':

UPDATE guests
SET response = 'Может быть'
WHERE response IS NULL;

SELECT * FROM guests;

После этого обновления наша таблица guests будет выглядеть так:

id name response
1 Алиса Да
2 Боб Нет
3 Чарли Может быть
4 Дэвид Да
5 Эва Может быть

IS NOT NULL с оператором DELETE

В некоторых случаях мы можем захотеть удалить строки с NULL значениями. Например, если мы решим сохранить только гостей, которые дали определенный ответ:

DELETE FROM guests
WHERE response IS NULL;

SELECT * FROM guests;

Если бы мы запустили это перед нашим предыдущим обновлением, это удалило бы Чарли и Эву из нашего списка гостей:

id name response
1 Алиса Да
2 Боб Нет
4 Дэвид Да

Оператор IS NOT NULL с использованием клиентской программы

Теперь давайте поговорим о том, как вы можете использовать оператор IS NOT NULL в реальном сценарии с использованием клиентской программы. Представьте, что вы пишете Python-скрипт для управления вашим списком гостей:

import mysql.connector

# Подключиться к базе данных
db = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="party_planner"
)

cursor = db.cursor()

# Получить всех гостей, которые ответили
cursor.execute("SELECT * FROM guests WHERE response IS NOT NULL")
responded_guests = cursor.fetchall()

print("Гости, которые ответили:")
for guest in responded_guests:
print(f"- {guest[1]}: {guest[2]}")

# Подсчитать количество гостей, которые не ответили
cursor.execute("SELECT COUNT(*) FROM guests WHERE response IS NULL")
no_response_count = cursor.fetchone()[0]

print(f"\nКоличество гостей, которые не ответили: {no_response_count}")

# Закрыть подключение
db.close()

Этот скрипт подключается к вашей базе данных, получает всех гостей, которые ответили, выводит их имена и ответы, а затем подсчитывает количество гостей, которые еще не ответили.

И вот мы рассмотрели оператор IS NOT NULL с различных сторон. Помните, в мире баз данных, знание того, чего вы не знаете (NULL значения), может быть так же важно, как и знание того, что вы знаете. Оператор IS NOT NULL - ваш верный спутник в navigation этом ландшафте.

Заканчивая, я вспоминаю студента, который однажды сказал мне, что понимание NULL значений было как suddenly seeing the 'невидимые чернила' в базах данных. Надеюсь, это руководство помогло вам развить свою own 'NULL vision'! Продолжайте практиковаться, оставайтесь любопытными и счастливого кодирования!

Credits: Image by storyset