- Commande
INSERT INTO
- Syntaxe standard :
INSERT INTO nom_table VALUES (val1, ...,valn);
INSERT INTO nom_table(col1, ...,coln)
VALUES (val1, ..., vali, ..., valn);
INSERT INTO nom_table(col1, ...,coln) SELECT ... FROM ...;
vali peut être au choix :
- une valeur de même type que la colonne
coli ciblée
- la valeur
NULL si la colonne n'est pas obligatoire (définie avec l'option NOT NULL),
- la valeur
DEFAULT Si la colonne est de type SERIAL ou associée à une valeur par défaut (définie avec l'option DEFAULT ou AUTO_INCREMENT)
- Toutes les colonnes obligatoires de la table (déclarées
NOT NULL) et sans valeur par défaut doivent être renseignées lors de l'insertion
- Syntaxe PostgreSQL et MySQL :
INSERT INTO nom_table(col1, ...,coln) VALUES
(val11, ..., val1n),
(val21, ..., val2n),
...
(valp1, ..., valpn);
- Exemples :
INSERT INTO professeur VALUES (1, 'Amanton', 'Laurent', NULL, NULL, 'MCF');
INSERT INTO professeur (prof_id, prof_nom, prof_prenom, prof_statut)
VALUES (2, 'Ponty', 'Jean-Luc', 'MCF');
INSERT INTO professeur (prof_id, prof_nom, prof_prenom, prof_statut)
VALUES (3, 'Jay', 'Véronique', 'MCF'),
(4, 'Balev', 'Stefan', 'MCF'),
(5, 'Arfi', 'Mustapha', 'MCF'),
(6, 'Fournier', 'Dominique', 'MCF') ;
- Syntaxe Oracle :
INSERT ALL
INTO nom_table(col1, ...,coln) VALUES (val11, ..., val1n)
INTO nom_table(col1, ...,coln) VALUES (val21, ..., val2n)
...
INTO nom_table(col1, ...,coln) VALUES (val21, ..., val2n)
SELECT * FROM dual;
- Syntaxe lourde et très limitée : pas d'utilisation de séquence par défaut sur les clés ni de colonne identité auto-générée !
- Exemple :
INSERT ALL
INTO etudiant VALUES (20000003, 'Dalton', 'Joe', 'Pénitencier fédéral', TO_DATE('1865-04-01','YYYY-MM-DD'), NULL)
INTO etudiant VALUES(20000004, 'Dalton', 'Jack', 'Pénitencier fédéral', TO_DATE('1866-07-04','YYYY-MM-DD'), NULL)
INTO etudiant(etud_num, etud_nom, etud_prenom, etud_adresse, etud_naissance)
VALUES(20000005, 'Dalton', 'William', 'Pénitencier fédéral', TO_DATE('1867-11-28','YYYY-MM-DD'))
INTO etudiant(etud_num, etud_nom, etud_prenom, etud_adresse, etud_naissance)
VALUES(20000006, 'Dalton', 'Averell', 'Pénitencier fédéral', TO_DATE('1868-12-25','YYYY-MM-DD'))
SELECT * FROM dual;