Langage de Requêtes. talel@infres.enst.fr



Documents pareils
LE LANGAGE SQL2 1. INTRODUCTION

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Bases de Données relationnelles et leurs systèmes de Gestion

Intégrité des données

SQL Historique

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

INTEGRITE ET BD ACTIVES

Langage SQL : créer et interroger une base

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Les bases de données

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Le langage SQL Rappels

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

TP Contraintes - Triggers

Bases de données relationnelles

Cours Bases de données 2ème année IUT

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Intégrité sémantique dans les bases de données relationnelles

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

MySQL / SQL EXEMPLES

A QUOI SERVENT LES BASES DE DONNÉES?

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Devoir Data WareHouse

TP Bases de données réparties

Bases de données avancées

Le Langage SQL version Oracle

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Le Langage De Description De Données(LDD)

1 Introduction et installation

Introduction au Système de Gestion de Base de Données et aux Base de Données

16H Cours / 18H TD / 20H TP

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

A QUOI SERVENT LES BASES DE DONNÉES?

Administration des bases de données. Jean-Yves Antoine

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Bases de données et sites WEB

LA GESTION DES VUES 1. INTRODUCTION

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Bases de données avancées Introduction

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Notes de cours : bases de données distribuées et repliquées

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

CREATION WEB DYNAMIQUE

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Auto-évaluation Oracle: cours de base

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Bases de Données. Plan

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Chapitre Introduction : Notion de Bases de données. 2. Définition : BD Répartie. 3. Architecture des SGBD. 4. Conception des bases réparties

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Bases de Données Réparties

Olivier Mondet

Patrice BOURSIER. Professeur, Univ. de La Rochelle. Bases de Données. Notes de cours

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Le langage SQL (première partie) c Olivier Caron

Bases de Données Avancées

I4 : Bases de Données

Panorama des Bases de Données

Création et Gestion des tables

OpenPaaS Le réseau social d'entreprise

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Bases de Données Relationnelles. Le Modèle Relationnel

Bases de données et sites WEB Licence d informatique LI345

Partie 0 : Gestion des tablespace et des utilisateurs... 3

INTRODUCTION : Données structurées et accès simplifié

Configurer la supervision pour une base MS SQL Server Viadéis Services

PHP 5. La base de données MySql. A. Belaïd 1

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

MS SQL Express 2005 Sauvegarde des données

OBJECTIFS ET ARCHITECTURE DES SGBD

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

1. Base de données SQLite

Gestion des utilisateurs et de leurs droits

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Partie II Cours 3 (suite) : Sécurité de bases de données

Vincent Augusto

Introduction aux Bases de Données 2004/2005

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Bases de données - Modèle relationnel

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Quelques aspects du Relationnel-Objet du SGBD Oracle

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

Systèmes de Gestion de Bases de Données

Cours SQL. Base du langage SQL et des bases de données

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Historisation des données

Panorama des Bases de Données

Cours Bases de données 2ème année IUT

TP3 : Creation de tables 1 seance

Chapitre 10. Architectures des systèmes de gestion de bases de données

Gestion de base de données

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Pour les débutants. langage de définition des données

Transcription:

Langage de Requêtes talel@infres.enst.fr Supports de cours : (1) Database Management Systems, R. Ramakrishnan and J. Gehrke, ed. McGrawHill, 2000. (2) Bases de Données, G. Gardarin, ed. Eyrolles, 2001. 1 Historique SQL est basé sur l algèbre et le calcul relationnels Il a été intégré à SQL/DS, DB2, puis Oracle, Ingres, Il existe trois normes : SQL1 (1986) version minimale SQL1 (1989) + intégrité SQL2 (1992) langage complet Une version 3 étendue à l objet vient être proposée. La plupart des systèmes supportent SQL1 complet 2

