• Aucun résultat trouvé

Système de Gestion de Base de Données (SGBD) Le langage SQL, approfondissement

N/A
N/A
Protected

Academic year: 2022

Partager "Système de Gestion de Base de Données (SGBD) Le langage SQL, approfondissement"

Copied!
21
0
0

Texte intégral

(1)

Système de Gestion de Base de Données (SGBD)

Le langage SQL, approfondissement

(2)

I. Les opérateurs logiques

•  L’operateur ALL

Sert à comparer une valeur à toutes les valeurs d’un ensemble retourné par une sous-requête.

la comparaison est vrai si elle est vrai pour tous les éléments de l’ensemble.

Exemple: Chercher le salarié ayant un salaire supérieur à tous les salaires du service n°10.

SELECT pnom FROM pers!

WHERE psalaire > ALL(SELECT psalaire !

! ! ! FROM pers!

! ! ! WHERE pservno=10);!

La comparaison se fait avec tous les éléments (un par un) retournés par la sous-requête+.

(3)

I. Les opérateurs logiques

•  L’operateur ANY

Sert à comparer une valeur à toute valeur applicable d’un ensemble retourné par une sous-requête.

la comparaison est vrai si elle est vrai pour au moins un élément de l’ensemble

Exemple: Chercher s’il y a un(e) secrétaire ayant un salaire supérieur à un ou plusieurs ingénieurs de la société.

!SELECT pnom FROM pers!

!WHERE pposte=‘SECRETAIRE’ !

!AND psalaire > ANY(SELECT psalaire !

! ! ! FROM pers!

! ! ! WHERE pposte=‘INGENIEUR’);!

La condition est vrai dès qu’on rencontre une ligne vérifiant la condition.

(4)

I. Les opérateurs logiques

•  L’operateur EXISTS

Permet de chercher la présence d’une ligne répondant à certains critères dans une table spécifique: vérifie si une sous-requête retourne au moins une ligne.

Exemple 1: Donner les noms des services ayant au moins un employé embauché après le ’01/01/05’.

SELECT snom ! FROM serv X!

WHERE EXISTS (SELECT * !

! ! FROM pers Y!

WHERE pdatemb> ’01/01/05’ !

! ! AND X.servno=Y.pservno);!

(5)

I. Les opérateurs logiques

•  L’operateur EXISTS

Exemple 2: Donner les noms des projets dont aucun employé n’appartient au service FINANCE.

SELECT titreproj ! FROM prj X!

WHERE NOT EXISTS(SELECT * !

! ! FROM pers Y, emprj Z!

WHERE X.projno=Z.proj_projno!

AND Y.pno=Z.apers_pno!

AND pservno = (SELECT servno!

FROM serv !

! ! ! ! WHERE snom=‘FINANCE’));!

(6)

I. Les opérateurs logiques

•  L’operateur EXISTS

Exemple 2: Donner les noms des projets dont aucun employé n’appartient au service FINANCE.

SELECT titreproj ! FROM prj X!

WHERE NOT EXISTS(SELECT * !

! ! FROM pers Y, emprj Z!

WHERE X.projno=Z.proj_projno!

AND Y.pno=Z.apers_pno!

AND pservno = (SELECT servno!

FROM serv !

! ! ! ! WHERE snom=‘FINANCE’));!

(7)

II. Les opérateurs logiques

•  L’operateur NOT EXISTS

Permet d’obtenir la division de deux relations.

La division de R par S sur l’attribut B (R(A,B) ÷ S(B)) peut être traduit en SQL par:

!

SELECT A ! FROM R R1 !

WHERE NOT EXISTS(SELECT B !

! ! !FROM S !

! ! !WHERE NOT EXISTS(SELECT A,B !

! ! ! ! ! FROM R R2!

! ! ! ! ! WHERE R2.A=R1.A !

! ! ! ! AND R2.B=S.B));!

(8)

II. Les opérateurs logiques

