Docstoc

SQL Synthèse

Document Sample
SQL Synthèse Powered By Docstoc
					                   Principe de base d’un SQBD relationnel.

1)Structure d’un SGBDR.




                  Générateur d’états                             Généraliser requêtes
                                                 SQL


                  API                                                     Générateur
                                             Dictionnaire
                  Client/                                                  d’écran
                  Serveur
                                              Moteur
                                             Relationnel




                  Générateur d’application                        Outils CASE




Le dictionnaire contient la structure des données (tables+colonnes, identifiants et les
contraintes).
Le SGBD utilise le dico à chaque requête. Il vérifie si les contraintes sont respectées, il va
optimiser les requêtes en choisissant le meilleur chemin d’accès (SQL langage non
procédural).
Le dictionnaire assure aussi le contrôle d’accès.


2)SQL : Structued Query Language (Langage d’Interrogation Structuré).

Les instructions SQL se répartissent en 3 familles :
                  SQL INTERACTIF                                  SQL                SQL
      LDD                LMD                 LCD               INTEGRE            DYNAMIQUE
    CREATE             SELECT              GRANT               DECLARE
      DROP             INSERT              REVOKE               CURSOR
     ALTER              DELET             CONNECT                FETCH
                      UPDATE                  …

LDD Data Definition Language
LMD Data Manspulation Language
LCD Data Control Language
                                                   SQL

           Vocabulaire =>   Attribut= champ= propriété      Clause= ordre= commande

      COMMANDES                      FONCTIONS                                EXEMPLES
   SELECT                   Permet de visualiser les           Impossible sans la commande FROM
                             contenus d’une ou plusieurs
                             tables.
   FROM                     Recherche la table indiquée.     Visualiser nom, poste et le salaire des
                                                               employés :
                                                             SELECT nom, poste,sal
                                                             FROM EMP ;
   *                        L’étoile permet de visualiser    Visualiser la table employés :
                             tout les champs d’une ou        SELECT *
                             plusieurs tables.               FROM EMP ;

                                                            Visualiser la table département :
                                                           SELECT *
                                                           FROM DEPT ;
   DISTINCT                 Pour supprimer les             Visualiser les postes des employés :
                             redondances.                  SELECT DISTINCT poste
                                                           FROM EMP ;
   WHERE                    Condition                      Visualiser les listes des directeurs :
                                                           SELECT *
                                                           FROM EMP
                                                           WHERE poste= DIRECTEUR ;
   AND                      On utilise AND quand les       Visualiser les directeurs qui travaillent dans
                             champs voulus ne sont pas les      le département 30 :
                             mêmes.                        SELECT *
                                                           FROM EMP
                                                           WHERE poste=  DIRECTEUR 
                                                           AND dep= 30 ;
                                                           Ici les champs ( poste et dep ) ne sont pas
                                                           identiques, l’utilisation de AND est donc
                                                           justifiée.

                                                              Visualiser toutes les informations sur les
                                                               secrétaires qui gagnent + de 7000 FF :
                                                             SELECT *
                                                             FROM EMP
                                                             WHERE poste= SECRETAIRE
                                                             AND sal > 7000 ;
   OR             On utilise OR quand on            Visualiser les directeurs et les secrétaires.
                   recherche plusieurs valeurs      SELECT *
                   pour un champ.                   FROM EMP
                                                    WHERE poste=  DIRECTEUR 
                                                    OR poste = SECRETAIRE  ;
                                                    Ici pour le même champ poste on demande la
                                                    recherche de deux valeurs différentes :
                                                    SECRETAIRE et DIRECTEUR .
                                                    Sachant que poste ne peut pas prendre deux
                                                    valeurs en même temps, on utilise donc OR .

                                                     Visualiser le nom, poste et salaire des
                                                      employés qui gagnent plus de 22 000 FF ou
                                                      le nom, poste et salaire de tout les directeurs.
                                                    SELECT nom, poste, sal
                                                    FROM EMP
                                                    WHERE poste=  DIRECTEUR 
                                                    OR sal > 22 000 ;

                                                     Rechercher les informations concernant un
                                                      employé dont le nom devrait etre soit
                                                      GIRAUD ou GIROT ou BIRAUD.
                                                    SELECT nom
                                                    FROM EMP
                                                    WHERE nom =GIRAUD
                                                    OR nom = GIROT
                                                    OR nom = BIRAUD ;
   NOT            Certains programmes               Visualiser les directeurs qui ne travaillent pas
   IS NOT NULL    n’acceptent pas NOT=, mais         dans le département 30 :
   IS NULL        != ou <>                         SELECT *
                                                    FROM EMP
                                                    WHERE poste=  DIRECTEUR 
                                                    AND dep NOT = 30 ;

                                                     Visualiser les articles qui ont une couleur :
                                                    SELECT *
                                                    FROM Article
                                                    WHERE art_coul IS NOT NULL;

   IN ou NOT IN   Recherche de plusieurs             Prenons le même exemple qu’avec OR :
                   valeurs pour un champs.             « Visualiser les directeurs et les secrétaires :
                   S’utilise à la place de = ou    SELECT *
                   quand une requète imbriquée      FROM EMP
                   renvoie plusieurs valeurs.       WHERE poste IN (DIRECTEUR
                   De plus il a le même rôle que    ,SECRETAIRE ); »
                   OR .
                                                     Visualiser le nom des départements de code
                                                      10 et 30 :
                                                    SELECT nom
                                                    FROM DEPT
                                                    WHERE dept IN (10, 30) ;

                                                    
   ALL             Comme IN il permet de              SELECT datconc, numconc, nomlieu
                    renvoyer plusieurs valeurs.        FROM CONCERT
                    Mais IN ne peut s’employer         WHERE numconc <> ALL (SELECT
                    avec >, <, =, <>                    numconc
                    alors qu’avec ALL c’est                                    FROM
                    possible.                           OEUVRE
                                                                               WHERE
                                                        formoeuv =
                                                                        "OEUVRE
                                                        SYMPHONIQUE" );
                                                    
   LIKE            Recherche les chaînes de         Visualiser le nom des employés dont la
                    caractères.                       troisième
                    _ équivaut à un caractère         lettre est R :
                    (access accepte uniquement ?    SELECT nom
                    )                               FROM EMP
                    _ _ équivaut à deux           WHERE nom LIKE _ _ R % ;
                    caractères
                     %  équivaut à plusieurs        Visualiser les employers dont la première
                    caractères (access accepte         lettre du nom n’est pas compris entre D et
                    uniquement  *  )                 M:
                                                    SELECT *
                                                    FROM EMP
                                                    WHERE nom LIKE > M%
                                                    OR nom LIKE < D% ;
   BETWEEN         Recherche les valeurs d’un       Visualiser le nom des employés qui ont un
                    champs dans un intervalle.         salaire compris entre 9600 et 12 000 FF :
                                                    SELECT nom
                                                    FROM EMP
                                                    WHERE sal BETWEEN 9600 AND 12
                                                    000 ;

                                                     Visualiser les employers dont la première
                                                      lettre du nom n’est pas compris entre D et
                                                      M:
                                                    SELECT *
                                                    FROM EMP
                                                    WHERE nom NOT BETWEEN LIKE
                                                    D% AND M% ;
   (opérateur      Dans la clause SELECT on         Visualiser pour chaque commercial son
    arithmétique)   peut effectuer des opérations     salaire complet ( c’est à dire sal+com ) et son
                    avec les valeurs numériques       nom :
                    des différents champs.          SELECT nom, sal+com
                                                    FROM EMP
                                                    WHERE poste= COMMERCIAL ;
   SUM             C’est une fonction agrégat.      Visualiser la somme des salaires de tous les
                    Somme des valeurs d’un            employés :
                    champ.                          SELECT SUM (sal)
                                                    FROM EMP ;
   MAX             C’est une fonction agrégat.      Visualiser l’employé gagnant le salaire le
                    Maximum des valeurs d’un          plus important, l’employé gagnant le salaire
                    champ.                            le moins important et faire la moyenne des
                                                      salaires de tous les employés :
                                                    SELECT MAX (sal), MIN (sal), AVG (sal)
   MIN             C’est une fonction agrégat.          FROM EMP ;
                    Minimum des valeurs d’un
                    champ.

   AVG             C’est une fonction agrégat.
                    Moyenne des valeurs d’un
                    champ.
   COUNT           C’est une fonction agrégat.
                    Comptage du nombre                    Visualiser le nombre d’employés gagnants
                    d’occurrence.                          plus de 10000 FF :
                                                         SELECT COUNT (*)
                                                         FROM EMP ;
   AS              Permet de nommer un champ             SELECT SUM (sal) AS
                                                           Somme_des_salaires
                                                          FROM EMP ;
                                                          SELECT AVG (sal) AS
                                                           Moyenne_des_salaires, MIN (sal) AS
                                                           Minimum_des_salaires
                                                            FROM EMP ;
   ORDER BY        Ordonnancement des                    Visualiser les salaires des employés par ordre
                    résultats.                             croissant en indiquant le nom de chaque
                    Il fait un tri : classe et affiche     salarié :
                    les valeurs d’un champ par           SELECT sal , nom
                    ordre croissant.                     FROM EMP
                                                         ORDER BY sal ;
   ORDER BY DESC   Ordonnancement des                    Visualiser les salaires des employés par ordre
                    résultats.                             décroissant en indiquant le nom de chaque
                    Il fait un tri : classe et affiche     salarié :
                    les valeurs d’un champ par           SELECT sal , nom
                    ordre décroissant.                   FROM EMP
                                                         ORDER BY sal DESC ;

                                                          Visualiser les salaires en ordre croissant, les
                                                           postes en ordre décroissant des employés en
                                                           indiquant le nom de chaque employé :
                                                         SELECT sal, poste, nom
                                                         FROM EMP
                                                         ORDER BY sal, poste DESC ;

                                                         
                                                      Visualiser les matricules des employés en
                                                      ordre decroissant en indiquant le nom et le
                                                      poste de chaque employé :
                                                    SELECT sal, poste, matr
                                                    FROM EMP
                                                    ORDER BY 3 DESC ;
   GROUP BY        Partition d’une table.           Visualiser la somme et la moyenne des
                    Regroupe les valeurs des          salaires en regroupant les postes et les
                    champs voulus et les classes      départements en ordre croissant :
                    en ordre croissant (un tri).    SELECT poste, dep
                    Après les avoir regrouper, elle SUM (sal)
                    applique (s’il y a lieu), sur   AVG (sal)
                    chaque groupe, les opérations FROM EMP
                    statistiques tels SUM, MIN, GROUP BY poste, dep ;
                    MAX, AVG et COUNT.
   HAVING          HAVING a la meme fonction  Visualiser la moyenne des salaires pour tous
                    que la clause WHERE sauf          les départements ayant au moins 3 salariés :
                    qu’elle s’utilise uniquement    SELECT dep
                    avec GROUP BY                   AVG (sal)
                                                           FROM EMP
                                                           GROUP BY dep
                                                           HAVING COUNT (*) > = 3 ;
   Auto-jointure           Le principe de l’auto-          Visualiser le nom du supérieur direct de
                            jointure est de créer 2 tables     chaque employé. Préciser le nom et poste des
                            identiques. Chaque table étant     employés :
                            spécifique à une valeur.       SELECT E nom, E poste, S nom
                                                           FROM EMP E, EMP S
                                                           WHERE E.sup = S.matr ;
                                                           Ici nous avons crée 2 tables identiques : EMP E
                                                           (pour les employés) et EMP S (pour les
                                                           supérieurs). On a demandé au programme de
                                                           visualiser le nom du supérieur quand son
                                                           matricule correspond au code supérieur d’un
                                                           employé (voir tableau).

                                                            Visualiser le nom des employés qui ont le
                                                             meme poste que Chatel (Ingénieur) :
                                                           SELECT E nom
                                                           FROM EMP E, EMP S
                                                           WHERE S.nom = CHATEL
                                                           AND E.poste = S.poste ;

   Sous requète corrélée



                                                             Visualiser le nom des employés qui ont le
                                                              meme poste que Chatel (Ingénieur) :
                                                           SELECT nom
                                                           FROM EMP
                                                           WHERE poste = ( SELECT poste
                                                                              FROM EMP
                                                                              WHERE S.nom =
                                                            CHATEL ) ;
   #MM/JJ/AA#              Pour les dates                 
                                                          
                                                          

				
DOCUMENT INFO
Shared By:
Tags:
Stats:
views:22
posted:10/7/2012
language:
pages:6