HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Некоторые поля в таблице должны быть заполнены обязательно, а некоторые могут быть незаполненными.</p>
1 <p>Некоторые поля в таблице должны быть заполнены обязательно, а некоторые могут быть незаполненными.</p>
2 <p>Например, когда пользователь регистрируется на сайте, обязательным будет его электронная почта и имя, а вот дату рождения он может не вводить.</p>
2 <p>Например, когда пользователь регистрируется на сайте, обязательным будет его электронная почта и имя, а вот дату рождения он может не вводить.</p>
3 <p>Как хранить в таблице информацию о незаполненных данных? Для этих целей существует специальное значение NULL, которые мы изучим в этом уроке.</p>
3 <p>Как хранить в таблице информацию о незаполненных данных? Для этих целей существует специальное значение NULL, которые мы изучим в этом уроке.</p>
4 <h2>Как работать с NULL</h2>
4 <h2>Как работать с NULL</h2>
5 <p>Давайте выведем все строки, в которых заполнено поле birthday, чтобы не забыть поздравить этих пользователей с днем рождения.</p>
5 <p>Давайте выведем все строки, в которых заполнено поле birthday, чтобы не забыть поздравить этих пользователей с днем рождения.</p>
6 <p>Мы уже знаем, как проверять неравенство в условиях WHERE:</p>
6 <p>Мы уже знаем, как проверять неравенство в условиях WHERE:</p>
7 <p><a>View on DB Fiddle</a></p>
7 <p><a>View on DB Fiddle</a></p>
8 <p>Но такой запрос всегда будет возвращать пустую таблицу. Для сравнения и проверки на NULL необходимо использовать операторы IS и IS NOT, а не стандартные операторы сравнения.</p>
8 <p>Но такой запрос всегда будет возвращать пустую таблицу. Для сравнения и проверки на NULL необходимо использовать операторы IS и IS NOT, а не стандартные операторы сравнения.</p>
9 <p>Дело в том, что проверка значения NULL с помощью =, &gt;, &lt; и других операторов сравнения всегда будет давать результат NULL.</p>
9 <p>Дело в том, что проверка значения NULL с помощью =, &gt;, &lt; и других операторов сравнения всегда будет давать результат NULL.</p>
10 <p>Правильный запрос будет выглядеть так:</p>
10 <p>Правильный запрос будет выглядеть так:</p>
11 <p><a>View on DB Fiddle</a></p>
11 <p><a>View on DB Fiddle</a></p>
12 <p>Как мы уже сказали, какие-то поля должны быть заполнены обязательно. Это требование устанавливается архитекторами баз данных исходя из бизнес-логики. Например, пользователь при регистрации не может не указать свою электронную почту, потому что на нее приходит письмо с подтверждением.</p>
12 <p>Как мы уже сказали, какие-то поля должны быть заполнены обязательно. Это требование устанавливается архитекторами баз данных исходя из бизнес-логики. Например, пользователь при регистрации не может не указать свою электронную почту, потому что на нее приходит письмо с подтверждением.</p>
13 <p>Кроме того, некоторые поля должны заполняться автоматически в системе, как например created_at - дата регистрации. Бывает полезно проверить, во всех ли строках обязательные поля заполнены.</p>
13 <p>Кроме того, некоторые поля должны заполняться автоматически в системе, как например created_at - дата регистрации. Бывает полезно проверить, во всех ли строках обязательные поля заполнены.</p>
14 <p>Выведем строки с незаполненным полем created_at:</p>
14 <p>Выведем строки с незаполненным полем created_at:</p>
15 <p><a>View on DB Fiddle</a></p>
15 <p><a>View on DB Fiddle</a></p>
16 <p>Если такой запрос вернул какие-то строки, это может говорить о сбое в системе.</p>
16 <p>Если такой запрос вернул какие-то строки, это может говорить о сбое в системе.</p>
17 <p>При этом важно знать, что NULL и строка нулевой длины - это не одно и то же. В отличие от строки нулевой длины, NULL говорит, что никакое значение не занесено в текущую ячейку базы данных.</p>
17 <p>При этом важно знать, что NULL и строка нулевой длины - это не одно и то же. В отличие от строки нулевой длины, NULL говорит, что никакое значение не занесено в текущую ячейку базы данных.</p>
18 <p>Еще одна интересная особенность - NULL не равен NULL. Так происходит, потому что нельзя сравнить одну пустоту с другой. Следующий запрос вернет пустую таблицу:</p>
18 <p>Еще одна интересная особенность - NULL не равен NULL. Так происходит, потому что нельзя сравнить одну пустоту с другой. Следующий запрос вернет пустую таблицу:</p>
19 <p><a>View on DB Fiddle</a></p>
19 <p><a>View on DB Fiddle</a></p>
20 <h2>Выводы</h2>
20 <h2>Выводы</h2>
21 <p>В этом уроке мы познакомились со значениями NULL, которые возникают в случае отсутствия данных в какой-либо ячейке, и научились с ними работать.</p>
21 <p>В этом уроке мы познакомились со значениями NULL, которые возникают в случае отсутствия данных в какой-либо ячейке, и научились с ними работать.</p>
22 <p>Важно понимать, что значения NULL мы обрабатываем особым образом с помощью операторов IS и IS NOT. Привычные операторы сравнения =, &gt;, &lt;, != не будут правильно работать с NULL.</p>
22 <p>Важно понимать, что значения NULL мы обрабатываем особым образом с помощью операторов IS и IS NOT. Привычные операторы сравнения =, &gt;, &lt;, != не будут правильно работать с NULL.</p>