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 :
Relation
Domaine/Attribut
Clé primaire
Domaine primaire (clé étrangère)
· 848b110i contraintes :
Intégrité de domaine
Intégrité d'entité ou de relation
Intégrité de référence
· 848b110i opérateurs :
Opérateurs sémantiques (liés aux domaines)
Opérateurs ensemblistes : union, intersection, différence, produit cartésien
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 D x D x D 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 = R R
Ensemble des tuples appartenant à R1 ou à R2 ou aux 2 relations.
Les doubles sont éliminés.
DIFFERENCE : X = R - R
Ensemble des tuples appartenant à R1 et n'appartenant pas à R2.
PRODUIT CARTESIEN : X = R x R
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 / C , C , C . 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 = R R
Ensemble des tuples appartenant à R1 et à R2.
JOINTURE : X = JOINTURE ( R , R / 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 ( R , R / 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 = R / R
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 et 2
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é
|