Разное
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Узнать запущен ли сервис FireBird
Категория: Интернет и Сети
Категория: Интернет и Сети
Округление в большую сторону
Категория: Математика
Категория: Математика
Как поместить графический элемент в ListBox
Категория: Компоненты
Категория: Компоненты
Как показать balloon tooltips в программе
Категория: Приложение
Категория: Приложение
Отступ в Memo
Категория: Компоненты
Категория: Компоненты
Вычислить логарифм
Категория: Математика
Категория: Математика
Распознавание кодировки. Перекодировка.
Категория: Текст и строки
Категория: Текст и строки
Получить изображение формы в виде Bitmap и поместить его в буфер обмена
Категория: Компоненты
Категория: Компоненты
К-во рабочих дней в месяце
Категория: Математика
Категория: Математика
Последний день месяца
Категория: Базы данных
Категория: Базы данных
Справочник по MySQL
Справочник по MySQL - Вставка строки в таблицу INSERT
Команда MySQL INSERT производит вставку новых строк в таблицу.
Синтаксис команды INSERT
либо
либо
Общие положения работы команды INSERT:
tbl_name
- Задает имя таблицы, в которую будет вставлена новая строка. На момент запуска команды INSERT таблица с таким именем должна существовать в базе данных.
LOW_PRIORITY
- Если указан этот параметр, то вставка новой записи будет отложена до тех пор, пока другие сценарии не закончат чтение из этой таблицы. Надо отметить, что если таблица часто используется, то при указании этого параметра может пройти достаточно много времени, прежде чем данная команда будет выполнена.
DELAYED
- Если указан этот параметр, то после выполнения команды INSERT сценарий сразу же получит ответ от БД о успешной вставке новой записи, а запись будет вставлено только после завершения использования данной таблицы другим сценарием. Это может быть удобно, если требуется высокая скорость работы скрипта. Данный параметр работает только с таблицами типа ISAM и MyISAM. Следуем отметить, что если таблица, в которую происходит вставка записи, в данный момент не используется другими запросами, то команда INSERT DELAYED будет работать медленнее, нежели INSER. Так что рекомендуется использовать параметр DELAYED только при большой нагрузке на таблицу.
IGNORE
- Если некоторые поля таблицы имеют ключи PRIMARY или UNIQUE, и производится вставка новой строки, в которой эти поля имеют дублирующее значение, то действие команды аварийно завершается и выдается ошибка №1062 ("Duplicate entry 'val' for key N"). Если в команде INSERT указано ключевое слово IGNORE, то вставка записей не прерывается, а строки с дублирующими значениями просто не вставляются.
Если MySQL был сконфигурирован с использованием опции DONT_USE_DEFAULT_FIELDS, то команда INSERT будет генерировать ошибку, если явно не указать величины для всех столбцов, которые требуют значений не-NULL.
Для того, чтобы узнать значение, присвоенное полю с ключом AUTO_INCREMENT, можно воспользоваться функцией mysql_insert_id().
Для добавления новых записей в существующую таблицу при помощи команды INSERT существует три основных синтаксиса:
INSERT ... VALUES
- В этом случае в команде четко указывается порядок следования устанавливаемых полей и их значений.
Следующая команда вставит в таблицу users новую запись, присвоив полям name, age, country, city значения Evgen, 26, Russia, Ryazan соответственно:
Если для поля или группы полей, присутствующих в таблице, не установить значение, то используется значение, установленное по умолчанию при создании таблицы:
После выполнения этой команды поле country получит значение по умолчанию.
Если при выполнении команды INSERT не были указаны названия полей, то в VALUES() должны быть указаны значения для всех полей таблицы.
Если список полей таблицы заранее не известен, то его можно узнать при помощи команды:
Результатом этой команды будет таблица примерно следующего содержания:
Здесь обработав полученные данные в поле Field можно получить все поля таблицы.
INSERT ... SET
- В этом случае в команде каждому полю, присутствующему в таблице, присваивается значение в виде имя поля='значение'.
Следующий пример по результату идентичен первому примеру для INSERT ... VALUE:
Так же, как и с INSERT ... VALUES, если одному или нескольким полям не задать значение, то установится значение по умолчанию.
В качестве значений полям можно присваивать не только значения, но и выражения. В выражениях разрешено использовать значения полей таблицы, которые уже были установлены в этой команде:
или
INSERT ... SELECT
- Такой синтаксис позволяет внести в таблицу большое количество записей за один раз, причем из разных таблиц.
Следующий пример запишет в таблицу users_new все записи из таблицы users, в которых поле country равно "Russia".
Если для таблицы, в которую происходит вставка записей, не указан список полей, то значения для всех полей будут определены на основании результата работы SELECT.
Если некоторые поля не определены, то для них будут принято значение по умолчанию.
Особенности синтаксиса INSERT ... SELECT:
-Имя таблицы, в которую вставляются записи, не должна присутствовать в списке таблиц FROM части SELECT, т.к. это может привести к ошибке вставки (ведь условие WHERE части SELECT может найти записи, которые уже вставлены этой командой ранее).
-Другим сценариям запрещено производить вставку в таблицы, учавствующие в запросе, во время выполнения этого запроса.
-Столбцы AUTO_INCREMENT работают, как обычно.
См. также
Типы данных, используемые в базе данных MySQL
Создание базы данных MySQL (CREATE DATABASE)
Удаление базы данных MySQL (DROP DATABASE)
Создание таблицы в базе данных MySQL (CREATE TABLE)
Удаление таблицы из базы данных MySQL (DROP TABLE)
Переименование таблицы (ALTER TABLE RENAME)
Вставка столбцов (ALTER TABLE ADD)
Изменение свойств столбца (ALTER TABLE CHANGE)
Удаление столбцов (ALTER TABLE DROP)
Вставка строки в таблицу INSERT
Удаление строк из таблицы (DELETE FROM)
Обновление записей в таблице(UPDATE)
Поиск записей в таблице(SELECT)
Команда MySQL INSERT производит вставку новых строк в таблицу.
Синтаксис команды INSERT
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
В В В В [INTO] tbl_name [(col_name,...)]
В В В В VALUES (expression,...),(...),...
либо
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
В В В В [INTO] tbl_name
В В В В SET col_name=expression, col_name=expression, ...
либо
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
В В В В [INTO] tbl_name [(col_name,...)]
В В В В SELECT ...
Общие положения работы команды INSERT:
tbl_name
- Задает имя таблицы, в которую будет вставлена новая строка. На момент запуска команды INSERT таблица с таким именем должна существовать в базе данных.
LOW_PRIORITY
- Если указан этот параметр, то вставка новой записи будет отложена до тех пор, пока другие сценарии не закончат чтение из этой таблицы. Надо отметить, что если таблица часто используется, то при указании этого параметра может пройти достаточно много времени, прежде чем данная команда будет выполнена.
DELAYED
- Если указан этот параметр, то после выполнения команды INSERT сценарий сразу же получит ответ от БД о успешной вставке новой записи, а запись будет вставлено только после завершения использования данной таблицы другим сценарием. Это может быть удобно, если требуется высокая скорость работы скрипта. Данный параметр работает только с таблицами типа ISAM и MyISAM. Следуем отметить, что если таблица, в которую происходит вставка записи, в данный момент не используется другими запросами, то команда INSERT DELAYED будет работать медленнее, нежели INSER. Так что рекомендуется использовать параметр DELAYED только при большой нагрузке на таблицу.
IGNORE
- Если некоторые поля таблицы имеют ключи PRIMARY или UNIQUE, и производится вставка новой строки, в которой эти поля имеют дублирующее значение, то действие команды аварийно завершается и выдается ошибка №1062 ("Duplicate entry 'val' for key N"). Если в команде INSERT указано ключевое слово IGNORE, то вставка записей не прерывается, а строки с дублирующими значениями просто не вставляются.
Если MySQL был сконфигурирован с использованием опции DONT_USE_DEFAULT_FIELDS, то команда INSERT будет генерировать ошибку, если явно не указать величины для всех столбцов, которые требуют значений не-NULL.
Для того, чтобы узнать значение, присвоенное полю с ключом AUTO_INCREMENT, можно воспользоваться функцией mysql_insert_id().
Для добавления новых записей в существующую таблицу при помощи команды INSERT существует три основных синтаксиса:
INSERT ... VALUES
- В этом случае в команде четко указывается порядок следования устанавливаемых полей и их значений.
Следующая команда вставит в таблицу users новую запись, присвоив полям name, age, country, city значения Evgen, 26, Russia, Ryazan соответственно:
INSERT INTO `users` ( `name` ,В В `age` ,В В `country` ,В В `city` )VALUES( 'Evgen', 26,В В 'Russia',В В 'Ryazan')
Если для поля или группы полей, присутствующих в таблице, не установить значение, то используется значение, установленное по умолчанию при создании таблицы:
INSERT INTO `users` ( `name` ,В В `age` ,В В `city` )VALUES( 'Evgen', 26,В В 'Ryazan')
После выполнения этой команды поле country получит значение по умолчанию.
Если при выполнении команды INSERT не были указаны названия полей, то в VALUES() должны быть указаны значения для всех полей таблицы.
Если список полей таблицы заранее не известен, то его можно узнать при помощи команды:
DESCRIBE `users`
Результатом этой команды будет таблица примерно следующего содержания:
+---------+-------------+------+-----+---------+-------+
| FieldВ В | TypeВ В В В В В В В | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| nameВ В В В | varchar(50) | YESВ В |В В В В | NULLВ В В В |В В В В В В |
| ageВ В В В | int(3)В В В В В В | YESВ В |В В В В | NULLВ В В В |В В В В В В |
| country | varchar(64) | NOВ В |В В В В |В В В В В В В В |В В В В В В |
| cityВ В В В | varchar(64) | NOВ В |В В В В |В В В В В В В В |В В В В В В |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
Здесь обработав полученные данные в поле Field можно получить все поля таблицы.
INSERT ... SET
- В этом случае в команде каждому полю, присутствующему в таблице, присваивается значение в виде имя поля='значение'.
Следующий пример по результату идентичен первому примеру для INSERT ... VALUE:
INSERT INTO `users` SET `name`В В =В В 'Evgen',В В `age`В В =26,В В `country`В В =В В 'Russia',В В `city`В В =В В 'Ryazan'
Так же, как и с INSERT ... VALUES, если одному или нескольким полям не задать значение, то установится значение по умолчанию.
В качестве значений полям можно присваивать не только значения, но и выражения. В выражениях разрешено использовать значения полей таблицы, которые уже были установлены в этой команде:
INSERT INTO `tbl_name` SET `field1`В В =4,В В `field2`В В =В В `field1`В В *В В `field1`
или
INSERT INTO `tbl_name` ( `field1` ,В В `field2` )VALUES( 4,В В `field1`В В *В В `field1`В В )
INSERT ... SELECT
- Такой синтаксис позволяет внести в таблицу большое количество записей за один раз, причем из разных таблиц.
Следующий пример запишет в таблицу users_new все записи из таблицы users, в которых поле country равно "Russia".
INSERT INTO `users_new` SELECT * FROM `users` WHERE `country`В В =В В 'Russia'
Если для таблицы, в которую происходит вставка записей, не указан список полей, то значения для всех полей будут определены на основании результата работы SELECT.
Если некоторые поля не определены, то для них будут принято значение по умолчанию.
Особенности синтаксиса INSERT ... SELECT:
-Имя таблицы, в которую вставляются записи, не должна присутствовать в списке таблиц FROM части SELECT, т.к. это может привести к ошибке вставки (ведь условие WHERE части SELECT может найти записи, которые уже вставлены этой командой ранее).
-Другим сценариям запрещено производить вставку в таблицы, учавствующие в запросе, во время выполнения этого запроса.
-Столбцы AUTO_INCREMENT работают, как обычно.
_________________________________________
См. также
Типы данных, используемые в базе данных MySQL
Создание базы данных MySQL (CREATE DATABASE)
Удаление базы данных MySQL (DROP DATABASE)
Создание таблицы в базе данных MySQL (CREATE TABLE)
Удаление таблицы из базы данных MySQL (DROP TABLE)
Переименование таблицы (ALTER TABLE RENAME)
Вставка столбцов (ALTER TABLE ADD)
Изменение свойств столбца (ALTER TABLE CHANGE)
Удаление столбцов (ALTER TABLE DROP)
Вставка строки в таблицу INSERT
Удаление строк из таблицы (DELETE FROM)
Обновление записей в таблице(UPDATE)
Поиск записей в таблице(SELECT)