Algèbre Notion de relation Schéma : Nom de relation + ensemble d attributs Extension : ensemble de tuples (n-uplets) Cinq opérations de base?, Projection?, Restriction X, Produit cartésien?, Union?, Différence Autres opérations déduites l><l, Jointure?, Intersection?, Division?, Renommage 3 Calcul relationnel ou calcul à variable n-uplet Langage formel basé sur la logique des prédicats du premier ordre Requêtes en calcul relationnel {t?(t) } t désigne une variable n-uplet et?(t) une formule bien formée Formules, composées à partir de : termes atomiques : variables t, noms de relations et constantes opérateurs?, =, <, >, connecteurs?, v et? Quantificateurs? et? SQL Version commerciale du calcul relationnel 4

Exemple de requête Schéma : Viticulteurs (NVT, Nom, Prénom, Ville, Région) VINS (NV, Cru, Millésime, Degré, NVT, Prix) BUVEURS (NB, Nom, Prénom, Ville) ABUS (NV, NB,Date,Qté) Quels sont les viticulteurs qui ont produit au moins un vin de 1983 (nom et cru)? {t:cru, nom? v? w ( v? vins ^ w??viticulteurs ^ t(cru) = v(cru) ^ t(nom)=w(nom) ^ w(nvt) = v(nvt) ^ v(mill) =1983 } 5 SQL1 : Composantes de base Langage de définission de données CREATE TABLE CREATE VIEW Langage de manipulation de données SELECT OPEN INSERT FETCH UPDATE CLOSE DELETE Langage de contrôle de données GRANT et REVOKE BEGIN et END TRANSACTION COMMIT et ROLLBACK 6

Create CREATE TABLE VINS ( NV NUMBER(6) UNIQUE, CRU CHAR(10), ANNEE NUMBER(4), DEGRE NUMBER(5, 2), NVT NUMBER(3), PRIX NUMBER(5, 2) ) CREATE VUE GROS_BUVEURS AS SELECT NB, Nom, Prénom, FROM Buveurs, Abus WHERE Buveurs.NB = Abus.NB AND Abus.Quantité > 100 7 Select : principe et sémantique Une requête SQL est une description dans une syntaxe propre à ce langage d éléments contenus dans une base de données Format simplifié : SELECT Attribut1, Attribut2, Attributp FROM Relation1, Relation2, Relationk WHERE Condition Q [{UNION INTERSECT EXCEPT } SELECT ] Sémantique du bloc SELECT :? Attribut1,Attribut2,, Attributp (? Q ( R1 X R2 X X Rk) ) ) 8

Forme générale d un select SELECT FROM [WHERE [GROUP BY [HAVING Restriction : arithmétique (=, <, >,??????? ) textuelle (LIKE) sur intervalle (BETWEEN) sur liste (IN) liste de projection liste de tables critère de jointure AND critère de restriction] attributs de partitionnement] critère de restriction sur les partitions] Possibilité de blocs imbriqués par : IN, EXISTS, NOT EXISTS, ALL, ANY 9 Select : exemples de requêtes (1) Q1: Liste des crus sans doublons. SELECT DISTINCT Cru FROM VINS Q2: Noms des buveurs ayant bus du Beaujolais 87 ou 88. SELECT DISTINCT Nom FROM BUVEURS B, VINS V, ABUS WHERE B.NB = ABUS.NB AND ABUS.NV = V.NV AND Cru LIKE '%BEAUJOLAIS%' AND Millésime IN (1987, 1988) 10

Select : exemples de requêtes (2) Exemple d utilisation du OR : Q3 : Noms et prénoms des buveurs de vins de degré inconnu ou compris entre 11 et 13. SELECT Nom, Prénom FROM BUVEURS B, VINS V, ABUS A WHERE B.NB = A.NB AND A.NV = V.NV AND (Degré BETWEEN 11 AND 13 OR Degré IS NULL) Exemple de requêtes imbriquées : Q4 : Noms des crus bus par au moins un buveur. SELECT DISTINCT CRU FROM VINS V WHERE EXISTS ( SELECT * FROM BUVEURS B, ABUS A WHERE B.NB = A.NB AND A.NV = V.NV ) 11 Fonction et agrégat Fonction Fonction de calcul en ligne appliquée sur un ou plusieurs attributs Exemple : DEGRE * QUANTITE / 100 Agrégat Partitionnement horizontal d'une relation selon les valeurs d'un groupe d'attributs, suivi d'un regroupement par une fonction de calcul en colonne (Sum, Min, Max, Avg, Count, ) 12