•  L’operateur NOT EXISTS

Exemple: Les athlètes ayant participé au moins à toutes les épreuves.

!

SELECT Athlète ! FROM PARTICIPER A


WHERE NOT EXISTS (SELECT * !

! ! FROM EPREUVE


! ! WHERE NOT EXISTS (SELECT * !

! ! ! ! FROM PARTICIPER B      

! ! ! ! ! WHERE (A.Athlète=B.Athlète)       

! ! ! ! ! AND(B.Epreuve=EPREUVE.Epreuve)!

! ! ! ! !));!

! ! ! !!

! ! ! ! Dupont et Martin!

!

!

!

!

!

(9)

II. Les Requêtes composées

Une requête composée est l’association de plusieurs requêtes par le biais d’un opérateur de combinaison.

Syntaxe:

SELECT colonne1, colonne2 FROM TABLE1!

WHERE conditions…!

operateur!

(SELECT colonne1, colonne2 FROM TABLE2!

WHERE conditions…);!

Operateurs :

UNION, !

UNION ALL, ! INTERSECT, ! MINUS.!

!

(10)

II. Les Requêtes composées

•  L’operateur UNION

permet de combiner les résultats de deux instructions SELECT ou plus, sans retourner des lignes en double. Les colonnes sélectionnées des différentes requêtes doivent être de même nombre, de même type et de même ordre.

Exemple: Donner la liste des salariés travaillant sur des projets comme étant employés ou responsables de projets.

SELECT * FROM pers WHERE pno IN (SELECT Epres_pno !

! ! ! ! ! FROM emprj);!

UNION!

SELECT * FROM pers WHERE pno IN (SELECT Rpers_pno !

! ! ! ! ! FROM prj);!

!

(11)

II. Les Requêtes composées

•  L’operateur UNION ALL

Permet de combiner les résultats de deux instructions SELECT y compris les lignes dupliquées. Les règles qui s’appliquent à cet opérateur sont les mêmes que celles qui concernent UNION.

(12)

II. Les Requêtes composées

•  L’operateur INTERSECT

Permet de combiner les résultats de deux instructions SELECT ou plus, mais ne retourne que les lignes en commun.

Exemple: Donner la liste des salariés qui sont à la fois affectés à des projets et responsables de projets.

SELECT * ! FROM pers !

WHERE pno IN (SELECT Apres_pno !

! ! FROM emprj);!

INTERSECT!

SELECT * ! FROM pers !

WHERE pno IN (SELECT Rpers_pno !

! ! FROM prj);!

(13)

III. Les objets des DB

Un objet est une composante stockée dans la base de données.

!  Liste des objets d’une BD:

Table, contrainte,

Vue, séquence, index, procédure, …

!  Visualiser la liste des objets créés par un utilisateur:

SELECT * FROM user_catalog;!

!

!

!

!

!

!

(14)

III. Les objets des DB : Les Vues

!  Une vue est une table virtuelle constituée par des sous-ensembles de données d’une ou plusieurs tables.

!  Elle est définie par une requête prédéfinie stockée dans la base de données.

!  Elle est exploitée comme une table mais elle ne nécessite pas d’espace physique de stockage.

!  Vue=> fenêtre dynamique, non matérialisée sur les disques, par la quelle un utilisateur accède à la base.

(15)

III. Les objets des DB : Les Vues

Utilités :

! 

Pour des raisons de sécurité : restreindre l’accès aux données.

!  Conserver des données de synthèses afin d’éviter les requêtes très complexes.

!  Permettre une certaine indépendance des données.

!  Présenter des différentes vues pour les mêmes données…

(16)

III. Les objets des DB : Les Vues

•  Création d’une vue

-  Cas d’une vue simple (à partir d’une table).

Syntaxe :

CREATE VIEW Nom_Vue AS!

SELECT COLONNE1 [,COLONNE2…]!

FROM Nom-Table!

WHERE Conditions;!

!

