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 с помощью =, >, < и других операторов сравнения всегда будет давать результат NULL.</p>
9
<p>Дело в том, что проверка значения NULL с помощью =, >, < и других операторов сравнения всегда будет давать результат 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. Привычные операторы сравнения =, >, <, != не будут правильно работать с NULL.</p>
22
<p>Важно понимать, что значения NULL мы обрабатываем особым образом с помощью операторов IS и IS NOT. Привычные операторы сравнения =, >, <, != не будут правильно работать с NULL.</p>