кодесурса
«MYSQL

MySQL INSERT оператор

script1adsense2code
script1adsense3code

ВСТАВИТЬ заявление

Оператор MySQL INSERT используется для вставки записи или строк в таблицу. Вставка записей или строк в таблицу может быть выполнена двумя способами: вставка одной строки за раз и вставка нескольких строк за раз.

Версия: MySQL 5.6

Синтаксис:

 INSERT [LOW_PRIORITY | ЗАДЕРЖАНО | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (имя_раздела, ...)] 
    [(Col_name, ...)]
    {ЦЕННОСТИ | VALUE} ({expr | DEFAULT}, ...), (...), ...
    [ON DUPLICATE KEY UPDATE
      имя_столбец = выражение
        [, col_name = expr] ...]

или же:

 INSERT [LOW_PRIORITY | ЗАДЕРЖАНО | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (имя_раздела, ...)]
    SET col_name = {expr | ДЕФОЛТ}, ...
    [ON DUPLICATE KEY UPDATE
      имя_столбец = выражение
        [, col_name = expr] ...]

или же:

 INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (имя_раздела, ...)] 
    [(Col_name, ...)]
    ВЫБРАТЬ ...
    [ON DUPLICATE KEY UPDATE
      имя_столбец = выражение
        [, col_name = expr] ...]

Аргументы:

название Описания
ВСТАВИТЬ Вставляет новые строки в существующую таблицу.
НИЗКИЙ ПРИОРИТЕТ Используя ключевое слово LOW_PRIORITY, выполнение INSERT задерживается до тех пор, пока другие клиенты не будут читать из таблицы. Это включает в себя других клиентов, которые начали читать, в то время как существующие клиенты читают. Следовательно, для клиента, который выдает инструкцию INSERT LOW_PRIORITY, можно ожидать очень долго (или даже вечно) в среде с интенсивным чтением.
ЗАДЕРЖИВАЕТСЯ Используя ключевое слово DELAYED, сервер помещает строку или строки для вставки в буфер, и оператор INSERT DELAYED (выданный клиентом) может затем немедленно продолжить. Сервер хранит строки, если таблица используется. Когда таблица свободна, сервер начинает вставлять строки, периодически проверяя, есть ли новые запросы на чтение для таблицы. Если есть какие-либо новые запросы на чтение, отложенная очередь строк приостанавливается до тех пор, пока таблица снова не станет свободной.
ВЫСОКИЙ ПРИОРИТЕТ Используя HIGH_PRIORITY, он переопределяет эффект опции --low-priority-updates, если сервер был запущен с этой опцией. Это также приводит к тому, что одновременные вставки не используются.
LOW_PRIORITY и HIGH_PRIORITY влияют только на механизмы хранения, которые используют только блокировку на уровне таблицы, такие как MyISAM, MEMORY и MERGE.
ИГНОРИРУЙТЕ При использовании ключевого слова IGNORE ошибки, возникающие при выполнении оператора INSERT, игнорируются.
В Вставляет новые строки в существующую таблицу.
tbl_name Имя таблицы, в которую будут вставлены строки.
PARTITION В MySQL 5.6.2 и более поздних версиях вы можете контролировать, какие разделы и подразделы принимают новые строки при вставке в многораздельную таблицу. Параметр PARTITION принимает разделенный запятыми список имен одного или нескольких разделов или подразделов (или обоих) таблицы. Если какая-либо из строк, которые готовы к вставке, с помощью данного оператора INSERT не соответствуют ни одному из перечисленных разделов, инструкция INSERT завершается ошибкой. Обнаружена строка, не соответствующая данному набору разделов .
partition_name Имя секционированной таблицы.
col_name

Разделенный запятыми список имен столбцов.

  • Вы можете указать список имен столбцов через запятую, следующий за именем таблицы, и значение для каждого именованного столбца должно быть предоставлено списком VALUES или оператором SELECT.
  • Если вы не укажете имена столбцов для INSERT ... VALUES или INSERT ... SELECT, значения для каждого столбца в таблице должны быть предоставлены списком VALUES (такой же, как порядок столбцов в таблице) или оператором SELECT. ,
  • Предложение SET явно указывает имена столбцов.