Le SELECT peut contenir toutes les clauses d’un SELECT à part la clause ORDER BY.

(17)

III. Les objets des DB : Les Vues

•  Création d’une vue

-  Cas d’une vue simple (à partir d’une table).

Exemple: Créer une vue des noms, postes et salaires des employés du service n°10.

CREATE VIEW Service10 AS!

SELECT pnom, pposte, psalaire!

PROM pers!

WHERE pservno = 10;!

On peut renommer les noms des colonnes dans la vue en utilisant les alias dans la sous-requête.

CREATE VIEW service10 As!

SELECT Pno Numéro, Pnom NOM,!

Pposte POSTE, psalaire SALAIRE!

FROM pers WHERE pservno = 10 ;!

(18)

III. Les objets des DB : Les Vues

•  Création d’une vue

-  Cas d’une vue complexe (à partir de plusieurs tables).

Syntaxe :

CREATE VIEW Nom_Vue AS!

SELECT COLONNE1 [, COLONNE2,…]!

FROM TABLE1, TABLE2!

WHERE Conditions!

[GROUP BY…] ;!

!

!

Les vues complexes sont souvent utilisées pour la synthèse des données.

(19)

III. Les objets des DB : Les Vues

•  Création d’une vue

-  Cas d’une vue complexe (à partir de plusieurs tables).

Exemple : Créer une vue qui contient, pour chaque service, le nom du service, le nombre d’employés et le salaire moyen dans ce service.

!

CREATE VIEW Services AS!

Select snom Nom, count(pno)Nombre_Employé,!

AVG(pSalaire) Salaire_moyen!

FROM pers, serv!

WHERE pservno = servno!

GROUP BY snom ;!

!

!

(20)

III. Les objets des DB : Les Vues

•  Suppression d’une vue

La suppression d’une vue s’effectue de la même façon qu’une table:

Drop nom_vue;!

Remarques:

Les opérations de LMD (INSERT, UPDATE, DELETE) sont aussi permises sur les vues, par contre les conditions suivantes doivent être vérifiées :

!  Le mot clé DISTINCT doit être absent.

!  La clause FROM doit faire référence à 1 seule table.

!  Les clauses GROUP BY et HAVING sont interdites.

Ex : On ne peut pas faire des mise à jour dans la vue Services de l’exemple précédent.

(21)

III. Les objets des DB : Les Vues

•  L’option WITH CHECK OPTION

C’est une option de l’instruction CREATE qui peut être ajoutée afin que toutes les instructions UPDATE et INSERT répondent aux conditions de la définition de la vue.

Exemple:

CREATE VIEW Pers_Commis AS!

SELECT pnom, pposte, commission from pers!

WHERE commission IS NOT NULL!

WITH CHECK OPTION;!

Dans ce cas, l’option WITH CHECK OPTION refuse toute valeur NULL dans la colonne « commission »

Références

Documents relatifs

Indiquer au système une clé primaire pour chaque table permet une indexation des données à l'aide de cette clé, ce qui renforce l'efficacité des procédures d'interrogation de

● les 2 entités peuvent être placées dans la même

– si un même type d’entité intervient plusieurs fois dans un même type d’association, on doit explicitement indiquer le rôle de chaque entité – si on a

Le taux de chômage se trouve dans la relation economy et dans cette dernière il n’y a pas un nom de pays mais un code constitué de un, deux ou trois lettres Ce code se trouve aussi

● les 2 entités peuvent être placées dans la même table.

Systèmes de gestion de fichiers, collection de données, bases de données (modèle réseau)2. - nécessité de savoir où et comment sont stockées quelles

Cette requête retourne exactement les mêmes colonnes qu’il y a dans la base de données. Pour en savoir plus sur le sujet il est recommandé de lire l’article avantage et

Le chapitre 4 est entièrement consacré au langage SQL (Structured Query Language) qui peut être considéré comme le langage d’accès normalisé aux bases de données relationnelles..