Section courante

A propos

Section administrative du site

INSERT

Insère
MySQL  

Syntaxe

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ]
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name SET col_name={expr | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ]
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] SELECT ... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ]

Description

Cette instruction permet d'insérer un nouvel enregistrement dans une table.

Remarques

Exemples

Voici un exemple montrant des insertions de valeurs divers dans un type de données entier :

  1. CREATE TABLE IF NOT EXISTS `table_de_test` (`id` INT(10) UNSIGNED NOT NULL,`noBillet` INT(11) SIGNED NOT NULL, PRIMARY KEY  (`id`)) ENGINE=InnoDB;
  2.  
  3. INSERT INTO `table_de_test` (`id`,`noBillet`) VALUES (1,-1);
  4. INSERT INTO `table_de_test` (`id`,`noBillet`) VALUES (2,'A');
  5. INSERT INTO `table_de_test` (`id`,`noBillet`) VALUES (3,'A123');
  6. INSERT INTO `table_de_test` (`id`,`noBillet`) VALUES (4,'456A123');
  7. INSERT INTO `table_de_test` (`id`,`noBillet`) VALUES (5,2990221014);
  8. INSERT INTO `table_de_test` (`id`,`noBillet`) VALUES (6,2147*2);
  9. INSERT INTO `table_de_test` (`id`,`noBillet`) VALUES (7,2147483647*2);
  10. INSERT INTO `table_de_test` (`id`,`noBillet`) VALUES (8,4294967296);
  11. INSERT INTO `table_de_test` (`id`,`noBillet`) VALUES (9,4294967297);

Si le mode STRICT est à OFFSET sql_mode="";») on obtiendra le résultat suivant :

id noBillet
1 -1
2 0
3 0
4 456
5 2147483647
6 4294
7 2147483647
8 2147483647
9 2147483647

Si le mode STRICT est à ONSET sql_mode=STRICT_ALL_TABLES;») on obtiendra le résultat suivant :

id noBillet
1 -1
6 4294

L'exemple suivant permet d'effectuer une insertion massive dans la table «departments» de données en se basant sur les identificateurs «dept_id» n'étant pas présent dans la table «departments_taux» mais présent dans «departments» : :

  1. INSERT INTO `departments_taux` (`taux1`, `taux2`, `id_dept`, `date_creation`)
  2. SELECT DISTINCT `taux_agence1`,`taux2`, `dept_id`, NOW() FROM `departments` WHERE `dept_id` NOT IN (
  3.      SELECT `dept_id` FROM `departments_taux` WHERE `dept_id` IN (SELECT DISTINCT `dept_id` FROM `departments`)
  4. ) AND (`taux1`<>0 OR `taux2`<> 0)

Voir également

Article - Les géants de l'informatique - Oracle

Références

MySQL - Référence, Edition Micro Application, Nicolas Rivereau, Antoine Pichot, 2002, ISBN: 2-7429-2560-0, page 906.
MySQL: The definitive guide to using, programming, and administering MySQL 4 databases - Second Edition, Paul Dubois, 2003, ISBN: 0-7357-1212-3, page 873

Dernière mise à jour : Mardi, le 23 décembre 2014