ЦЕННОСТИ | ЗНАЧЕНИЕ
  • Если режим строгого SQL отключен, для любого столбца, для которого явно не задано значение, устанавливается значение по умолчанию (явное или неявное). Например, если вы укажете список столбцов, в котором не указаны все столбцы таблицы, для безымянных столбцов будут установлены значения по умолчанию.
  • Ключевое слово DEFAULT используется для явного задания столбцу значения по умолчанию.
  • Если и список столбцов, и список ЗНАЧЕНИЙ пусты, INSERT создает строку, для каждого столбца которой установлено значение по умолчанию.
  • Вы можете указать выражение expr для предоставления значения столбца. Это может включать преобразование типа, если тип выражения не соответствует типу столбца, и преобразование данного значения может привести к различным вставленным значениям в зависимости от типа данных. Например, вставка строки '1998.0e-2' в столбец INT, FLOAT, DECIMAL (10,6) или YEAR приводит к вставке значений 1998, 19.9821, 19.982100 и 1998 соответственно.

ВСТАВИТЬ ... ВЫБРАТЬ

Чтобы быстро вставить много строк в таблицу из одной или нескольких таблиц, вы можете использовать оператор INSERT ... SELECT. Вот синтаксис:

Синтаксис:

 INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name 
    [PARTITION (имя_раздела, ...)]
    [(Col_name, ...)]
    ВЫБРАТЬ ...
    [ON DUPLICATE KEY UPDATE col_name = expr, ...]

Для операторов INSERT ... SELECT выполняются следующие условия:

  • Используя ключевое слово IGNORE, игнорируйте строки, которые могут привести к нарушениям дубликата ключа.
  • Ключевое слово DELAYED игнорируется командой INSERT ... SELECT.
  • Таблица назначения оператора INSERT может появиться в предложении FROM части запроса SELECT.
  • Столбцы AUTO_INCREMENT работают как обычно.
  • Чтобы избежать неоднозначных проблем со ссылками на столбцы, когда SELECT и INSERT ссылаются на одну таблицу.
  • В MySQL 5.6.2 и более поздних версиях вы можете контролировать, какие разделы и подразделы принимают новые строки при вставке в многораздельную таблицу.

Пример:

 INSERT INTO tb2 (fld_id)
  ВЫБЕРИТЕ tbl.fld_order_id
  ОТ tbl ГДЕ tbl.fld_order_id> 200;

INSERT DELAYED

Параметр DELAYED для оператора INSERT является расширением MySQL для стандартного SQL, который можно использовать для определенных типов таблиц (таких как MyISAM). Когда клиент использует INSERT DELAYED, он сразу получает одобрение от сервера, и строка ставится в очередь для вставки, когда таблица не используется каким-либо другим потоком.

Синтаксис:

 Вставить с задержкой ... 

ВСТАВИТЬ ... НА ДУБЛИКОВАТЬ КЛЮЧЕВОЕ ОБНОВЛЕНИЕ

Если вы укажете ON DUPLICATE KEY UPDATE, и будет вставлена строка, которая приведет к дублированию значения в индексе UNIQUE или PRIMARY KEY, MySQL выполнит UPDATE старой строки. Например, если столбец x объявлен как UNIQUE и содержит значение 1, следующие два оператора имеют аналогичный эффект:

 INSERT INTO table (x, y, z) ЗНАЧЕНИЯ (1,2,3)
  ОБНОВЛЕНИЕ КЛЮЧЕВЫХ КЛЮЧЕЙ z = z + 1;
ОБНОВЛЕНИЕ таблицы SET z = z + 1 ГДЕ x = 1;

Примечание. Эффекты не идентичны для таблицы InnoDB, где a - это столбец с автоинкрементом. Для столбца с автоинкрементом оператор INSERT увеличивает значение автоинкремента, а для UPDATE - нет.

Примеры:

Оператор MySQL INSERT INTO используется для вставки записи или строк в таблицу.

Синтаксис:

 INSERT INTO table_name ([column_name], [... column_name], ...)
ЗНАЧЕНИЯ ([column_value], [.. column_value]); 

Пример с PHP-кодом для вставки данных в таблицу MySQL

HTML-код (скажем, form.html) :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>form to insert data</title>
</head>
<body>
<form method="post" action="insert.php">
<input type="text" name="name" />
<input type="text" name="email" />
<input type="text" name="address" />
<input type="submit" value="Submit">
</form>
</body>
</html>

