Присваивать полю значение NULL (если оно не объявлено как NOT NULL) можно с помощью ключевого слова NULL оператора INSERT. В следующем примере продемонстрировано добавление в таблицу addressbook записи со значениями NULL в полях email и fax. 

Листинг 9.20.
mysql> INSERT INTO addressbook (fname, lname, phone, fax, email)
VALUES ('Polly', 'Parrot', '239 1828', NULL, NULL);
Query OK, 1 row affected (0.00 sec)
Для выборки списка записей, содержащих значения NULL, целесообразно воспользоваться оператором IS NULL, как это сделано в следующем фрагменте.
Работа с полями, объявленными с ключевым словом NULL
Модификация записей

Конечно, вы очень скоро столкнетесь с необходимостью изменения данных, добавленных в свое время с помощью оператора INSERT. Вот почему СУБД MySQL также оснащена командой UPDATE, предназначенной для изменения содержимого записей таблицы.
Вот как выглядит синтаксис этой команды:
UPDATE имя-таблицы SET имя-поля = значение, SET имя-поля = значение, ... WHERE условное-выражение

Фактор пространства
Распространенная ошибка новичков заключается в стремлении приравнять значение NULL к пустой строке ' '. Тот факт, что это разные вещи с точки зрения SQL, совершенно неоспорим: NULL олицетворяет собой полное отсутствие значения, в то время как ' ' свидетельствует о том, что значение существует и равно пустой строке. Несмотря на то, что различие покажется несущественным, опыт показывает, что это может привести к ошибке, если при работе с этим значениями не проявить должного внимания.

Где нельзя использовать значения null
Значения NULL не могут содержаться в полях, используемых в первичных ключах (PRIMARY KEY).
Таким образом, получаем следующую адресную книгу.
Работа с полями, объявленными с ключевым словом NULL
Работа с полями, объявленными с ключевым словом NULL
Вполне возможно одновременное обновление нескольких полей записи. Следует просто задать несколько предложений SET одним оператором UPDATE. Рассмотрим следующий пример, где показано изменение содержимого сразу нескольких полей в записи о Робе Рэббите (Rob Rabbit).
Работа с полями, объявленными с ключевым словом NULL
Отсутствие предложения WHERE в операторе UPDATE приводит к тому, что изменению будет подвергнута каждая запись таблицы. Это подтверждает следующий пример, в котором оператор UPDATE, аналогичный предыдущему, используется уже без предложения WHERE.
Листинг 9.26.
mysql> UPDATE addressbook SET lname = 'Ringworm', phone = 'RING ME', fax = NULL, email = "robbieworm@wormplace.net1;
Работа с полями, объявленными с ключевым словом NULL
Мусор на входе, мусор на выходе
Отсутствие предложения WHERE в операторе UPDATE является характерной для новичков ошибкой, которая приводит порой к полному разрушению данных. Детальнее о предложении WHERE можно узнать в разделе "Выборка записей".

Хорошо играя
При выполнении операций INSERT и UPDATE, клиент MySQL можно запрограммировать таким образом, чтобы он ожидал успешного завершения операции, или можно просто поставить операции в очередь. Для этой цели предназначены ключевые слова LOW_PRIORITY и DELAYED соответственно.
• Ключевое слово LOW_PRIORITY останавливает выполнение оператора до тех пор, когда уже никакие потоки не будут использовать таблицу в своей работе, и поэтому клиент вынужден ожидать до полного завершения выполнения оператора. В приложениях, в которых приоритетом является надежность, добавление этого ключевого слова способствует сохранению общей целостности при выполнении SQL-транзакций и, следовательно, всей логики, на которой выстроено приложение.
• Ключевое слово DELAYED имеет действие, обратное действию ключевого слова LOW_PRIORITY, т.е. ставит выполняющийся оператор в очередь (в памяти сервера) и позволяет немедленный выход клиента. В частности, это полезно для улучшения рабочих характеристик приложения при работе с особенно загруженными серверами баз данных, т.к. это позволяет увеличить время реакции клиента (несмотря на определенный риск - если сервер аварийно остановится, все запросы, находящиеся в очереди этого сервера, будут утеряны).
Однако следует подчеркнуть, что использование этих ключевых слов с таблицами типа InnoDB недопустимо.
Как и при использовании оператора INSERT, при использовании оператора UPDATE допустимы вычисления и обращения к функциям, а также использование полученных результатов в операциях обновления.
Приведем несколько примеров использования функций и вычислений в операторах UPDATE. 
Листинг 9.27.
mysql> UPDATE marks SET total = math + sci WHERE name='James';
Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE users SET password = PASSWORD{'secret') WHERE user = ■sally";
Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE menu SET label = 'Home' WHERE label = 'Main Menu'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0