Присваивать полю значение 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, как это сделано в следующем фрагменте.
Модификация записей
Конечно, вы очень скоро столкнетесь с необходимостью изменения данных, добавленных в свое время с помощью оператора INSERT. Вот почему СУБД MySQL также оснащена командой UPDATE, предназначенной для изменения содержимого записей таблицы.
Вот как выглядит синтаксис этой команды:
UPDATE имя-таблицы SET имя-поля = значение, SET имя-поля = значение, ... WHERE условное-выражение
Фактор пространства
Распространенная ошибка новичков заключается в стремлении приравнять значение NULL к пустой строке ' '. Тот факт, что это разные вещи с точки зрения SQL, совершенно неоспорим: NULL олицетворяет собой полное отсутствие значения, в то время как ' ' свидетельствует о том, что значение существует и равно пустой строке. Несмотря на то, что различие покажется несущественным, опыт показывает, что это может привести к ошибке, если при работе с этим значениями не проявить должного внимания.
Где нельзя использовать значения null
Значения NULL не могут содержаться в полях, используемых в первичных ключах (PRIMARY KEY).
Таким образом, получаем следующую адресную книгу.
Вполне возможно одновременное обновление нескольких полей записи. Следует просто задать несколько предложений SET одним оператором UPDATE. Рассмотрим следующий пример, где показано изменение содержимого сразу нескольких полей в записи о Робе Рэббите (Rob Rabbit).
Отсутствие предложения WHERE в операторе UPDATE приводит к тому, что изменению будет подвергнута каждая запись таблицы. Это подтверждает следующий пример, в котором оператор UPDATE, аналогичный предыдущему, используется уже без предложения WHERE.
Листинг 9.26.
mysql> UPDATE addressbook SET lname = 'Ringworm', phone = 'RING ME', fax = NULL, email = "robbieworm@wormplace.net1;
Мусор на входе, мусор на выходе
Отсутствие предложения 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
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Работа с полями, объявленными с ключевым словом NULL
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Работа с полями, объявленными с модификатором default | Все о MySQL. Удаление записей |