Значения NULL в языке SQL: отсутствующие данные

Значения NULL в SQL
Антон Меринов

Антон Меринов

Автор статьи. Интересы, навыки: Профессиональное администрирование СУБД Oracle Database, веб-разработка, IT-World. Подробнее.

 
 
 

Поскольку база данных обычно представляет собой модель реального мира, от­дельные элементы данных в ней неминуемо будут отсутствовать, будут неизвест­ными или неприменимыми. Например, в столбце QUOTA таблицы SALESREPS со­держатся плановые объемы продаж для каждого служащего. Однако для одного из новых служащих план еще не был утвержден; соответствующая информация в ба­зе данных отсутствует. Конечно, в столбец QUOTA для нового служащего можно ввести значение 0, однако это исказит ситуацию. План служащего не равен нулю, а просто "пока неизвестен".

Аналогично столбец MANAGER в таблице SALESREPS для каждого служащего содержит идентификатор его менеджера. Однако Сэм Кларк (Sam Clark), вице­президент по торговым операциям, не подчиняется никому из отдела сбыта. К не­му этот столбец не относится. Можно ввести в столбец MANAGER для вице­президента число 0 или 9999, но ни одно из них не будет настоящим идентифика­тором начальника Сэма Кларка. Для этой строки не подходит ни одно число.

SQL поддерживает обработку отсутствующих, неизвестных или неприменимых данных с помощью концепции отсутствующего значения. Это значение является индикатором, который показывает, что в конкретной строке определенный эле­мент данных отсутствует или что столбец вообще не подходит для этой строки. Для удобства говорят, что значение такого элемента данных равно NULL. Однако null не является значением данных, как 0, 48300 или "Sam Clark". Напротив, это признак того, что точное значение данных неизвестно или отсутствует. На рис. 1 показано содержимое таблицы SALESREPS. Обратите внимание на то, что в столб­цах quota и rep_office для Тома Снайдера (Tom Snyder) и в столбце MANAGER для Сэма Кларка (Sam Clark) содержатся значения NULL. Обратите внимание, что разные SQL-инструменты по-разному выводят это значение: одни — как NULL, другие — как пустую или заполненную пробелами строку.

Рис. 1. Значения null в таблице salesreps

Во многих ситуациях значения NULL требуют от СУБД специальной обработки. Например, если пользователь просит вычислить сумму по столбцу QUOTA, что СУБД должна делать со значениями NULL при вычислении суммы? Ответ на этот вопрос дает набор правил обработки значений NULL в различных инструкциях и предложениях SQL. Из-за необходимости включения таких правил в синтаксис языка SQL многие теоретики реляционных баз данных считают, что значения NULL использовать не следует. Другие, включая доктора Кодда, отстаивают ис­пользование различных значений NULL для ситуаций, когда данные неизвестны или неприменимы.

Независимо от академических споров, значения null стали частью стандарта ANSI/ISO и реализованы почти во всех коммерческих СУБД. Они играют важную практическую роль в производстве SQL-баз данных. О специальных правилах об­работки значений NULL (и отличиях, существующих при обработке таких значе­ний в различных СУБД) рассказывается позже в моем блоге.

Как использовать Null в SQL запросах - Видеоурок 

Вас заинтересует / Intresting for you:

Команда NULL языка PL/SQL на п...
Команда NULL языка PL/SQL на п... 2940 просмотров Ирина Светлова Wed, 24 Jan 2018, 09:00:26
Управление приложениями PL/SQL...
Управление приложениями PL/SQL... 4651 просмотров Stas Belkov Thu, 16 Jul 2020, 06:20:48
Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 14838 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Тип данных RAW в PL/SQL
Тип данных RAW в PL/SQL 12331 просмотров Doctor Thu, 12 Jul 2018, 08:41:33
Войдите чтобы комментировать

ildergun аватар
ildergun ответил в теме #10792 1 год 4 мес. назад
Спасибо за статью!
apv аватар
apv ответил в теме #10050 2 года 9 мес. назад
Хорошо объяснили, как работать с NULL в SQL запросах. Мой плюс!