Instructions DML
Data Manipulation Language - Langage de manipulation de données
Insertion de données dans une table
Le DML permet de consulter ou modifier le contenu de la base de données comme les clauses SELECT, INSERT ou UPDATE
INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] nomdelatable [(col1, col2,...)]
VALUES (enregcol1 | DEFAULT), (enregcol2 | DEFAULT),...
On peut utiliser la même syntaxe avec un SELECT à la place du VALUES ou encore un SET avec col1=(expression | DEFAULT), col2=(expression | DEFAULT)...
- LOW_PRIORITY permet de demander à MySQL d'attendre qu'il n'y ait plus d'autres demandes sur l'objet concerné par l'insertion. Action non prioritaire donc.
- DELAYED permet de ne pas attendre la fin de l'exécution de l'insertion pour reprendre la main. L'avantage est que MySQL regroupe toutes les insertions ayant l'option DELAYED, l'opération sera donc plus rapide qu'en effectuant des insertion unitaires.
- IGNORE, s'il est spécifié avec des insertions multiples, demande à MySQL de ne pas tenir compte des enregistrements dont les clés primaires existent déjà. Si l'option n'est pas spécifiée et si un enregistrement contient une clé déjà existante, alors MySQL abandonne l'insertion en cours.
- INTO est un mot mort, c'est à dire qu'il peut être ou ne pas être spécifié.
- DEFAULT permet de spécifier une valeur par défaut pour la colonne. Une valeur par defaut permet à MySQl d'effectuer les insertions plus rapidement.
Si nous insérons un enregistrement dans une table contenant une colonne de type AUTO_INCREMENT, alors nous ne sommes pas obligé de spécifier de valeur pour cette colonne. MySQL génère automatiquement la valeur. Si on utilise la syntaxe avec SELECT, nous pouvons insérer dans une table des enregistrements provenant d'une autre table. La requête utilisant le mot SET, bien que moins utilisée, permet une lecture aisée de la syntaxe.
Création des premiers clients et les premiers articles
INSERT INTO clients VALUES
(1, 'DUTRON', 'Pierre','rue duchemin', 44200,'Nantes'),
(2, 'ANGE', 'Raoul','rue blanche', 75009,'Paris'),
(3, 'SURCOUF', 'Eric','rue du pont', 44000,'Nantes'),
(4, 'VASY', 'Philippe','rue montagne', 65100,'Pau'),
(5, 'PONG', 'Eric','bvd voltaire', 75011,'Paris');
INSERT INTO articles VALUES
('CLA01', 'Clavier basic', 20.20,50,1),
('UNI01', 'Unite central pro', 1456,5,1),
('SUI01', 'Suite Bureautique', 100,40,2),
('UNI02', 'Unite central basic', 1032,5,1),
('ANT01', 'Antivirus', 40,50,2),
('CLA02', 'Clavier ergo', 30,23,1);
TABLE clients (idclient , nom, prenom, adresse, codepostal, ville)
TABLE articles (codearticle, nom, prix, stock, idcategorie)
Lecture des données
SELECT [DISTINCT] expression
[INTO - OUTFILE | DUMPFILE - nomfichier options]
[WHERE definition]
[GROUP BY definition
[Having definition
[ORDER BY definition
[LIMIT [debut,]nbenregistrements]
Sélectionnons le code et le nom de la table articles
Si nous précisons le paramètre DISTINCT, MySQL renvoie une seule occurrence des enregistrements en double ou plus.