Documente online.
Username / Parola inexistente
  Zona de administrare documente. Fisierele tale  
Am uitat parola x Creaza cont nou
  Home Exploreaza
Upload





















































Aide mémoire sur les bases de données et SQL2

Franceza


TABLE DES MATIERES

BASE DE DONNEES

SYSTEME DE GESTION DE BASES DE DONNEES

INDEPENDANCE DES DONNEES ET DES PROGRAMMES

ARCHITECTURE D'UN SYSTEME BASE DE DONNEES




AVANTAGES DES BASES DE DONNEES

FONCTIONNEMENT D'UN SYSTEME BASE DE DONNES

LE MODELE RELATIONNEL

LES 10 CONCEPTS CLES DU MODELE RELATIONNEL

RELATION, DOMAINE ET ATTRIBUT

INTEGRITES

LES OPERATEURS

LE LANGAGE ALGEBRIQUE DE CODD

CREATION DES DOMAINES

CREATION DES RELATIONS

SUPPRESSION D'UN OBJET

MODIFICATION DE LA DEFINITION D'UN OBJET

MANIPULATION DES DONNEES

SCHEMA DE LA BASE DE DONNEES UTILISEES COMME EXEMPLE

SELECTION DE BASE

SELECTION DE BASE AVEC JOINTURE

LES APPORTS DE SQL2 DANS LA JOINTURE

EXPRESSIONS NUMERIQUES SQL

EXPRESSIONS CARACTERES SQL

EXPRESSIONS DATE-TEMPS SQL

EXPRESSIONS INTERVALLES SQL

L'OPERATEUR OVERLAPS

LE TRI

LE GROUPEMENT DES LIGNES

SELECTIONS IMBRIQUEES

CONDITIONS ALL, ANY ( SOME )

SOUS-QUESTIONS CORRELATIVES

EXISTS DANS LES SELECTIONS IMBRIQUEES

EXISTS ET LA VALEUR « NULL »

AJOUT DE DONNEES : INSERT

MODIFICATION DE DONNEES : UPDATE

SUPPRESSION DE DONNEES : DELETE

TRANSACTIONS ET ACCES CONCURRENTS


BASE DE DONNEES

Collection de données concernant un sujet, enregistrées sur des supports accessibles par l'ordinateur.

Cette collection possède les propriétés suivantes

·     848b110i      848b110i être un ensemble organisé ou encore structurés

·     848b110i      848b110i être un ensemble intégré

·     848b110i      848b110i correspondre fidèlement à la réalité

·     848b110i      848b110i contenir les données opérationnelles concernant un sujet donné

·     848b110i      848b110i être utilisable en même temps par plusieurs applications

·     848b110i      848b110i être non-redondante

SYSTEME DE GESTION DE BASES DE DONNEES

Un SGBD est le logiciel qui permet à l'utilisateur d'exploiter une Base de Données.

·     848b110i      848b110i Fonctions d'un SGBD

ð     848b110i   description et définition

ð     848b110i   Manipulation

ð     848b110i   Intégrité

ð     848b110i   confidentialité

ð     848b110i   concurrence d'accès

·     848b110i      848b110i Architecture d'un SGBD

ð     848b110i   Interface externe :

è    assure l'intégrité

è    assure la confidentialité

è    manipulation des données

è    reçoit les requêtes d'une application

è    contient la méta-base (catalogue)

è    la méta-base contient la description des objets, les contraintes d'intégrité, les autorisations d'accès .

ð     848b110i   Interface de stockage :

è    l'accès aux données sockées sur disques

è    on y retrouve les modules suivants :

è    journalisation et reprise après pannes pour sécurité de fonctionnement

è    gestionnaire de verrous pour concurrence d'accès

è    gestionnaire des index et algorithmes de tris pour minimiser les E/S

è    gestionnaire de l'espace disque

