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