Лицензионные программные продукты

Вставить строку.

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...

или INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...

или INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name
SET col_name=expression, col_name=expression, ...

Пример: INSERT INTO klient VALUES (0,"Иванов Иван Иванович","adres@post.com", 0,0,0);

Изменить структуру таблицы в базе данных, где:

Оператор INSERT вставляет новые строки в существующую таблицу. Форма данной команды INSERT ... VALUES вставляет строки в соответствии с точно указанными в команде значениями.

Форма INSERT ... SELECT вставляет строки, выбранные из другой таблицы или таблиц.

Форма INSERT ... VALUES со списком из нескольких значений поддерживается в версии MySQL 3.22.5 и более поздних. Синтаксис выражения col_name=expression поддерживается в версии MySQL 3.22.10 и более поздних.

tbl_name задает таблицу, в которую должны быть внесены строки. Столбцы, для которых заданы величины в команде, указываются в списке имен столбцов или в части SET:

  • Если не указан список столбцов для INSERT ... VALUES или INSERT ... SELECT, то величины для всех столбцов должны быть определены в списке VALUES() или в результате работы SELECT. Если порядок столбцов в таблице неизвестен, для его получения можно использовать DESCRIBE tbl_name.
  • Любой столбец, для которого явно не указано значение, будет установлен в свое значение по умолчанию. Например, если в заданном списке столбцов не указаны все столбцы в данной таблице, то не упомянутые столбцы устанавливаются в свои значения по умолчанию. Установка значений по умолчанию описывается в разделе section 6.5.3 Синтаксис оператора CREATE TABLE. В MySQL всегда предусмотрено значение по умолчанию для каждого поля. Это требование ``навязано'' MySQL, чтобы обеспечить возможность работы как с таблицами, поддерживающими транзакции, так и с таблицами, не поддерживающими их. Наша точка зрения (разработчиков) состоит в том, что проверка содержимого полей должна производиться приложением, а не сервером баз данных.
  • Выражение expression может относится к любому столбцу, который ранее был внесен в список значений. Например, можно указать следующее:

    mysql> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);

    Но нельзя указать:

    mysql> INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);

  • Если указывается ключевое слово LOW_PRIORITY, то выполнение данной команды INSERT будет задержано до тех пор, пока другие клиенты не завершат чтение этой таблицы. В этом случае данный клиент должен ожидать, пока данная команда вставки не будет завершена, что в случае интенсивного использования таблицы может потребовать значительного времени. В противоположность этому команда INSERT DELAYED позволяет данному клиенту продолжать операцию сразу же. See section 6.4.4 Синтаксис оператора INSERT DELAYED. Следует отметить, что указатель LOW_PRIORITY обычно не используется с таблицами MyISAM, поскольку при его указании становятся невозможными параллельные вставки.
  • Если в команде INSERT со строками, имеющими много значений, указывается ключевое слово IGNORE, то все строки, имеющие дублирующиеся ключи PRIMARY или UNIQUE в этой таблице, будут проигнорированы и не будут внесены. Если не указывать IGNORE, то данная операция вставки прекращается при обнаружении строки, имеющей дублирующееся значение существующего ключа. Количество строк, внесенных в данную таблицу, можно определить при помощи функции C API mysql_info(). Если MySQL был сконфигурирован с использованием опции DONT_USE_DEFAULT_FIELDS, то команда INSERT будет генерировать ошибку, если явно не указать величины для всех столбцов, которые требуют значений не-NULL.
  • С помощью функции mysql_insert_id можно найти величину, использованную для столбца AUTO_INCREMENT.

    Пример отображения командного окна
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 1 to server version: 4.1.12-nt

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql> USE primer;
    Database changed
    mysql> DESCRIBE klient;
    +-------+------------+------+-----+---------+----------------+
    | Field | Type       | Null | Key | Default | Extra          |
    +-------+------------+------+-----+---------+----------------+
    | kod   | int(5)     |      | PRI | NULL    | auto_increment |
    | fio   | text       | YES  |     | NULL    |                |
    | pol   | tinyint(1) |      |     | 0       |                |
    +-------+------------+------+-----+---------+----------------+
    3 rows in set (0.09 sec)

    mysql> SHOW FIELDS FROM klient;
    +-------+------------+------+-----+---------+----------------+
    | Field | Type       | Null | Key | Default | Extra          |
    +-------+------------+------+-----+---------+----------------+
    | kod   | int(5)     |      | PRI | NULL    | auto_increment |
    | fio   | text       | YES  |     | NULL    |                |
    | pol   | tinyint(1) |      |     | 0       |                |
    +-------+------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)

    mysql> SELECT * FROM klient;
    Empty set (0.02 sec)

    mysql> INSERT INTO klient VALUES (0,'Иванов Иван Иванович','М');
    Query OK, 1 row affected, 1 warning (0.05 sec)

    mysql> SELECT * FROM klient;
    +-----+----------------------+-----+
    | kod | fio                  | pol |
    +-----+----------------------+-----+
    |   1 | Иванов Иван Иванович |   0 |
    +-----+----------------------+-----+
    1 row in set (0.00 sec)

    mysql> INSERT INTO klient VALUES (0,'Семенов Семен Семенович','2');
    Query OK, 1 row affected (0.02 sec)

    mysql> SELECT * FROM klient;
    +-----+-------------------------+-----+
    | kod | fio                     | pol |
    +-----+-------------------------+-----+
    |   1 | Иванов Иван Иванович    |   0 |
    |   2 | Семенов Семен Семенович |   2 |
    +-----+-------------------------+-----+
    2 rows in set (0.01 sec)

    mysql> SELECT fio FROM klient;
    +-------------------------+
    | fio                     |
    +-------------------------+
    | Иванов Иван Иванович    |
    | Семенов Семен Семенович |
    +-------------------------+
    2 rows in set (0.00 sec)

    mysql>_

  • MySQL



    © Copyright 2005 www.e-inform.ru
    |