NULL, ноль и undefined в SQL: чем различаются и как с ними работать
Есть три вида пустоты. Ну вот какая между ними разница?
Иллюстрация: Оля Ежак для Skillbox Media
Ноль, пустота и неопределённость — в жизни подобные слова можно считать синонимами, но в программировании за ними скрыт разный смысл. Это три разных значения: 0, NULL и undefined. Ноль — просто ноль, пустота — NULL, а неопределённость — undefined. В статье на примере языка SQL мы разберём разницу между нулём и NULL. А вот для понимания undefined нам понадобится JavaScript. Запутанно? Сейчас по порядку во всём разберёмся.
Содержание
Рекомендации для лучшего усвоения темы
Это подготовительный раздел, который разбит на две части. В первой части собрана теория по базам данным и языку SQL, а во второй есть ссылка на платформу для практики. Если вы новичок, рекомендуем сначала изучить предложенные материалы, а затем искать различия между нулём, NULL и undefined. Иначе примеры кода в этой статье вам могут быть непонятны.
Познакомьтесь с основами SQL
SQL, или Structured Query Language, — это язык для работы с реляционными базами данных. Эти базы представлены в виде связанных таблиц, в которых информация разложена по колонкам и строкам. В них можно хранить отчёты, банковские транзакции, контакты клиентов, накладные и прочие сведения.
Если вы не слышали о базах данных и SQL — вот ознакомительные статьи:
Для закрепления прочитанного посмотрите вебинар по основам языка SQL. Спикер — Мкртич Пудеян, специалист по анализу данных в Газпромбанке.
Зарегистрируйтесь на платформе Oracle Live SQL
Oracle Live SQL — это бесплатная онлайн-платформа, на которой вы можете учиться писать запросы и работать с базами данных. Достаточно перейти на сайт oracle.com, зарегистрироваться и верифицировать электронную почту.
После регистрации вы попадёте в рабочее пространство и сможете сразу проверить подключение. Для этого введите любую SQL-команду и убедитесь, что после неё отображается выбранная таблица. Пример одной из команд:
Что такое ноль в SQL
Представьте миску с абрикосами. Если вы их съедите, то миска опустеет и в ней будет ноль абрикосов. Ноль здесь будет числовым эквивалентом отсутствия чего-либо и нужен для арифметических или логических операций.
В арифметических операциях ноль можно вычитать и складывать с другими числами — значение этих чисел при этом не изменится. Ещё можно умножить или разделить любое число на ноль, но в результате это даст ноль:
В логических операциях ноль обозначает ложное значение — false. При этом любое другое число будет отвечать за правдивые значения — true.
Создадим таблицу с данными о сотрудниках компании:
Добавим в таблицу информацию о действующих и уволенных сотрудниках:
Теперь с помощью нуля и единицы выполним несколько SQL-запросов к нашей таблице. Для начала выберем всех действующих сотрудников:
Посмотрим список уволенных сотрудников:
Закроем нашу компанию и обновим в базе данных статусы сотрудников:
Если теперь проверить результат, то в компании никто не работает:
Что такое undefined и почему его нет в SQL
В языке JavaScript undefined относится к специальному типу данных, который указывает, что значение неопределённо. Undefined не нужно специально задавать, поскольку его интерпретатор всегда указывает автоматически.
Значение undefined проще понять на примере. Перейдите в настройки браузера, откройте вкладку Дополнительные инструменты и найдите раздел Инструменты разработчика. Вам нужно открыть вкладку Консоль.
Читайте также:
Объявим в консоли переменную, запишем в неё имя и выведем результат:
Ожидаемо мы получаем сохранённое в переменной значение:
Объявим ещё одну переменную, но добавлять в неё никакого значения пока не будем. Если вывести такую переменную в консоль, то результат будет не определён — undefined. Интерпретатор указал это значение автоматически:
Если мы заполним нашу пустую переменную значением и выведем результат в консоль, то undefined больше не будет отображаться:
Читайте также:
В SQL вместо undefined используют NULL — так обозначают отсутствующие и неопределённые значения. Это предусматривает SQL-92 и другие стандарты, которые обеспечивают совместимость различных систем управления базами данных (СУБД). Отказ от undefined делает работу с базами данных более последовательной и позволяет избежать многих ошибок.
Что такое NULL и как с ним работать
NULL в SQL используется для обозначения отсутствующих данных. Создадим таблицу с именами, телефонами и факсами сотрудников. Столбцы с именем и телефоном будут у каждого, а вот факс указывать не обязательно:
Если мы посмотрим таблицу, то в колонке Fax у двух сотрудников будут стоять прочерки. Эти прочерки означают NULL — значение отсутствует. Если вместо Oracle Live SQL вы будете работать с другой платформой, то можете увидеть разные отображения значения NULL: в одних программах тоже будут прочерки, другие добавят надпись NULL, а третьи оставят пустые ячейки.
Поработаем с таблицей и для начала выведем всех сотрудников с факсом:
Теперь отдельно посмотрим список сотрудников без факса:
Допустим, нас не устраивает, что не у всех есть факс. Купим за свой счёт недостающую технику и для удобства присвоим каждому сотруднику уникальный номер факса на основе его идентификатора из таблицы:
Если сейчас посмотреть обновления, то NULL больше не встречается:
Что изучить дальше
Вы познакомились со значением NULL и знаете, чем оно отличается от нуля. Однако в статье мы рассматривали простые примеры и не вникали в детали SQL-синтаксиса. Если вам нужно с этим разобраться — рекомендуем пройти два бесплатных интерактивных руководства на платформе Oracle Live SQL.
Querying Null-valued Rows: Databases for Developers. Это руководство для изучения NULL. Вы на примерах ещё раз познакомитесь с этим значением, научитесь его правильно определять, сравнивать и использовать в функциях.
Columns and Data Types: Databases for Developers. В этом руководстве вы познакомитесь со структурой таблицы и популярными типами данных: числами, строками, булевыми и двоичными значениями, датой и временем.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!