SQL norme 92 (SQL-2), fonctions évoluées

BoTTom |    Changer de couleur
 
                             La NORME SQL 92 
 
     Principales différences avec SQL400/400 (V2)
 
 
          CREATE TABLE
                       type de variable TIME WITH TIME ZONE
                                        TIMESTAMP WITH TIME ZONE
                                        (contiennent le décalage avec l'UTC)
                                           = méridien de greenwitch)
 
          ALTER TABLE nom-table
 
                ADD zone définition (ajout d'une colonne)
 
                MODIFY zone nouvelle-définition (modification d'une colonne)
 
                DROP zone (retrait d'une colonne)
 
 
 


|    Changer de couleur
 
          DROP VIEW nom-vue (RESTRICT / CASCADE)
 
               RESTRICT comme actuellement,suppression impossible
                        si d'autres vues s'appuient sur celle-ci.
 
               CASCADE  suppression de cette vue et de toutes les vues
                        qui l'utilisent.
 
 
          CREATE VIEW (AS SELECT ...WHERE ...)
 
                 WITH CHECK OPTION
 
                 la clause WHERE doit être vérifiée aussi pour
                  les mises à jour et les insertions.
 
                 Si vous faites une restriction sur le code société = 01
                  l'utilisateur ne peut pas insérer(par exemple) des
                  lignes sur une autre société.
 
          Valide sous DB2/400 depuis la V3R10 


|    Changer de couleur
 
          SELECT :
 
          - CASE (détermine l'apparition d'une colone fonction d'un test)
 
            SELECT nom, prénom, datenais,
                   CASE
                   WHEN situation = 'M' THEN 'marié'
                   WHEN situation = 'C' THEN 'célibataire'
                    ...
                   ELSE 'inconnu'
            FROM personnel
            ...
 
            remplacement d'un code par son libellé en clair.
 
          - COUNT(DISTINCT(nom-zone))
 
            indique le nombre de valeurs différentes rencontrées
 
            Valide depuis la V3R10 
 


|    Changer de couleur
 
          - jonction
 
            la jonction (norme 89) est définie de la manière suivante:
            SELECT .... FROM table1, table2
                        WHERE table1.zone1 = table2.zone1
 
            la jonction norme 92 peut être définie avec la clause JOIN,
             de la manière suivante:      valide depuis la V3R10 et une PTF 
 
            + produit cartésien:
 
            SELECT ... FROM table1 CROSS JOIN table2
            (équivalent au précédent sans clause WHERE)
 
            + jointure naturelle:
 
            SELECT ... FROM table1 NATURAL JOIN table2
            (SQL utilise les colonnes ayant même nom dans les deux tables)
 
             pour n'utiliser qu'une partie d'entre elles, ajouter:
            USING(nom-zone)


|    Changer de couleur
 
            + jointure conditionnelle
 
            SELECT ... FROM table1 JOIN table2 ON zone1 = zone2
 
            (toute expression logique est acceptée après ON)
 
            + auto-jointure
 
            SELECT ... FROM table1 a JOIN table1 b ON a.zone1 = b.zone1
 
            Les jointures sont par défaut internes
             (elles n'affichent que les enregistrements en correspondance)
 
            On parle de INNER JOIN (certains SGBD acceptent cette clause)
 
            + jointure externe (OUTER JOIN)
 
            on parle de LEFT OUTER JOIN quand on désire tous les
             enregistrements du fichier1 (celui à gauche du mot JOIN)
             qu'ils soient ou non en correspondance avec le fichier2
 


|    Changer de couleur
            on parle de RIGHT OUTER JOIN quand on désire tous les
             enregistrements du fichier2 (celui à droite du mot JOIN)
             qu'ils soient ou non en correspondance avec le fichier1
 
            et l'on parle de FULL OUTER JOIN quand on désire tous les
             enregistrements des deux fichiers.
 
            exemples : liste des clients, avec, pour ceux d'entre eux ayant
                        passé des commandes, la liste des commandes.
 
            SELECT codcli, nomcli, numcde, datcde, datliv
                   FROM clients c LEFT OUTER JOIN command d
                                ON c.numcli = d.numcli
                   WHERE ...
 
          - les opérateurs ensemblistes (nous connaissont déja UNION)
 
            SELECT .... INTERSECT SELECT ....
            (renvoie uniquement les lignes communes aux deux requêtes)
            SELECT .... EXCEPT SELECT ...
            (renvoie uniquement les lignes de la première requête ne se
              trouvant pas dans la deuxième).


|    Changer de couleur
 
 Nouveautés DB2/400 (V3R10)
 
  CREATE TABLE
                (NUMERODUCLIENT for column NOCLI CHAR(6), ...
 
  Les noms longs sont acceptés (il sont gérés comme des ALIAS)
 
   [128 C pour les objets / 30 c pour les colonnes]
 
  SQL interactif et QM modifiés pour en tenir compte
 
 
  SELECT COUNT(DISTINCT DEPT)
 
       renvoie le nombre de valeurs rencontrées (et non le nombre de ligne)
 
 
   SELECT NOM, SALAIRE + COM AS TOTPAIE FROM PERSON
 
      attribue le "nom" TOTPAIE à l'expression  SALAIRE + COM
 


|    Changer de couleur
 
 Extensions diverses:
 
   CREATE COLLECTION MABIB IN ASP 2
 
   EXEC SQL autorisé avec REXX !!
 
 Optimiseur:
 
   nouvelle commande  PRTSQLINF permet d'obtenir des informations
    sur un plan d'accès. [SQL PACKAGE]
 
   CHGQRYA
 
   nouvelle commande (niveau JOB)
      permettant de paramétrer le "QUERY GOVERNOR"'
 
    + utilisations abusives
 
    + autoriser le parallelisme (machines multi-processeurs)
 
 





©AF400