è    gestionnaire des tampons (lectures anticipées pour minimiser le nombre d'E/S physiques


INDEPENDANCE DES DONNEES ET DES PROGRAMMES

·     848b110i      848b110i approche traditionnelle par les fichiers

ð     848b110i   il fallait déclarer une structure dans chaque programme

ð     848b110i   si la structure changeait pour le programme 1, il fallait la changer dans le programme 2

·     848b110i      848b110i organisation autour d'une base de données

ð     848b110i   permet une centralisation des descriptions

ð     848b110i   offre aux programmes un moyen de désigner, grâce à un filtre, les données qu'il va utiliser

·     848b110i      848b110i objectifs fondamentaux d'un SGBD :

ð     848b110i   l'indépendance des données par rapport aux programmes de traitement

ð     848b110i   la prise en compte des associations entre les différentes données

ð     848b110i   le partage simultané des données entre plusieurs utilisateurs

·     848b110i      848b110i l'indépendance des données à deux niveaux :

ð     848b110i   l'indépendance des données au niveau logique signifie que l'on peut changer la structure logique globale sans devoir changer les programmes d'applications

ð     848b110i   l'indépendance des données au niveau physique signifie que la couche physique et l'organisation des données peuvent changer sans devoir changer la structure logique globale ou les programmes d'applications

ARCHITECTURE D'UN SYSTEME BASE DE DONNEES

Elle est divisée en 3 niveaux décrits au moyen de schémas.  Ils sont stockés dans la méta-base.

Le but de cette architecture est l'indépendance données/programme.

·     848b110i      848b110i Le niveau externe :

Plusieurs schémas externes correspondant chacun à une partie du système d'information.

Correspond à un ensemble de vues.

·     848b110i      848b110i Le niveau conceptuel :

Contient la description fidèle du système, càd les datas opérationnelles et les règles de gestion du système = modélisation du monde réel

·     848b110i      848b110i Le niveau interne :

Décrit l'implantation informatique du système d'informations.

Pour rendre l'implantation indépendante de l'environnement matériel et logiciel, on décompose en 2 sous niveaux :

ð     848b110i   niveau logique :

on intègre une technologie particulière : fichiers, BD, réseaux, hiérarchique ou relationnelle

ð     848b110i   niveau physique :

modes de stockage et moyens d'accès aux datas en se basant sur les contraintes volumétriques, d'exploitation de la BD et spécifiques à un environnement (matériel et logiciel) donné

L'administrateur doit :

è    construire le schéma logique

è    construire le(s) schéma(s) externe(s)

è    définir les droits d'accès des différents utilisateurs

è    spécifier les organisations physiques des datas et méthodes d'accès utilisées

è    établir des procédure assurant un bon fonctionnement

è    assurer le rendement maximum de la BD


AVANTAGES DES BASES DE DONNEES

Le gros avantage : la base de données fournit un moyen de contrôle centralisé des données.

·     848b110i      848b110i La redondance peut être réduite

·     848b110i      848b110i l'incohérence peut être évitée

·     848b110i      848b110i Les données peuvent être partagées

·     848b110i      848b110i Des règles de sécurités peuvent être établies

·     848b110i      848b110i L'intégrité peut être maintenue

·     848b110i      848b110i Les conflits d'accès peuvent être équilibrés

FONCTIONNEMENT D'UN SYSTEME BASE DE DONNES

Il faut savoir que dans le fonctionnement d'un système base de données, il y a différents éléments qui interviennent, ceux-ci sont :

ð     848b110i   Le SGBD qui assure le dialogue entre le programme d'applications et la base de données

ð     848b110i   Le système d'exploitation de l'ordinateur sur lequel le SGBD est en exploitation

ð     848b110i   Les différents schémas : externe, logique et physique qui sont stockés dans le catalogue de la base de données

ð     848b110i   Les tampons du programme d'applications dans lesquels vont être amenées les pages constituant la base physique.

Voici les différentes étapes du fonctionnement d'un système base de données :

·     848b110i      848b110i le programme d'application effectue sa requête au SGBD

·     848b110i     le SGBD vérifie l'existence de l'objet recherché au niveau du schéma externe et vérifie que l'utilisateur a bien un accès en lecture à cet objet



·     848b110i     le SGBD convertit la référence au schéma externe en référence au schéma logique

·     848b110i     le SGBD consulte le schéma physique pour déterminer dans quel fichier est stocké le contenu de la table consultée

·     848b110i     le SGBD demande à l'Operating System de lire ce fichier et de copier son contenu dans les buffers du Programme d'Application

·     848b110i     l'Operating System lit pour le compte du SGBD

·     848b110i     le SGBD dispose en mémoire du contenu de la table et il effectue la sélection demandée

·     848b110i     le SGBD place dans les  « variables » du programmes d'application le résultat de la recherche

LE MODELE RELATIONNEL

Ce modèle repose sur 3 grands piliers :

·     848b110i     des concepts structurels ou encore des objets

·     848b110i     des règles d'intégrité

·     848b110i     des opérateurs de manipulation

Une base de données relationnelle est construite uniquement à partir de relations et de domaines.

CODD établit les bases du modèle relationnel.  Ce modèle constitue un des apports les plus remarquables à la gestion de l'information que l'on peut résumé en 4 points :

ð     848b110i Rigueur des concepts de base :

ð     848b110i Simplicité des concepts de base :

ð     848b110i Puissance des opérateurs de manipulation :

ð     848b110i Diminution des coûts de développement et de maintenance

LES 10 CONCEPTS CLES DU MODELE RELATIONNEL

·     848b110i     objets :

1.   Relation

2.   Domaine/Attribut

3.   Clé primaire

4.   Domaine primaire (clé étrangère)

·     848b110i     contraintes :

5.   Intégrité de domaine

6.   Intégrité d'entité ou de relation

7.   Intégrité de référence

·     848b110i     opérateurs :

8.   Opérateurs sémantiques (liés aux domaines)

9.   Opérateurs ensemblistes : union, intersection, différence, produit cartésien

10. Opérateurs relationnels : sélection, projection, jointure, division

Les opérateurs ensemblistes et relationnels forment l'algèbre relationnel ou le langage algébrique de CODD.

RELATION, DOMAINE ET ATTRIBUT

RELATION :               Un sous-ensemble du produit cartésien de n ensembles.

Une relation R est un sous ensemble du produit cartésien de n ensembles Di appelés domaines.

                                    R Í D1 x D2  x D3 x . x Dn

                                    On appelle cet sous ensemble un n-tuplet ou tuple.

                                    N est appelé le degré de la relation.

ATTRIBUT :               Champs, valeurs .

DOMAINE :               Ensemble de valeurs admissible pour un attribut.

CLE PRIMAIRE :       Identifiant de la relation.

                                    Valeur qui permet d'identifier de manière unique un tuple d'une relation.

Une clé primaire est définie comme un ensemble K d'attributs vérifiant la double propriété suivantes :

Unicité :            les valeurs de clés primaires sont uniques et non nulles

Minimalité :      aucun attribut composant K ne peut être enlevé sans perdre la propriété d'unicité

DOMAINE PRIMAIRE :  C'est un domaine sur lequel une clé primaire est définie

CLE ETRANGERE :   Un attribut qui n'est pas clé primaire mais qui est défini sur un domaine primaire est appelé une clé étrangère

Une clé primaire multi-attributs est une clé primaire composée de plusieurs champs

INTEGRITES

INTEGRITE DE DOMAINE :

ð     848b110i contraintes structurelles

ð     848b110i les contraintes applicatives

L'intégrité de domaine porte sur le contrôle syntaxique et sémantique des valeurs présentes dans un attribut : seules les valeurs appartenant au domaine de l'attribut sont autorisées.

INTEGRITE D'ENTITE OU DE RELATION :

L'intégrité de relation concerne les valeurs de la clé primaire d'un relation qui doivent être unique et toujours définies (càd toujours spécifiées).

INTEGRITE DE REFERENCE :        L'intégrité de référence concerne les valeurs des clés étrangères.

LES OPERATEURS

OPERATEURS SEMANTIQUES :    Les opérateurs sémantiques permettent la création et la manipulation des domaines.

OPERATEURS ENSEMBLISTES :   Les opérateurs ensemblistes et relationnels forment l'algèbre relationnelle ou le langage de CODD.

                                                          

     UNION :                                        X = R1 È R2

                                                Ensemble des tuples appartenant à R1 ou à R2 ou aux 2 relations.

                                                Les doubles sont éliminés.

     DIFFERENCE :                             X = R1 - R2

                                                Ensemble des tuples appartenant à R1 et n'appartenant pas à R2.

     PRODUIT CARTESIEN :              X = R1 x R2

                                                Produit de chaque tuple de R1 et de chaque tuple de R2.

Les tuples sont constitués de toutes les concaténations possibles d'un tuple de R1 à un tuple de R2.

OPERATEURS RELATIONNELS :   Les deux opérateurs unaires sélection et projection combinés

avec les opérations ensemblistes union, différence et produit cartésien permettent de définir toutes les expressions correctes de l'algèbre relationnelle.

     PROJECTION :                             X = PROJECTION (R / C1, C2 , C3 . Cp)

L'opérateur de projection permet d'extraire certains attributs d'une relation, ou, ce qui revient au même d'en cacher certains.

     SELECTION :                                X = SELECTION (R / critère)

L'opération de sélection, selon un critère C, appliqué à une relation R donne une relation R' de même schéma dont les tuples sont ceux de R satisfaisant le critère C.


LES OPERATEURS ADDITIONNELS :        Ces opérateurs ont été imaginés pour faciliter la

réalisation de certaines requêtes (pour qu'elles soient moins longues).

     INTERSECTION :                         X = R1 Ç R2

                                    Ensemble des tuples appartenant à R1 et à R2.

     JOINTURE :                                  X = JOINTURE ( R1 , R2 / C)

                                                Pour simplifier les requêtes qui exigent un produit cartésien.

On fait le produit cartésien de R1 et R2 et on effectue une sélection selon le critère C.

- l'équijointure :           de R1 et R2 sur les attributs CR1 et Cr2 est la jointure selon le critère Cr1 = Cr2

- l'autojointure :           de R selon Ci est la jointure de R avec elle-même selon le critère C = C

- la jointure naturelle :   est l'équijointure de R1 et R2 sur tous  les attributs portant le même nom dans R1 et R2, suivie d'une projection qui permet de conserver un seul de ces attributs égaux de même nom.

     JOINTURE EXTERNE :                X = JOINT_EXTR ( R1 , R2 / C)

En faisant une simple jointure, on perd parfois des tuples qui pourraient nous être utiles dans une vue par exemple . pour remédier au problème, on fait une jointure externe qui se déroule en 2 étapes :

è    jointure de R1 et de R2

è    on ajoute les tuples de R1 et de R2 qui ne participent pas à la jointure, complétés avec des valeurs nulles pour les champs de l'autre relation.

     DIVISION :                                   X = R1 / R2

                                                Permet de répondre aux questions contenant les termes : « pour tous »


LE LANGAGE ALGEBRIQUE DE CODD

Il est formé des opérateurs ensemblistes et relationnels.

FERMETURE :           L'application d'un opérateur relationnel sur une ou des relations génère toujours une relation qui peut à son tour être utilisée comme argument de nouveaux opérateurs.

ENSEMBLISTE :       Il n'y a pas de variables représentant un tuple d'une relation.  Au lieu de cela, le résultat d'une requête est toujours un sous-ensemble d'une ou plusieurs relations.

NON-PROCEDURAL :            L'utilisateur qualifie le résultat qui l'intéresse (LE QUOI) ; le système détermine la meilleure procédure d'accès aux données recherchées (LE COMMENT).

UNIVERSEL :            Le langage algébrique de CODD possède un caractère universel.  Son étude constitue un réel tremplin pour l'étude des langages supportée par n'importe quel SGBD relationnel commercialisé.

INDEPENDANCE :   Les opérateurs sont basés sur des valeurs d'attributs ce qui constitue le seul moyen d'accès.  Tous les accès multi-relations sont effectués par des comparaisons entre valeurs d'attributs (définis sur des domaines compatibles) ce qui permet de très grandes potentialités d'accès totalement indépendantes de l'implantation.  Il n'y a pas de chemins d'accès explicites comme dans les autres schémas logiques (hiérarchiques et réseau).

CREATION DES DOMAINES

Commande :               CREATE DOMAIN

Il est possible de définir plusieurs attributs à partir du même domaine.

Cette commande permet de définir des contraintes d'intégrité directement attachées aux domaines.

CREATE DOMAIN  nom type [valeur] ;

Nom  = le nom du domaine que vous voulez créer.

Type = type de données reconnu par SQL

·     848b110i     les types caractères :

CHAR (n)                     chaîne de caractères de longueur fixe n

VARCHAR (n)           chaîne de caractères de longueur variable avec une longueur maximale étant n.

·     848b110i     les types numériques :

SMALLINT                 un entier signé codé sur 2 octets (-32768 et 32767)

INTEGER                    un entier signé codé sur 4 octets (-2 31 et 2 31 - 1)

DECIMAL (n)              correspond au type « packed decimal »

NUMERIC (n)             correspond au type « signed numeric »

FLOAT (n)                  nombre en virgule flottante codé sur 32 bits si n < 25.

Si n > ou = à 25, c'est un nombre en virgule flottante codé sur 64 bits.  La valeur maximal de n étant 53.

·     848b110i     les types dates :

datetime                       qui englobe les types DATE, TIME et TIMESTAMP




interval                         qui représente une période de temps :

                                   YEAR

                                   YEAR TO MONTH

                                   MONTH

                                   DAY

                                   DAY TO HOUR

                                   DAY TO MINUTE

                                   DAY TO SECOND

                                   HOUR

                                   HOUR TO MINUTE

                                   HOUR TO SECOND

                                   MINUTE

                                   MINUTE TO SECOND

                                   SECOND

Valeur  =        la valeur qui sera stockée dans l'attribut d'un tuple pour lequel on n'a pas précisé une valeur pour cet attribut, il s'agit donc de la valeur par défaut

                        DEFAULT constante             constante = nombre, chaine de caractères ou date

                        USER                                      nom de l'utilisateur

                        NULL                                      la valeur indéfinie des bases de données

                        CURRENT_DATE                   la date du jour

                        CURRENT_TIME                   le temps courant

                        CURRENT_TIMESTAMP      la date et l'heure courants


CREATION DES RELATIONS

Cette commande se limite à la définition des attributs, des clés primaires, des clés étrangères et des

contraintes.

CREATE TABLE   nom_table

(

       liste_definition_des_colonnes

       [ liste_contraintes_de_la_table ]

) ;

définition de colonne =          nom_colonne  type | nom_domaine

contrainte de colonne            =          CONSTRAINT           nom_contrainte

                                                type_contrainte_col   mode_contrainte

type_contrainte_col   =          PRIMARY KEY

                                                NOT NULL

                                                UNIQUE

                                                CHECK ( condition )

                                                REFERENCES  nom_table ( liste_colonne )

Contrainte_table        =          CONSTRAINT            nom_contrainte

                                                Type_contrainte_table            mode_contrainte

Type_contrainte_table           =          PRIMARY KEY ( liste_colonne )

                                                UNIQUE ( liste_colonne )

                                                CHECK ( condition )

                                                FOREIGN KEY ( liste_colonne )

                                                            REFERENCES nom_table ( liste_colonne )

Mode_contrainte        =          [ NOT ]   DEFERRABLE

Nom_table                              =          nom de la relation

Def_colonne                           =          définition d'un attribut de la table

Type_contrainte_colonne      =          permet d'associer une contrainte à une colonne

CONSTRAINT           =          permet de donner un nom à la contrainte

PRIMARY KEY          =          déclare que la colonne est la clé primaire

NOT NULL                 =          interdit aux valeurs de la colonne d'être indéfinies

UNIQUE                     =          indique que toutes les valeurs de l'attribut doivent être différentes

CHECK ( condition )  =          permet de définir une contrainte applicative

REFERENCES            =          permet de déclarer que la colonne est une clé étrangère

NOT DEFERRABLE               =          la contrainte est évaluée lorsque l'instruction de mise à jour

est exécutée

DEFERRABLE                        =          la contrainte est évaluée plus tard, en général, à la fin de la

transaction


SUPPRESSION D'UN OBJET

Commande :               DROP

DROP DOMAINE   nom_domaine

DROP TABLE   nom_table    [ CASCADE | RESTRICT ]

DROP INDEX   nom_index

DROP DATABASE FILENAME   nom_base

Pour DROP TABLE nom_table, si CASCADE : effacement de la table et suppression automatique de tous les objets qui lui faisaient référence.

Si RESTRICT : il est impossible de supprimer la table dans une des condition suivantes :

ð     848b110i la table est utilisée en même temps dans un autre requête

ð     848b110i la table est utilisée dans la construction d'une vue

ð     848b110i la table est référencée par une autre table

MODIFICATION DE LA DEFINITION D'UN OBJET

Commande :               ALTER

Modification d'un domaine, c'est la même chose que CREATE  DOMAIN,

mais on met ALTER  DOMAIN.

Ajout d'une colonne :

            CREATE DOMAIN  adresse_auteur  IS CHAR ( 100 ) ;

            ALTER TABLE  auteur ADD COLUMN  adresse  adresse_auteur ;

Modification d'une colonne :

            ALTER TABLE  ouvrage  ALTER  titre  CHAR ( 70 ) ;

Ou :

            ALTER DOMAIN  titre_d_ouvrage  IS CHAR ( 70 ) ;

MANIPULATIONS DES DONNEES

LMD    =          Langage de manipulation de données

Commandes d'interrogation (recherche) et de modification.

L'interrogation concerne l'obtention de l'ensemble des tuples qui satisfont un critère de qualification.

La commande d'interrogation en SQL est SELECT.

La modification revêt un triple aspect : ajout, mise à jour et suppression.

La commande d'ajout en SQL est INSERT.

La commande de mise à jour en SQL est UPDATE.

La commande de suppression en SQL est DELETE.

Ces 4 opérateurs sont ensemblistes : tous mettent en jeu un ensemble de tuples aussi bien en interrogatin qu'en modification.


SELECTION DE BASE

Commande :   SELECT

Permet de faire des recherches dans une seule table.

SELECT  [ ALL | DISTINCT ]  clause_de_sélection

FROM  nom_table

WHERE  condition ;

Clause_de_sélection  :           permet d'indiquer la liste des colonnes sur lesquelles se fait la

projection

La clause FROM permet de spécifier la table dans laquelle la recherche est effectuée.

La condition de la clause WHERE permet de spécifier un critère de sélection.

On retrouve comme types de condition :

ð     848b110i condition_de_base

ð     848b110i condition_between

ð     848b110i condition_in

ð     848b110i condition_like

ð     848b110i condition_null

ð     848b110i condition  AND | OR  condition

Ces conditions pouvant également être spécifiée de façon négative avec : NOT.

Condition_de_base    :           colonne  =  |  < >  |  <  |  = <  |  >  |  > =  constante

SQL2 va plus loin dans ses conditions de base et permet :

SELECT          nom,prenom

FROM             eleve

WHERE           poids   >          (SELECT         poids

                                                  FROM           eleve

                                                  WHERE         nom = 'Brisefer' ) ;

On appelle ceci une sélection imbriquée.

DISTINCT permet d'éliminer les valeurs dupliquées dans la réponse à une requête.

D'ailleurs, d'après la définition de la projection, il faudrait utiliser DISTINCT dans tous les SELECT.

L'opérateur LIKE permet de comparer des chaînes de caractères.

Pour la chaîne de caractère que l'on utilise pour comparer, il y a 2 caractères spéciaux :

ð     848b110i ' - ' pour remplacer un seul caractère

ð     848b110i '%' pour remplacer un nombre quelconque (éventuellement NUL) de caractères

Lorsque l'on veut utiliser le '%' non pas pour un nombre quelconque de caractères mais bien comme le caractère '%', on utilise la clause ESCAPE.

Ainsi, '%@%%' ESCAPE '@' indique une chaîne contenant n'importe où le caractère '%'.

Si on veut utiliser le caractère ' (pas le délimiteur des chaînes, mais bien le caractère ') on rajoute un '.


LA VALEUR NULL

SQL permet de traiter les valeurs indéfinies ou inconnues ou encore impossibles symbolisées par NULL.


         Le résultat de la comparaison ( < , = < , = , = > , > , < > ) entre la valeur NULL et



         une autre valeur (même NULL) n'est ni vrai, ni faux, mais vaut INCONNU

Ainsi, NULL = NULL ou NULL < NULL vaut INCONNU.

SQL possède deux opérateurs spéciaux pour comparer une valeur à NULL.

                        IS  [ NOT ]  NULL

UNION, INTERSECTION  ET  DIFFERENCE

SQL ne dispose pas de l'opérateur d'union, il possède en plus les opérateurs d'intersection INTERSECT et de différence EXCEPT.  Ces opérateurs sont issus de la théorie des ensembles.

Une version simplifiée de l'intersection peut être présentée de la manière suivante.

A  INTERSECT CORRESPONDING BY  (liste_colonne)  B

A  INTERSECT CORRESPONDING BY  B

A  INTERSECT  B

A ces trois possibilités, il faut  encore ajouter celle où on fait suivre INTERSECT de la clause ALL.

A  INTERSECT CORRESPONDING BY  ( liste_colonne )  B

Est l'intersection de AC et de BC, le résultat ne contient donc pas de lignes dupliquées.

A INTERSECT CORRESPONDING BY B

Est constituée de toutes les colonnes communes à A et à B.

L'utilisation de la clause ALL permet de ne pas éliminer les lignes dupliquées.

Les opérateurs UNION et EXCEPT  se définissent sans difficultés par analogie.

SELECTION DE BASE AVEC JOINTURE

On doit simplement permettre de spécifier plusieurs tables et éventuellement des synonymes.

L'opérateur de jointure permet d'illustrer que SQL n'est pas à 100% un langage ensembliste.  Il s'agit en fait d'un langage hybride (ensembliste et prédicatif).

AUTO-JOINTURE

Cette requête implique la jointure de la table professeur avec elle même.

Dès lors, la table professeur va apparaître deux fois dans la clause FROM.

Pour pouvoir faire la distinction entre les deux occurrences  de professeurs, nous définissons deux synonymes x et y de la table dans les clauses SELECT et WHERE.

SELECT  x.nom, y.nom

FROM  professeur x, professeur y

WHERE  x.specialite = y.specialite

LES APPORTS DE SQL2 DANS LA JOINTURE

·     848b110i     CROSS JOIN ne signifie rien d'autre que produit cartésien.

·     848b110i     INNER est l'option par défaut et permet de faire des jointures internes.

EXPRESSIONS NUMERIQUES SQL

On a  + - * /

Mais aussi :                      COUNT ( * )

                              AGV ( . )

                              MAX ( . )

                              MIN ( . )

                              SUM ( . )

                              COUNT ( . )

Et la fonction de conversion :      CAST (  expression  AS  type_de_données | domaine )

L'argument de SUM et AVG doit toujours être de type numérique.  Par contre, COUNT, MAX et MIN peuvent agir sur des valeurs du type caractère ou date.

Sauf dans la cas spécial de COUNT ( * ), l'argument de la fonction peut être précédé de DISTINCT pour indiquer que les valeurs dupliquées dans la collection doivent être éliminées avant d'appliquer la fonction.

Le cas spécial de COUNT ( * ) est utilisé pour compter toutes les lignes d'une table ou du résultat d'une sélection.  Ce comptage est fait sans éliminer la redondance éventuelle.

On peut utiliser la fonction AVG avec ou sans la clause DISTINCT.

EXPRESSIONS CARACTERES SQL

UPPER                                    :           convertit l'expression en majuscules

LOWER                                  :           convertit l'expression en minuscules

CHARACTER-LENGTH        :           donne le nombre de caractères contenus dans l'expressions

                                                            si l'expression vaut NULL, CHARACTER-LENGTH donne

NULL

USER                                      :           renvoit une chaîne de caractères représentant le 'user name'

du processus qui exécute la requête

SUBSTRING                           :           permet d'extraire une sous-chaîne d'une chaîne de caractères

 | |                                             :           permet de concaténer deux chaînes de caractères

POSITION ( chaine2 IN chaine1 ) :  donne la position du début de la chaine1 dans la chaine2

TRIM (ltb, [pad ,] FROM chaine1) : donne une chaîne identique à chaine1 de laquelle on a retiré

les caractères de remplissage (pad characters) du début ou de la fin ou des deux selon que ltb vaut LEADING, TRAILING ou BOTH.  Dans cette expression, pad représente un caractère quelconque.  Si pad est omis, le caractère de remplissage par défaut est blanc.


EXPRESSIONS DATE-TEMPS SQL

CURRENT_DATE                  :           donne la date du jour selon le format : 'aaaa-mm-jj'

CURRENT_TIME                   :           donne l'heure courante selon le format : 'hh :mm :ss'

CURRENT_TIMESTAMP      :           donne la date du jour et l'heure courante

C'est en fait, CURRENT_DATE concaténée  à CURRENT_TIME

EXTRACT (champ FROM source) : permet d'extraire la valeur numérique d'un champ d'une expression de type date_temps ou interalle.  Le paramètre champ peut valoir : YEAR , MONTH, DAY, HOUR, MINUTE, SECOND

EXPRESSIONS INTERVALLES SQL

Les expressions de type intervalles sont des expressions arithmétiques dont les opérandes peuvent être

des nombres, des dates ou des intervalles.

L'OPERATEUR OVERLAPS

Cet opérateur possède un comportement tellement étrange qu'il est bon de lui consacrer quelques

Lignes.

OVERLAPS permet de tester si deux périodes de temps se recouvrent.

Les périodes de temps peuvent être représentées de deux manières différentes : un temps de départ et

un temps d'arrivée ou un temps de départ et un intervalle.

LE TRI

Commande :               ORDER BY

On peut trier de façon ascendante ASC ou descendante DESC.

LE GROUPEMENT DES LIGNES

GROUP BY

SELECTIONS IMBRIQUEES

Pour faire des sélections imbriquées, on utilise l'opérateur ensembliste  IN.

SELECT  nom

FROM  eleve

WHERE  num_eleve  IN  ( SELECT  num_eleve

                                           FROM  section

                                           WHERE  num_gr = 2

                                         ) ;

Une colonne non qualifiée est supposée être préfixée par la table qui apparaît dans la clause FROM du même bloc SFW.


CONDITIONS ALL, ANY ( SOME )

Il est parfois possible d'utiliser les opérateurs de comparaison à la place de l'opérateur IN.

Ceci est permis lorsque le résultat de la sous-question n'est composé que d'une seule valeur.

Il est possible de généraliser l'usage de ces opérateurs de comparaison lorsque la sous-question retourne un ensemble de valeurs (de lignes).

Dans ce cas, l'opérateur de comparaison doit être suivi des mots réservés :

ALL ou ANY ( SOME ).

SOUS-QUESTIONS CORRELATIVES

Dans les exemples précédents, la sous-question obtenait un résultat indépendamment du niveau externe.

Cependant, il existe des requêtes pour lesquelles il est impossible d'obtenir le résultat de la sous-question sans faire référence au niveau externe.

Dans ce cas, on parle de sous-questions corrélatives :

EXISTS DANS LES SELECTIONS IMBRIQUEES

Le prédicat EXISTS joue un rôle important dans la construction des requêtes SQL.

Outre son usage propre (tester l'existence d'une donnée plutôt que sa valeur), il permet d'éviter l'utilisation des opérateurs ALL et ANY tout du moins lorsqu'on ignore l'éventuelle présence de la valeur « NULL ».

AJOUT DE DONNEES : INSERT

La commande INSERT permet d'ajouter des nouvelles lignes dans une table.

MODIFICATION DE DONNEES : UPDATE

La commande UPDATE est utilisée pour modifier des lignes dans une table.

Il est possible de modifier en une seule commande UPDATE zéro, une ou plusieurs lignes d'une même table.

SUPPRESSION DE DONNEES : DELETE

La commande DELETE permet d'effacer un ensemble (éventuellement vide) de tuples dans une table.


 TRANSACTIONS ET ACCES CONCURRENTS

Une base de données est dans un état cohérent si les valeurs contenues dans la base vérifient toutes les contraintes d'intégrité définies sur la base.

Le terme atomicité signifie qu'une transaction doit être traitée comme une seule opération.  Autrement dit, le gestionnaire des transactions doit assurer que toutes les actions de la transaction sont exécutées, ou bien qu'aucune ne l'est.

La durabilité est la propriété qui assure que lorsqu'une transaction a exécuté valider, ses effets deviennent permanents et ne peuvent plus être effacés de la base.  Ils doivent survivre à toute espèce de panne.

On dit que deux transactions sont concurrentes si elles accèdent en même temps aux mêmes données.

Il y a trois types d'anomalies :

·     848b110i     perte de mise à jour

Il arrive aussi un phénomène important : lorsque une transaction ne retrouve plus le même ensemble de tuples lors de la deuxième lecture : un type supplémentaire apparaît.

Il s'agit d'un tuple fantôme.

·     848b110i     lecture impropre

Il y a eu un rollback ; et une autre transaction avait lu la donnée qui a finalement été annulée .

La données n'avait pas été confirmée et l'autre transaction a fait une lecture impropre en lisant ces données non validées .

·     848b110i     lectures non reproductibles

Lorsque deux lectures successives ne donnent pas les mêmes valeurs car entre les 2 lectures, la valeur a été changée par une autre transaction.

Les interférences entre des transactions concurrentes nous amènent à définir une autre propriété des transactions : l' isolation.

L' isolation est la propriété des transactions qui exige que chaque transaction perçoive à tout instant la base dans une été cohérent.  En d'autres termes, une transaction en cours d'exécution ne peut pas dévoiler ses effets aux autres transactions concurrentes avant d'atteindre son point de confirmation.

Il existe 3 modes d'accès pour les transactions :

ð     848b110i lecture seule             ( read only )

ð     848b110i lecture et écriture     ( read write )

ð     848b110i mises à jour en lot ( batch update )

Il y a également 3 modes de partage :

ð     848b110i partagé        ( shared  [ read | write ] )

ð     848b110i protégé        ( protected  [ read | write ] )

ð     848b110i exclusif        ( exclusive  [ read | write ] )

Et enfin, 2 modes d'attente :

ð     848b110i wait

ð     848b110i nowait

Les 4 propriétés fondamentales des SGBD :

Atomicité                    Cohérence                  Isolation                      Durabilité












Document Info


Accesari: 3100
Apreciat:

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site

Copiaza codul
in pagina web a site-ului tau.




Coduri - Postale, caen, cor

Politica de confidentialitate

Copyright © Contact (SCRIGROUP Int. 2018 )