INSERT : Insérer des données dans une table MySQL

Noter ce cours :

Liens sponsorisés :

INSERT INTO : Insérer des données avec MySQL

Il existe différentes manières d'insérer des données dans une table MySQL. Pour tous ces exemples, nous allons partir d'une table de membres telle que vous pourriez la trouver sur la plupart des sites web, et ne contenant que quelques champs :

La structure de la table est la suivante :

structure SQL de la table membres

Si vous souhaitez reproduire cette table, vous pouvez exécuter le code SQL suivant (un outil tel que PHPMyAdmin est recommandé car plus pratique) :

CREATE TABLE IF NOT EXISTS `membres` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pseudo` varchar(30) NOT NULL,
  `passe` varchar(40) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

Nous allons insérer un membre dont le pseudo est Pierre, le mot de passe sera dupont et sera encodé à l'aide de la fonction SHA1() de MySQL (afin de ne pas être en clair dans la base), et l'email sera pierre@dupont.fr. L'équivalent en cliquant dans PHPMyAdmin serait de faire ceci :

Insertion d'une donnée avec PHPMyAdmin

Remarquez que la valeur du champ id est vide, car il s'agit d'un champ auto-incrémenté, c'est à dire que MySQL va lui attribuer une valeur automatiquement supérieure à la dernière valeur insérée dans la table. Cela est très pratique et vous évite de devoir effectuer une requête de séletion pour récupérer le maximum du champ id puis de l'incrémenter de 1.

INSERT INTO table VALUES(...)

C'est une syntaxe qui se révèle plutôt courte mais qui, en contrepartie, vous oblige à spécifier les valeurs de tous les champs, dans l'ordre dans lequel ils sont implémentés dans la table MySQL.

Pour notre exemple ci-dessus, nous sommes donc obligés de spécifier les valeurs des champs id, pseudo, passe, email en respectant scrupuleusement cet ordre.

La syntaxe à utiliser est la suivante :

INSERT INTO `membres` VALUES("", "Pierre", SHA1("dupont"), "pierre@dupont.fr");

Remarquez que le nom de la table est entouré du caractère d'échappement `. Ceci n'est pas obligatoire dans le cas où le nom de votre table ne contient pas de caractères spéciaux (ce qui est conseillé). Remarquez également l'absence de guillemets doubles autour de la fonction SHA1(). Ceci est normal car il s'agit d'une fonction de MySQL.

Vous pouvez, via l'onglet SQL de PHPMyAdmin, saisir entièrement cette syntaxe via l'onglet SQL.

Onglet SQL - insertion

INSERT INTO table(champs ...) VALUES(...)

Cette syntaxe est à privilégier car :

La syntaxe à utiliser est la suivante :

INSERT INTO `membres` (`pseudo`, `passe`, `email`) VALUES("Pierre", SHA1("dupont"), "pierre@dupont.fr");

Remarquez la présence du caractère d'échappement entourant les noms de champs. Il n'est pas obligatoire si les noms de vos champs n'ont pas de caractères spéciaux.

Insertion de caractères spéciaux, champs spéciaux et syntaxe

Guillemets doubles

Imaginions que vous souhaitiez insérer un enregistrement contenant des guillemets doubles, par exemple comme pseudo Pierre "le fou", vous devez échapper les guillemets doubles à l'aide du caractère d'échappement antislash \. Voici un exemple :

INSERT INTO `membres` (`id`, `pseudo`, `passe`, `email`) VALUES (NULL, "Pierre \"le fou\"", SHA1("pierre"), "pierrelefou@fous.fr");

Champs numériques

Les champs numériques (INT, FLOAT, etc.) n'ont pas besoin d'être entourés de guillemets lorsque vous effectuez vos requêtes d'insertion. Le caractère séparateur de milliers est généralement le point. Prenons l'exemple d'une table articles dont la structure est la suivante :

CREATE TABLE IF NOT EXISTS `articles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `libelle` varchar(200) NOT NULL,
  `prix` float NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

Remarquez le champ prix de type FLOAT. Vous souhaitez insérer un article dont le libellé est Mon article et le prix est de 50.25 €. La syntaxe à utiliser est la suivante :

INSERT INTO `articles` (`libelle`, `prix`) VALUES ('mon article', 50.25);
Vous avez aimé cet article intitulé INSERT : Insérer des données dans une table MySQL ? Partagez-le !
Vulgarisation-informatique.com
Cours en informatique & tutoriels