insert est la suivante.
Exemple 53. Forme générale de l'
insert
INSERT INTO nom_de_table
[(liste_de_colonnes)]
VALUES (liste_de_valeurs)
[,(liste_de_valeurs)]
Exemple 54. Insertion directe d'une sous-requête
INSERT INTO nom_de_table [(liste_de_colonnes)] clause_select
Marins dans une table
Noms_marins. Commençons par créer cette table.
Écrivons à présent la copie proprement dite.
Exemple 55. Copie partielle d'une table dans une autre
create table Noms_marins (
nom varchar(32),
prenom varchar(32)
) ;
insert into Noms_marins
select (nom, prenom)
from Marins
where ddmort is null ;
nom et
prenom dans la table d'arrivée, et seulement les marins qui sont encore en vie. Bien sûr cette copie est réalisée au moment où la requête est lancée. Le fait d'ajouter des éléments à la table
Marins ne met pas à jour la table
Noms_marins.
Remarquons tout d'abord que, techniquement, la liste des colonnes en paramètre de l'
insert est optionnelle. Bien qu'elle le soit effectivement, il est très dangereux de ne pas la mettre, surtout dans le cas où toutes les données insérées ont même type, par exemple
varchar.
Effectivement, si la liste des colonnes n'est pas précisée, le serveur va en construire une, dans un ordre qu'il est parfois impossible de connaître à l'avance. Les valeurs qui suivent vont donc venir se ranger dans la table, dans des colonnes choisies au petit bonheur la chance. Comportement fortement déconseillé...
Préciser systématiquement cette liste est une précaution élémentaire, qui de plus, permet de réaliser des insertions en ne précisant qu'une partie des colonnes d'une table, et en laissant le serveur insérer les valeurs par défaut, ou
null sur les autres colonnes.
Lors d'une insertion, les contraintes d'intégrité s'appliquent. Il est donc possible qu'une insertion soit refusée par le serveur.