Un premier exemple

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

1. Un premier exemple

Cette première partie se propose de construire rapidement une première table simple, d’enregistrer dedans quelques lignes et d’écrire quelques requêtes pour les extraire. Nous reverrons dans les parties suivantes la syntaxe détaillée de chacune des commandes utilisées ici. Le but de cette partie est d’avoir un premier aperçu du langage SQL, de ses principales fonctionnalités, qui sont aussi les plus utilisées.

1.1. Construction d'une première table

Créons une table Marins destinée à recevoir des noms de marins du XVème siècle à nos jours, avec leur date de naissance et éventuellement de mort. Cette table contiendra les données suivantes.

Tableau 1. Contenu de la table Marins

Nom Prénom Année de naissance Année de mort
Auguin Christophe 1959
Bart Jean 1650 1702
Cartier Jacques 1491 1557
Dumont d'Urville Jules 1790 1842
Dupleix Joseph 1697 1763
Moitessier Bernard 1925 1994
Montcalm Louis 1712 1759
Surcouf Robert 1773 1827
Tabarly Eric 1931 1998

Nous avons besoin de quatre champs pour cette table : deux champs textuels et deux champs numériques. Il est bien sûr possible de rentrer les années de naissance et de mort en tant que dates, mais nous nous bornerons dans cet exemple à les considérer comme des entiers, dans un but de simplification. Nous verrons la problématique du stockage des dates plus loin. Une syntaxe possible pour créer une telle table est la suivante :

Exemple 1. Création d'une première table

create  table Marins (
	nom  varchar(30),
	prenom  varchar(30),
	ddnaissance  int,
	ddmort  int) ;

Il ne faut pas prendre cet exemple pour plus que ce qu'il n'est : un premier exemple introductif. Pour être plus clair : cette table ne comporte entre autres pas de déclaration de clé primaire, pas d'index, il ne s'agit vraiment pas d'un exemple à suivre ! On distingue deux parties dans cette déclaration :
  • L’instruction create table, suivie immédiatement du nom de la table à créer ;
  • Une suite de déclarations séparées par des virgules, qui spécifient les colonnes de la table. Chaque déclaration de colonne est composée du nom de la colonne, suivi de son type. Le type varchar(30) est un type chaîne de 30 caractères, et int un type entier. Ces déclarations sont placées entre parenthèses.

1.2. Enregistrer quelques données

L’enregistrement des données dans une table se fait ligne par ligne. Voyons tout de suite un exemple.

Exemple 2. Une première insertion de ligne

insert  into Marins (nom, prenom, ddnaissance, ddmort)
    values ('Bart',  'Jean', 1650, 1702) ;

La commande insert into est immédiatement suivie du nom de la table dans laquelle on insère les données. Suit ensuite, entre parenthèses, la liste des champs et l’ordre dans lequel ils vont être spécifiés. Suit ensuite le mot-clé values, et enfin les valeurs des champs, dans l’ordre de la déclaration. Notons que les valeurs des champs de type chaîne de caractères sont déclarés entre quotes. L’utilisation des quotes ou des guillemets varie d’un serveur à l’autre. Pour insérer une quote dans une chaîne de caractères, il faut la faire précéder d’une autre quote :

Exemple 3. Chaîne de caractères avec quotes

insert  into Marins (nom, prenom, ddnaissance, ddmort) 
    values ('Dumont d''Urville',  'Jules', 1790, 1842) ;

On peut insérer des données en ne spécifiant pas tous les champs de la table :

Exemple 4. Insertion d'une ligne partielle

insert  into Marins (nom, prenom, ddnaissance) 
    values ('Auguin',  'Auguin', 1959) ;

On peut également insérer plusieurs lignes à la fois, en séparant les éléments par des virgules :

Exemple 5. Insertion d'une ligne partielle

insert  into Marins (nom, prenom, ddnaissance, ddmort) 
    values ('Bart',  'Jean', 1650, 1702), 
          ('Cartier',  'Jacques', 1491, 1557) ;

Il est également possible d'insérer des données sans préciser le nom des colonnes à insérer. Cette façon de faire est dangereuse, pour de nombreuses raisons, et à proscrire absolument.

1.3. Extraire des données

Le mot-clé qui permet d’extraire des données d’une table est select. La façon la plus simple d’utiliser cette commande est la suivante :

Exemple 6. Une première sélection de données

select nom, prenom  from Marins ;

La liste des champs que l’on veut afficher suit le mot-clé select, suivi du mot-clé from, puis du nom de la table dans laquelle on souhaite effectuer la sélection. Le résultat de cette commande est le suivant :
NOM                            PRENOM
------------------------------ ------------------------------
Bart                           Jean
Cartier                        Jacques
Dumont d'Urville               Jules
Dupleix                        Joseph
Montcalm                       Louis
Surcouf                        Robert
Tabarly                        Eric
Moitessier                     Bernard
Auguin                         Auguin
Introduction à SQL
Retour au blog Java le soir
Cours & Tutoriaux