7 Initiation - SQL
Initiation
Pages HTML
Exos de programmation
Code SQL
Fichiers Batch
La compression
Divers Tutoriels
Le FTP

Contactez-nous

1. Présentation du langage SQL
2. Utilisation de SELECT pour manipuler des données
3. Les opérateurs SQL
4. Les fonctions de regroupement
5. Les requêtes de création
6. Types de champs
7. Les requêtes de mise à jour
 

1. Présentation du langage SQL

Le SQL est un langage de programmation de base de donnée qui fut créé avec la naissance des bases de données relationnelles (Ex: Une base de donnée avec une table qui traite les commandes et une table qui recense les clients; ces deux tables sont liées par le champ "Client").

Le SQL est utilisé à l'intérieur même d'un programme traitant des bases de données. Ainsi lorsque vous programmez en Delphi ou en Visual Basic, ces langages permettent via le biais d'objets DB ou DATA d'insérer au sein même du code des requêtes SQL. Il est aussi possible d'utiliser des requêtes SQL dans les applications MS-ACCESS, DBASE, ORACLE, FOXPRO...

retour

2. Manipuler des données

Les instructions de manipulation de données (DML) sont utilisées pour extraire des enregistrements dans les tables, les mettre à jour et ajouter ou supprimer des enregistrements dans des tables.

La requête SELECT
 

L'instruction SELECT sert à extraire les enregistrements. En règle générale, SELECT est le premier mot contenu dans une instruction SQL. Voici la forme globale de SELECT:

SELECT champs
     FROM table IN base_de_donnée
     WHERE condition_de_recherche
     GROUP BY champs
     HAVING critère_du_groupe
     ORDER BY champs
     WITH OWNERACCESS OPTION

Requêtes de base
Cette requête est la plus simple, elle renvoie tous les enregistrements de la base de donnée Etudiants:

SELECT * FROM Etudiants;
SELECT * FROM "etudiants.dbf";

Cette requête renvoie les enregistrements de la colonne Nom:

SELECT Nom FROM Etudiants;

On peut exécuter une requête sur plusieurs table. Si le nom des champs est identique, on spécifie la table source:

SELECT Etudiants.Nom , Professeurs.Nom , [Date de Naissance] FROM Etudiants,Professeur;

 Filtrage et tri de résultats de requête
 
DISTINCT

Pour ne pas tenir compte des enregistrements qui contiennent des données dupliquées dans les colonnes selectionnées, on utilise le mot clé DISTINCT. Ainsi, si dans la table Etudiants on trouve deux fois le nom DUPONTEL, un seul enregistrement sera renvoyer.

SELECT DISTINCT Nom FROM Etudiants;

ORDER BY

Pour trier des enregistrements extraits par la requête, on utilise ORDER BY suivi de la ou les colonnes servant de clé de tri, puis l'ordre croissant ou décroissant. En général, on la place à la fin de la requête:

SELECT * FROM Etudiants ORDER BY Nom ASC;

ASC est le tri par défaut.

SELECT Nom,Prénom FROM Etudiants ORDER BY Nom DESC;

On peut trier plusieurs colonnes, un ordre de priorité est établi.

SELECT Nom,Prénom FROM Etudiants ORDER BY Nom,Prénom;

TOP

Pour renvoyer uniquement un certain nombre d'enregistrements compris dans la portion supérieur ou inférieure d'une plage spécifiée par ORDER BY, on utilise TOP. La requête suivante donne les 5 meilleurs étudiants:

SELECT TOP 5 Nom,Prénom FROM Etudiants ORDER BY Notes DESC;

On peut utiliser le mot clé PERCENT pour renvoyer un pourcentage d'enregistrements.

SELECT TOP 10 PERCENT Nom,Prénom FROM Etudiants ORDER BY Notes DESC;

WHERE

Ce mot clé est très utile lorsque l'on veut faire une selection précise parmi les enregistrements. Voici comment obtenir les étudiants agés entre 18 et 20 ans:

SELECT Nom,Prenom FROM Etudiants WHERE Age BETWEEN 18 AND 20;

