4. Ajouter des données : insert

4.1. Forme générale de l' insert

Dans une base de données, les données (précisément) se réduisent à des lignes de tables. Insérer des lignes dans une table est donc un des éléments fondamentaux de la chaîne de traitement de ces données. La syntaxe générale d'une commande 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)]

4.2. Copie d'une table dans une autre

Il existe également une forme qui permet d'insérer directement le résultat d'une requête dans une table, et donc de réaliser une copie, totale ou partielle.

Exemple 54. Insertion directe d'une sous-requête

INSERT  INTO nom_de_table
   [(liste_de_colonnes)]
   clause_select

Voyons comment on peut utiliser ce mécanisme pour copier une partie de la table 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 ;

Dans notre exemple, nous ne recopions que les colonnes 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.
Introduction à SQL
Retour au blog Java le soir
Cours & Tutoriaux
Table des matières
Introduction
1. Un peu d'histoire
2. Organisation de la présentation
Un premier exemple
1. Un premier exemple
1.1. Construction d'une première table
1.2. Enregistrer quelques données
1.3. Extraire des données
2. Trier, classer, calculer
2.1. Classer des données
2.2. Trier des données
2.3. Effectuer des calculs
2.4. Mise à jour d'une valeur
3. Sélection sur plusieurs tables
3.1. Ajout du lieu de naissance
3.2. Clés primaires et clés étrangères
Organisation des données
1. Introduction
2. Bases de données, schémas et tables
2.1. Création d'une table
2.2. Création d'une colonne
2.3. Contraintes sur une table
2.4. Nommage des contraintes
2.5. Exemples de création de tables
2.6. Modification d'une table
2.7. Effacement d'une table
2.8. Remarques sur restrict et cascade
3. Types de données
3.1. Les types numériques
3.2. Les types caractère
3.3. Les types temporels
3.4. Les types binaires
3.5. Type auto-incrémental de MySQL
3.6. Type auto-généré de Derby
3.7. Séquences d'Oracle
Manipulation des données
1. Introduction
2. Extraire des données : select
2.1. Extraire des données d'une table unique
2.2. Clause where
2.3. Requêtes imbriquées
2.4. Fonctions d'agrégation, groupage
3. Supprimer des données : delete
3.1. Forme générale du delete
3.2. Effacement en cascade
3.3. Fonctionnement du delete
4. Ajouter des données : insert
4.1. Forme générale de l' insert
4.2. Copie d'une table dans une autre
5. Mettre à jour des données : update
5.1. Forme générale de l' update
5.2. Mise à jour avec une requête imbriquée
Interrogations sur plusieurs tables
1. Introduction
2. Formes normales
2.1. Première forme normale
2.2. Deuxième forme normale
2.3. Troisième forme normale
2.4. Formes normales d'ordres supérieurs
3. Relations entre éléments
3.1. Cardinalité d'une relation
3.2. Relation 1:1
3.3. Relation 1:p
3.4. Relation p:1
3.5. Relation n:p
4. Jointures
4.1. Jointure interne
4.2. Jointure externe
4.3. Auto-jointure
5. Unions
6. Vues
6.1. Création d'une vue
6.2. Exemples de vues
Transactions
1. Introduction
2. Isolation des transactions
2.1. ACIDité d'une transaction
2.2. Définition de l'isolation
3. Gestion d'une transaction
3.1. Mode auto-commit
3.2. Fixer le niveau d'isolation
3.3. Démarrer une transaction
3.4. Terminer une transaction
3.5. Remarques importantes
Index
1. Introduction
2. Manipulation d'index
2.1. Création automatique d'index
2.2. Création manuelle d'index