Exemples d utilisation des agrégats (1) Q5: Calculer le degré moyen pour chaque cru. SELECT CRU, AVG(DEGRE) FROM VINS GROUP BY CRU Q6 : Calculer le degré moyen et le degré minimum pour tous les crus de 94 dont le degré minimum est supérieur à 12. SELECT CRU, AVG(DEGRE), MIN(DEGRE) FROM VINS WHERE MILLESIME = 1994 GROUP BY CRU HAVING MIN(DEGRE) > 12 13 Exemples d utilisation des agrégats (2) VINS CRU MILL DEGRE QUANTITE CHABLIS 1977 10.9 100 CHABLIS 1987 11.9 250 VOLNAY 1977 10.8 400 VOLNAY 1986 11.2 300 MEDOC 1985 11.2 200 SELECT MOY(DEGRE) FROM VINS; SELECT CRU, SUM(QUANTITE) FROM VINS GROUP BY CRU; AVG DEGRE 11.2 SUM CRU QUANTITE CHABLIS VOLNAY MEDOC 350 700 200 14

Insert INSERT INTO nom de relation [( attribut [, attribut] )] VALUES (valeur [, valeur] ) spécification de requête Exemples INSERT INTO VINS (NV, Cru, Millésime) VALUES (112, "JULIENAS", NULL) INSERT INTO BUVEURS (NB, Nom, Prénom) SELECT NVT, Nom, Prénom FROM VITICULTEURS WHERE Ville LIKE '%DIJON%' 15 Update UPDATE nom de relation SET attribut = expression de valeur NULL [attribut = expression de valeur NULL] [WHERE critère de recherche] Exemple UPDATE ABUS SET Qté = Qté * 1.1 WHERE ABUS.NV IN SELECT NV FROM VINS WHERE Cru = 'VOLNAY' AND Millésime = 1990 16

Delete DELETE FROM nom de relation [WHERE critère de recherche] Exemple DELETE FROM ABUS WHERE NV IN SELECT NV FROM VINS WHERE Degré IS NULL 17 Grant/Revoke GRANT TO liste de droits all ON nom de table ou de vue liste de bénéficiaire public REVOKE liste de droits all ON nom de table ou de vue FROM liste de bénéficiaire public Exemples : GRANT SELECT, UPDATE ON VINS TO NIKITA, LEON GRANT ALL ON VINS TO PUBLIC REVOKE UPDATE, DELETE, INSERT ON VINS FROM VICTOR 18

Intégrité (SQL1-89) VALEURS PAR DEFAUT CREATE TABLE VINS ( NV NUMBER(6) UNIQUE, CRU CHAR(10), ANNEE NUMBER(4), DEGRE NUMBER(5,2), NVT NUMBER(3), PRIX NUMBER(5,2) DEFAULT 40 ) CONTRAINTES DE DOMAINES SALAIRE NUMBER(8, 2) CHECK BETWEEN 6000 AND 100000 19 Intégrité référentielle Clé primaire et contrainte référentielle CREATE TABLE VINS ( NV NUMBER(6) PRIMARY KEY, CRU CHAR(10), ANNEE NUMBER(4), DEGRE NUMBER(5,2), NVT NUMBER(3) REFERENCES VITICULTEURS, PRIX NUMBER(5,2) DEFAULT 40 ) Référence la clé primaire de VITICULTEURS 20

Norme actuelle (SQL2-92) Trois niveaux : Entry SQL2 SQL89 + manques Intermediate SQL2 Compléments relationnels Full SQL2 Gadgets en plus 21 SQL2 Entry Renommage des colonnes résultats Mots clés utilisables entre " " Méta-base normalisée (schémas) Codes réponses SQLCODE/SQLSTATE 22