PHP-код (скажем, insert.php):

<?php
$host="localhost"; //yout host name
$username="root";  //yout user name
$password="";      // your password
$db_name="test";  // your database name
$con=MySQL_connect("$host", "$username", "$password")or die("cannot connect"); //MySQL connection
MySQL_select_db("$db_name")or die("can not select DB"); //select your database
$name = $_POST['name'];
$email = $_POST['email'];
$address = $_POST['address'];
$query ="INSERT INTO test (name,email,address) VALUES ('$name', '$email', '$address')";
MySQL_query($query) or die('Query "' . $query . '" failed: ' . MySQL_error());
// name, email and address are fields of your fields; test your table. $name, $email and $address are values collected from the form
?>

MySQL: вставьте одну строку в таблицу

Следующий оператор вставляет одну строку в таблицу, используя оператор MySQL INSERT INTO.

Код:

INSERT INTO newcate 
VALUES ("CA006","Sports");

Вышеприведенный оператор вставит одну строку в таблицу 'newcate'. Мы не упомянули здесь ни одного названия столбца. Вот почему все столбцы будут затронуты.

 mysql> select * from newcate;
+ --------- + -------------- +
| cate_id | cate_descrip |
+ --------- + -------------- +
| CA001 | Наука | 
| CA002 | Технологии | 
| CA003 | Компьютеры | 
| CA004 | Природа | 
| CA005 | Медицинский | 
| CA006 | Спорт | 
+ --------- + -------------- +
6 рядов в наборе (0,00 сек)

MySQL: значения INSERT для определенных столбцов

Следующий оператор вставляет значения для определенных столбцов, используя оператор MySQL INSERT INTO.

Пример таблицы: новая покупка


Код:

INSERT INTO newpurchase  (invoice_no,ord_no,book_name)
VALUES  ("INV001","ORD006",”An advance book of Computer”);

Вышеприведенный оператор вставит одну (1) строку в таблицу «newpurchase» для столбцов «invoice_no», «ord_no» и «book_name».

MySQL: INSERT NULL значения

Следующий оператор вставляет значения NULL в один или несколько столбцов, используя оператор MySQL INSERT INTO.

Пример таблицы: новая покупка


Код:

INSERT INTO newpurchase (invoice_no,ord_no,book_name) 
VALUES ("INV002","ORD007",NULL);

Приведенный выше оператор вставит одну (1) строку в таблицу «newpurchase». Столбцы 'invoice_no', 'ord_no' и 'book_name' заполняются значениями, а столбец 'book_name' заполняется значением NULL.

Вставка нескольких строк в одном запросе SQL

В MySQL вы можете вставить несколько строк в один запрос SQL. Вот синтаксис:

 INSERT INTO Таблица (Столбец1, Столбец2) ЗНАЧЕНИЯ
(Значение1, Значение2), (Значение1, Значение2); 

MySQL INSERT строки с оператором SELECT

Следующий оператор вставляет значения в таблицу, используя оператор MySQL INSERT INTO, когда имена и значения столбцов собираются из другой идентичной таблицы, используя оператор MySQL SELECT. Таким образом, вы можете вставить значения одной таблицы в другую, если таблицы идентичны.

Пример таблицы: покупка


Код:

INSERT INTO testpurchase 
SELECT * 
FROM purchase;

MySQL INSERT строки с оператором SELECT и WHERE

Следующий оператор вставляет значения в таблицу, используя оператор MySQL INSERT INTO, когда имена и значения столбцов собираются из другой идентичной таблицы, используя MySQL SELECT и WHERE. Таким образом, вы можете вставлять значения, основанные на некоторых условиях одной таблицы, в другую, когда таблицы идентичны.

Пример таблицы: покупка


Код:

INSERT INTO testpurchase 
SELECT * 
FROM purchase 
WHERE YEAR(invoice_dt)='2008';

Приведенный выше оператор выполняет следующие операции -

  • вставить строки в таблицу «testpurchase» из идентичной таблицы «покупка»,
  • год таблицы invoice_date таблицы покупки должен быть 2008.

Предыдущая: MySQL Partitioning
Далее: INSERT записи с GROUP BY и ORDER BY

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code