On peut avoir jusqu'à 40 conditions reliés par des AND et OR avec une clause WHERE:

SELECT Nom,Prenom FROM Etudiants WHERE (Age BETWEEN 18 AND 20) AND ( ( [Lieu d'habitations] ='Angers') OR  ( [Lieu d'habitations] ='Nantes') )
 
WHERE utilise une grande quantité d'opérateurs SQL.

GROUP BY

GROUP BY permet de combiner des enregistrements dont les valeurs sont identiques dans la liste de champ spécifiée en un seul enregistrement. Une valeur résumée est créée pour chaque enregistrement si vous spécifiez une fonction de regroupement. Ainsi pour obtenir la moyenne des notes des étudiants par origine:

SELECT Origine, Avg( Notes ) FROM Etudiants GROUP BY Origine;

HAVING

HAVING permet de spécifier les enregistrements regroupés avec GROUP BY. Elle s'utilise de la même manière que WHERE. La requête suivante donne le nombre d'élèves par promo ayant obtenu une note supérieure à 10:

SELECT Promo,Count( Nom ) FROM Etudiants GROUP BY Promo HAVING Notes > 10;

HAVING utilise, comme WHERE, les opérateurs SQL.

retour

3. Les opérateurs SQL (à utiliser généralement avec WHERE et HAVING)

Les opérateurs logiques
 
 
Opérateur
Signification/Utilisation
AND
ET
OR
OU
NOT
NON
 
 

Les opérateurs de comparaisons
 
Opérateur
Signification/Utilisation
<
Inférieur à 
<=
Inférieur ou égal à
>
Supérieur à
>=
Supérieur ou égal à
=
Égal à
<>
Différent de 
BETWEEN
Utilisé pour spécifier une plage de valeurs
LIKE
Utilisé dans la correspondance de motifs (casse des caractères)
IN
Utilisé pour spécifier des enregistrements dans une base de données
 

retour

4. Les fonctions de regroupement (à utiliser avec GROUP BY)

       
      Fonction de regroupement Description/Utilisation
      AVG
      Obtenir la moyenne des valeurs contenues dans un champ donné.
      COUNT
      Renvoyer le nombre d'enregistrements compris dans la sélection.
      SUM
      Renvoyer la somme de toutes les valeurs contenues dans un champ donné.
      MAX
      Renvoyer la valeur la plus élevée dans un champ donné.
      MIN
      Renvoyer la valeur la moins élevée dans un champ donné.

5. Les requêtes de création

  1. Base
    1. Création
      Create Database Nom_Base
    2. Destruction
      Drop Database Nom_Base
  2. Table
    1. Création normale
      Create Table Nom_Table (Type INTEGER, Libelle CHAR(20));
    2. Création avec un index
      Create table Oeuvres (COeuvre Counter CONSTRAINT PrimaryKey PRIMARY Key, NOeuvre Char)
    3. Création avec deux index (et plus)
      Create table PistChan (CPiste Integer, CChanteur Integer, CONSTRAINT PrimaryKey UNIQUE (CPiste, CChanteur))
    4. Destruction
      Drop Table Nom_Table



6. Types de champs

  • CHAR(X) : chaine de X caractères (le X est facultatif)
  • INTEGER : nombre entier
  • LONGTEXT : texte complet (avec saut de ligne...)
  • COUNTER : compteur



7. Les requêtes de mise à jour

  1. Ajout d'element
    1. Directement
      Insert Into Nom_Table 
      
      Values (13,"Essai");
    2. A l'aide d'une table
      Insert Into OldStat
      
      Select * From Stat Where StatE = "I";
  2. Mise à jour d'un element existant
    1. Directement
      update Nom_Table
      
      set Type=1
      
      where Libelle="Essai";
    2. Par l'intermediaire d'une autre table
      update Nom_Table, Table_Bis
      
      set Libelle=LibelleBis
      
      from Nom_Table, Table_Bis
      
      where
      
        Type = Type_Bis;
N'hésitez pas à nous envoyer vos commentaires afin de faire évoluer cette page. Nous pouurons ainsi répondre aux besoins de chacuns. Merci.

 
Mise à jour : le 17-02-99