После создания баз данных и таблиц, следующим шагом является их использование для хранения данных. Для добавления, модификации, удаления и выборки определенных записей из таблиц используется язык манипулирования данными (ЯМД) SQL. Так как команды ЯМД используются гораздо чаще команд языка определения данных (ЯОД), речь о которых шла в предыдущей главе, они значительно повышают эффективность работы реляционной СУБД MySQL.
Эта глава содержит детальное описание ЯМД, в ней обсуждается процесс добавления новых записей, модификации или удаления уже существующих записей, выполнения запросов по выборке записей, удовлетворяющих определенному критерию, импорту данных из других источников данных и их экспорту в определенном формате.
Вставка, модификация и удаление записей
СУБД MySQL имеет в своем арсенале множество предназначенных для выполнения определенных действий команд, когда необходима вставка, модификация или изменение каким-либо другим способом содержимого таблиц. В этом разделе представлено обсуждение самых различных команд с соответствующими примерами для демонстрации их работы.
Вставка записей
Следующим шагом после создания таблиц является заполнение их данными. Для этих целей предназначена команда INSERT, имеющая следующий формат:
INSERT INTO имя-таблицы (имя-поля, имя-поля, ...) VALUES (значение, значение, ...)
Проиллюстрируем ее работу на примере создания простой таблицы. Листинг 9.1.
mysql> CREATE TABLE addressbook (fname VARCHAR(255) NULL,
lname VARCHAR(255) NULL, phone VARCHAR(255) NULL,
Существует еще и сокращенная форма оператора INSERT, в которой список полей отсутствует. Она показана в следующем примере, во всем аналогичном предыдущему.
Листинг 9.4.
mysql> INSERT INTO addressbook VALUES ('Rob', 'Rabbit', '674 1536', '382 8364', 'rob@some.domain');
Query OK, 1 row affected (0.01 sec)
Следует заметить, что при использовании краткого формата порядок следования добавляемых значений должен соответствовать порядку следования полей в таблице (а определить этот порядок можно с помощью команды DESCRIBE).
Указание имен полей
Несмотря на то, что краткий вариант использования оператора INSERT определенно более популярен, указание имен явным образом предпочтительнее. Это позволяет создаваемому приложению стать более устойчивым относительно изменений структуры таблиц.
С помощью команды INSERT добавляются результаты вычислений или вызовы функций, как это показано в следующих примерах.
Листинг 9.5.
mysql> INSERT INTO marks (name, math, sci, total)
VALUES ('James Doe', 45, 67, math + sci);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO users (id, name, password)
VALUES (LAST_INSERT_ID() + 1, 'tam', 'secret');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO sales (id, cost, quantity, amount) VALUES (8587, 100, 4500, cost * quantity);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO log (process, message, timestamp)
VALUES ('crond', 'Unable to send mail in /usr/local/bin/backup.sh',
NOW());
Query OK, 1 row affected (0.01 sec)
При добавлении строковых значений (и некоторых дат) в таблицы, их необходимо выделять кавычками, в противном случае MySQL будет рассматривать их в качестве имен полей.
Листинг 9.6.
mysql> INSERT INTO addressbook (fname, lname, phone, fax, email) VALUES ('Rob', Rabbit, '674 1536', '382 8364', 'rob@some.domain'); ERROR 1054: Unknown column 'Rabbit' in 'field list'
Значения, которые сами содержат кавычки, должны выделяться предшествующим символом обратной косой черты "".
Листинг 9.7.
mysql> INSERT INTO addressbook (fname, lname, phone, fax, email) VALUES ('Frances', 'D'Souza', '123 4567', '000 7574',
'fdz@same.domain');
Query OK, 1 row affected (0.11 sec)
Цифровые значения кавычками не выделяются.
Листинг 9.8.
mysql> INSERT INTO stock (cost, quantity) VALUES (760.52, 65000);
Query OK, 1 row affected (0.01 sec)
Необязательность ключевого слова into
В MySQL ключевое слово INTO в операторе INSERT не является обязательным.
MySQL также поддерживает следующие два нестандартных варианта использования оператора INSERT.
■ Возможно использование нескольких предложений VALUES() в одном операторе INSERT. Например, вместо использования нескольких операторов INSERT, получаем следующее:
mysql> INSERT INTO stocks (symbol, price, quantity) VALUES ("ABCD", 100, 4500);
Query ОК, 1 row affected (0.05 sec)
mysql> INSERT INTO stocks (symbol, price, quantity) VALUES ('HYDH', 2000, 29);
Query ОК, 1 row affected (0.00 sec)
mysql> INSERT INTO stocks (symbol, price, quantity)
VALUES ('UGTS', 25, 67);
Query ОК, 1 row affected (0.05 sec) Также можно сделать следующее:
mysql> INSERT INTO stocks (symbol, price, quantity)
VALUES ('ABCD', 100, 4500),
('HYDH', 2000, 29), ('UGTS', 25, 67);
Query ОК, 3 rows affected (0.06 sec) Records: 3 Duplicates: 0 Warnings: 0
■ Вполне возможно вообще отказаться от конструкции INSERT...VALUES в пользу синтаксиса, используемого в операторе UPDATE. Это подразумевает использование предложения SET для указания значений для каждого столбца отдельно. Таким образом, вместо
mysql> INSERT INTO stocks (symbol, price, quantity)
VALUES ('UGTS', 25, 67);
Query ОК, 1 row affected (0.00 sec) получаем следующее:
mysql> INSERT INTO stocks SET symbol='HYDH', price=2000, quan-tity=29;
Query ОК, 1 row affected (0.06 sec)
ТОП-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. Обработка данных
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Получение информации о базах данных, таблицах и индексах | Все о MySQL. Работа с полями, объявленными с модификатором default |