SQL2 Intermediate Types date et opérations associées DATE, TIME et TIMESTAMP Intervalles de temps Mises à jour en cascade Suppression en cas d'intégrité référentielle avec options Cascader les suppressions (CASCADE) Rendre nul l'attribut référençant (NULLIFY) 23 SQL2 Intermediate Possibilité de créer ses propres domaines CREATE DOMAINE MONEY IS INTEGER(5,2) DEFAULT (-1) CHECK (VALUE = -1 OR VALUE > 0) NOT NULL Jointure externe (Outer-Join) SELECT FROM R1 [{LEFT RIGHT}] [OUTER] JOIN R2 [ON (A=B)], WHERE Opérateurs ensemblistes UNION INTERSECT EXCEPT 24

SQL2 Full Possibilité de SELECT en argument d'un FROM Contraintes d'intégrité multi-tables 25 Solutions BD pour le développement d applications Embedded SQL Procédures stockées Déclencheurs 26

ESQL : SQL dans un langage de programmation Intégration de deux systèmes de types utilisation d'un pré-compilateur Passage du traitement ensembliste au traitement tuple à tuple utilisation de curseurs et Fetch Exemple de programme en C/SQL... EXEC SQL INCLUDE SQLCA.H ;... EXEC SQL BEGIN DECLARE SECTION ; VARCHAR A[20], B[20]; NUMBER C; EXEC SQL END DECLARE SECTION ; scanf("%s", A);... EXEC SQL DECLARE C1 CURSOR FOR SELECT FROM WHERE = :A EXEC SQL OPEN C1 ; WHILE (SQLCA.SQLCODE = 0) { EXEC SQL FETCH C1 INTO :B, :C;... Curseur SELECT SGBD 27 Procédure stockée Procédure écrite en L3G/SQL ou L4G/SQL définie au niveau du schéma de la base et stockée dedans. Avantages : Exemple : partitionnement des traitements entre client et serveur limiter le trafic sur le réseau, partager des procédures Rapidité d exécution Réservations Transactionnelles Réservations Batch Etablir la réservation 28

Déclencheur (Trigger) Action base de données déclenchée suite à l'apparition d'un événement particulier Forme : {BEFORE AFTER} <événement> THEN <action> Un événement peut être : une opération sur une table (m-à-j) un événement externe (heure, appel, etc.) Une action peut être : une requête BD (mise à jour) un abort de transaction l'appel à une procédure stockée 29 Déclencheur avec condition (Règle) Il est possible d'ajouter une condition au déclenchement de l'action Une condition est une qualification portant sur la base. Exemples : BEFORE UPDATE FROM EMPLOYE IF SALAIRE > 100.000 THEN ABORT TRANSACTION 30

Conclusion Un standard de plus en plus complet et de plus en plus suivi Approximations et imitations incomplètes Une référence pour implémenter et utiliser chaque aspect des BD SQL VENDEUR 2 SQL VENDEUR 3 SQL VENDEUR 1 SQL STANDARD Le langage universel sur lequel s'appuient les progiciels SQL réussira-t-il à bien intégrer l'objet? 31 Exemple : Bars à Bière 1:N Bar 1:N Servie fréquente 1:M 1:N Aime 0:M Bière 0:1 0:M favorite 0:M Buveur 32

Schéma relationnel Aimer (bière, buveur) Servir ( bière, bar) Fréquenter ( buveur, bar) Bar (Nom, ville, rue) Bière (nom, type, degré) Buveur(nom, prénom, favorite) 33 Requêtes Q1 - Les bars qui servent une bière appréciée par 'Dupont' Q2 - Les buveurs qui vont dans les mêmes bars que Dupont Q3 - Les buveurs qui fréquentent au moins un bar où l'on sert une bière qu'ils aiment Q4 - Les buveurs qui ne fréquentent aucun bar où l'ont sert une bière qu'ils aiment Q5 - Les buveurs qui fréquentent tous les bars Q6 - Les buveurs qui fréquentent tous les bars qui servent au moins une bière qu'ils aiment Q7 - Les buveurs qui ne fréquentent que les bars qui servent une bière qu'ils aiment Q8 - Donner pour chaque buveur, le nombre de bars servant une bière qu'ils aiment Q9 - Les buveurs qui fréquentent au moins 2 bars où l'on sert une bière qu'ils aiment 34