ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Все о MySQL. Работа с полями, объявленными с модификатором default


28-12-2009

Полям, которые не указаны в списке, автоматически присваивается значение по умолчанию. Рассмотрим это на следующем примере.
Листинг 9.9.
mysql> CREATE TABLE forums (name VARCHAR(150) NOT NULL, category VARCHAR(50) DEFAULT 'UNIX' NOT NULL, postsperpage SMALLINT DEFAULT 15 NOT NULL, highlightColor VARCHAR(10) DEFAULT 'red' NOT NULL);
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO forums (name) VALUES ('Apache');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO forums (name, highlightColor) VALUES ('Sendmail', 'green'); Query OK, 1 row affected (0.00 sec)
Работа с полями, объявленными с модификатором default
Работа с полями, объявленными с модификатором default
Начиная с версии 4.0.3, MySQL также поддерживает новое ключевое слово DEFAULT, которое указывает на использование для данного поля записи значения по умолчанию.
Листинг 9.10.
mysql> INSERT INTO forums (name, category, postsperpage,
highlightColor) VALUES ('MySQL', DEFAULT, DEFAULT, DEFAULT);
Query OK, 1 row affected (0.01 sec)
Работа с полями, объявленными с ключевым словом autoincrement
Использование столбцов с ключевым словом AUTOINCREMENT, позволяет не указывать имя такого поля в операторах INSERT. При этом MySQL "знает", что нужно вставлять следующее по порядку число. Такое число может служить первичным ключом в вашей таблице. Рассмотрим следующий пример, в котором будет проиллюстрирована таблица со столбцом AUTOINCREMENT в качестве первичного ключа,
Листинг 9.11.
mysql> CREATE TABLE users (uid TINYINT(4) NOT NULL AUTO_INCREMENT, uname varchar(8) NOT NULL DEFAULT '', upass VARCHAR(l5) NOT NULL
DEFAULT '', PRIMARY KEY (uid));
Query OK, 0 rows affected (0.08 sec)
а затем заполним его данными. Листинг 9.12.
mysql> INSERT INTO users (uname, upass) VALUES ('jim', PASSWORD('secret'));
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO users (uname, upass) VALUES ('sarah', PASSWORD('opensesame'));
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO users (uname, upass) VALUES ('tim', PASSWORD('whiteboard'));
Query OK, 1 row affected (0.00 sec)
В каждой записи в поле uid будет автоматически добавлено следующее по порядку число.
Работа с полями, объявленными с модификатором default
Работа с полями, объявленными с ключевым словом UNIQUE
При добавлении записей с повторяющимися значениями поля, объявленного как UNIQUE, можно проследить, каким образом MySQL обрабатывает эту ситуацию: пропускает операцию вставки, аварийно завершает действие или модифицирует старую запись с новыми значениями при использовании ключевого слова IGNORE или предложения ON DUPLICATE KEY UPDATE.
Для того чтобы лучше это понять, рассмотрим следующую таблицу, которая содержит в поле id уникальный ключ.
Работа с полями, объявленными с модификатором default
Обычно при попытке добавления записи, нарушающей ограничение по уникальности, MySQL аварийно завершает операцию с сообщением об ошибке.
Листинг 9.15.
mysql> INSERT INTO menu (id, label, url) VALUES (4, 'Contact Us',
'contactus.html');
ERROR 1062: Duplicate entry '4' for key 1
При добавлении к оператору INSERT ключевого слова IGNORE, MySQL даже не попытается выполнить этот оператор, если он обнаружит, что нарушается ограничение по уникальности. Поэтому, несмотря на то, что этот оператор не возвращает сообщения об ошибке,
Листинг 9.16.
mysql> INSERT IGNORE INTO menu (id, label, url) VALUES (4, 'Contact
Us', 'contactus.html');
Query OK, 0 rows affected (0.01 sec)
данные останутся неизменными.
Работа с полями, объявленными с модификатором default
Долой все старое ...
Команда REPLACE, имеющая тот же синтаксис, что и команда INSERT, не сильно отличается от предложения ON DUPLICATE KEY UPDATE. Однако в отличие от команды INSERT, которая выдает диагностическое сообщение в том случае, если в добавленной записи повторяется значение в поле, обозначенное как UNIQUE, по команде REPLACE заменяется вся запись с новыми значениями.
Различие между ON DUPLICATE KEY UPDATE и REPLACE заключается в том, что если первая обновляет только указанные поля, то вторая сначала удаляет старую запись, а затем добавляет вместо нее полностью новую запись.
Ключевое слово IGNORE может пригодиться при необходимости выполнять несколько операторов INSERT последовательно. Такая конструкция оператора гарантирует обязательное выполнение всей цепочки операторов INSERT даже в том случае, если один из них содержит повторяющиеся значения и прерывания выполнения всей операции не происходит.
В такой ситуации, начиная с версии 4.1 можно автоматически преобразовать команду INSERT в команду UPDATE путем прибавления предложения ON DUPLICATE KEY UPDATE. За этим предложением должен следовать перечень модифицируемых полей в форме, которая соответствует синтаксису команды UPDATE. Рассмотрим следующий пример.
Листинг 9.18.
mysql> INSERT INTO menu (id, label, url) VALUES (4, 'Contact Us',
'contactus.html')
ON DUPLICATE KEY UPDATE label = 'Contact Us', url = 'contactus.html';
В этом случае MySQL определяет, что таблица уже содержит запись с тем же уникальным ключом, и автоматически модифицирует старую запись новыми значениями, которые определены в предложении ON DUPLICATE KEY UPDATE. В результате мы получим следующую таблицу.
Работа с полями, объявленными с модификатором default

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Обработка данных Все о MySQL. Работа с полями, объявленными с ключевым словом NULL