1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.

Slides:



Advertisements
Présentations similaires
26/ 04/ 2007 Auto-Jointure : SELECT * FROM Nom_relation R1 INNER JOIN Nom_relation R2 ON Condition_de_jointure; Problèmes Si des attributs de même nom.
Advertisements

Bases de Données Avancées: Bases de Données Relationnelles
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Les Systèmes de Gestion de Bases de Données (SGBD) PL-SQL.
Langage de manipulation de données Ensemble de commandes permettant : – modifier la base : ajout, modification et suppression – interroger la base ex :
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Bases de données : modèlisation et SGBD
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 5 : Accès aux données Bertrand Audras Microsoft Technology Center.
Jeudi 24/09 Correction TP du mardi 22/09
Fonctionnalités des SGBD
1 Créer les Applications de BDs : SQL Imbriqué Witold Litwin.

Optimisation de Requêtes
LE MODELE RELATIONNEL INVENTE PAR T. CODD (IBM SAN-JOSE)
SGBDR : LA GESTION DES VUES
Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Optimisation de Requêtes
Les Requêtes S.Q.L « Structured Query Language)
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
Les contraintes d’integrité
LMD: Langage de Manipulation de Données
XQuery 1. Introduction 2. Modèle de données 3. XQuery par l'exemple
Contrôles d'accès aux données
L’utilisation des bases de données
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
Regrouper les Données avec les Fonctions de Groupe
LE LANGAGE SQL Langage de manipulation de données (LMD)
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
L’utilisation des bases de données
1 Développement des Applications des Bases de Données Chapitre 6, Sections
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Cours N°2 Base de Données & Langage SQL
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Mise en œuvre du langage MDX
PLSQL ORACLE 8i Connecter VB à BD Oracle Les collections Question de révision Les blocs anonymes Les triggers REVISION Par : Joël Huot.
SQL: Contraintes et Triggers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
Inventé par T. Codd (IBM Recherche)
Maria Berger - Maîtrise d'AES
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Introduction.
SQL Partie 2. SQL est un Langage de Manipulation de Données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
Le langage SQL LDD : Langage de Définition de Données
Mise en œuvre du langage MDX
Le langage de requêtes SQL
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Optimisation de requêtes
1 G. Gardarin Optimisation de Requêtes  1. Introduction  2. Arbres relationnels  3. Restructuration algébrique  4. Modèle de coût  5. Choix du meilleur.
Le modèle relationnel Plan 1. Concepts descriptifs
1 J. PHILIPP d'après G. Gardarin SGBDR : la gestion des vues l 1. Contexte l 2. Vues externes l 3. Interrogation des vues l 4. Mises à jour des vues l.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
 L’information est conservée sous forme de tables  Contient: ◦ Un nom ◦ Une clé primaire ◦ Une liste de colonnes ◦ Les informations/données (sous forme.
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Les bases de données Séance 8 Jointures.
Le Langage de Manipulation de Données LMD. 2 Les ordres SQL de manipulation INSERT –Insertion (ajout) de ligne(s) dans une table –Utiliser SQL*LOAD pour.
Le langage SQL.
Le Langage de Manipulation de Données LMD Module 6.
SQL Partie 2. SQL est un langage de manipulation de données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
Bases de données : modèlisation et SGBD Séance 3.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
LE LANGAGE DE REQUETES SQL
Langage de manipulation de données (LMD)
Structured Query Language
Manipulation D’Une Base De Données
Transcription de la présentation:

1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité

G. Gardarin 2 1. Origines et Evolutions SQL est dérivé de l'algèbre relationnelle et de SEQUEL Il a été intégré à SQL/DS, DB2, puis ORACLE, INGRES, … Il existe trois versions normalisées, du simple au complexe : SQL1 86 version minimale SQL1 89 addendum (intégrité) SQL2 (92) langage complet à 3 niveaux Une version 3 étendue (objets, règles) est la norme 99. La plupart des systèmes supportent SQL2 complet

G. Gardarin 3 Opérations Opérations de base SELECT, INSERT, UPDATE, DELETE Opérations additionnelles définition et modification de schémas définition de contraintes d'intégrité définition de vues accord des autorisations gestion de transactions

G. Gardarin 4 Organisation du Langage SQL comprend quatre parties : Le langage de définition de schéma (Tables, Vues, Droits) Le langage de manipulation (Sélection et mises à jour) La spécification de modules appelables (Procédures) L'intégration aux langages de programmation (Curseurs)

G. Gardarin 5 SQL LANGAGE DE DEFINITIONS DE DONNEES CREATE TABLE CREATE VIEW LANGAGE DE MANIPULATION DE DONNEES SELECT OPEN INSERT FETCH UPDATE CLOSE DELETE LANGAGE DE CONTROLE DE DONNEES GRANT et REVOKE BEGIN et END TRANSACTION COMMIT et ROLLBACK

G. Gardarin 6 Base de Données Collection de tables et de vues dans un schéma VITICULTEURS (NVT, NOM, PRENOM, VILLE, REGION) VINS (NV, CRU, MILLESIME, DEGRE, NVT, PRIX) BUVEURS (NB, NOM, PRENOM, VILLE) ABUS (NV, NB,DATE,QTE) GROS_BUVEURS (NB, NOM, PRENOM)

G. Gardarin 7 2. SELECT: Forme Générale SELECT FROM [WHERE AND ] [GROUP BY ] [HAVING ] Restriction : arithmétique (=,, ) textuelle (LIKE) sur intervalle (BETWEEN) sur liste (IN) Possibilité de blocs imbriqués par : ä IN, EXISTS, NOT EXISTS, ALL, SOME, ANY

G. Gardarin 8 Exemples de Questions (1) Q1: Crus des vins sans doubles. SELECT DISTINCT CRU FROM VINS Q2: Noms des buveurs ayant bus des Beaujolais 97 ou 98 SELECT DISTINCT NOM FROM BUVEURS B, VINS V, ABUS WHERE B.NB = ABUS.NB AND ABUS.NV = V.NV AND CRU LIKE '%BEAUJOLAIS%' AND MILLESIME IN (1997, 1998)

G. Gardarin 9 Exemples de Questions (2) Q3 : Noms et prénoms des buveurs de vins dont le cru commence par B, de degré inconnu ou compris entre 11 et 13. SELECT NOM, PRENOM FROM BUVEURS B, VINS V, ABUS A WHERE B.NB = A.NB AND A.NV = V.NV AND CRU LIKE "B%" AND (DEGRE BETWEEN 11 AND 13 OR DEGRE IS NULL) Q4 : Noms des crus bus par au moins un buveurs. SELECT DISTINCT CRU FROM VINS V WHERE EXISTS ( SELECT * FROM BUVEURS B, ABUS A WHERE B.NB = A.NB AND A.NV = V.NV )

G. Gardarin 10 Exemples de Questions (3) 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

G. Gardarin 11 Forme générale de la condition ::= [NOT] constante LIKE IN (ALL ANY SOME) EXISTS UNIQUE MATCH [UNIQUE] BETWEEN constante AND constante AND OR avec ::= Remarque: peut être dynamiquement déterminée par une requête

G. Gardarin 12 Requêtes imbriquées (1) SELECT CRU FROM VINS V WHERE V.V# NOT IN ( SELECT C.V# FROM COMMANDES C ) SELECT CRU FROM VINS V WHERE V.V# <> ALL ( SELECT C.V# FROM COMMANDES C ) Q7: Donner les crus des vins qui n'ont jamais été commandés

G. Gardarin 13 Requêtes imbriquées (2) Q8 : Donner le nom des buveurs qui n'ont pas bu tous les vins == A VERIFIER SELECT NOM FROM BUVEURS B WHERE EXISTS ( SELECT * FROM VINS V WHERE NOT EXISTS ( SELECT * FROM COMMANDES C WHERE V.V# = C.V# AND C.B# = B.B#) )

G. Gardarin 14 Requêtes imbriquées (3) Q9: Donner le numéro et le cru des vins commandés exactement une fois SELECT V#, CRU FROM VINS WHERE V# MATCH UNIQUE ( SELECT V# FROM COMMANDES )

G. Gardarin 15 Requête Union Q10 :Donner le numéro et le cru des vins commandés plus de 100 fois ou bien jamais commandés ( SELECT V.V#, V.CRU FROM VINS V, COMMANDES C WHERE V.V# = C.V# GROUP BY V.V# HAVING COUNT(C.C#) > 100 ) UNION ( SELECT V#, CRU FROM VINS WHERE V# NOT IN (SELECT V# FROM COMMANDES) )

G. Gardarin 16 SELECT Curseur SGBD Utilisation de SQL depuis un langage de prog. Intégration de deux systèmes de types utilisation d'un pré-compilateur et d'une librairie Passage de l'ensembliste au tuple à tuple utilisation de curseurs et Fetch Exemple Program PL/1-SQL EXEC SQL BEGIN DECLARE SECTION ; DCL VAR1 CHAR(20) ; DCL VAR2 INT ; EXEC SQL END DECLARE SECTION ; EXEC SQL DECLARE C1 CURSOR FOR SELECT …FROM … WHERE … :VAR1 EXEC SQL OPEN C1 ; DO WHILE SQLCODE = 0 BEGIN EXEC SQL FETCH C1 INTO :VAR2

G. Gardarin Les Mises à Jour INSERT Insertion de lignes dans une table Via formulaire où via requêtes UPDATE Modification de lignes dans une table DELETE Modification de lignes dans une table

G. Gardarin 18 Commande INSERT INSERT INTO [( attribute [,attribute] … )] {VALUES [, ] …| } Exemples INSERT INTO VINS (NV, CRU, MILLESIME) VALUES 112, "JULIENAS", NULL INSERT INTO BUVEURS (NB,NOM,PRENOM) SELECT NVT, NOM, PRENOM FROM VITICULTEURS WHERE VILLE LIKE '%DIJON%'

G. Gardarin 19 Commande UPDATE UPDATE SET <attribute = {value expression | NULL} [ = {value expression | NULL}] … [WHERE ] EXEMPLE UPDATE ABUS SET QTE = QTE * 1.1 WHERE ABUS.NV IN SELECT NV FROM VINS WHERE CRU = 'VOLNAY' AND MILLESIME = 1990

G. Gardarin 20 Commande DELETE DELETE FROM [WHERE ] EXEMPLE DELETE FROM ABUS WHERE NV IN SELECT NV FROM VINS WHERE DEGRE IS NULL

G. Gardarin Contraintes d'intégrité Contraintes de domaine Valeurs possibles pour une colonne Contraintes de clés primaires Clé et unicité Contraintes référentielles(clé étrangères) Définition des liens inter-tables

G. Gardarin 22 SQL : INTEGRITE VALEURS PAR DEFAUT CREATE TABLE VINS ( NV INT UNIQUE, CRU CHAR(10), ANNEE INT, DEGRE FIXED (5,2), NVT INT, PRIX FIXED(7,2) DEFAULT 40 ) CONTRAINTES DE DOMAINES SALAIRE INT CHECK BETWEEN 6000 AND

G. Gardarin 23 SQL : Contrainte référentielle Clé primaire et contrainte référentielle CREATE TABLE VINS ( NV INT PRIMARY KEY, CRU CHAR(10), ANNEE INT, DEGRE FIXED (5,2), NVT INT REFERENCES VITICULTEURS, PRIX DEFAULT 40 ) Référence en principe la clé primaire celle de VITICULTEURS

G. Gardarin 24 SQL1 – 89 : Création de table ::= [CONSTRAINT nom_contrainte < NOT NULL UNIQUE PRIMARY KEY CHECK (condition) REFERENCES nom_table (liste_colonnes) > ] ::= CONSTRAINT nom_contrainte < UNIQUE (liste_colonnes) PRIMARY KEY (liste_colonnes) CHECK (condition) FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes) > [NOT] DEFERRABLE CREATE TABLE ( * [ *]) ;

G. Gardarin 25 Autre création de tables CREATE TABLE EXPEDITIONS ( numExp INTEGER PRIMARY KEY date_exp DATE, qte QUANTITE, CONSTRAINT refCom FOREIGN KEY numExp REFERENCES COMMANDES (numCom) DEFERRABLE ) ; L'association d'un nom à une contrainte est optionnelle. Ce nom peut être utilisé pour référencer la contrainte (ex: messages d'erreurs).

G. Gardarin CONCLUSION SQL1 est un standard minimum Les versions étendues: SQL2 = Complétude relationnelle SQL3 = Support de l'objet Sont aujourd'hui intégrées dans les grands SGBD

G. Gardarin 27 LA NORMALISATION DE SQL Groupe de travail ANSI/X3/H2 et ISO/IEC JTC1/SC2 Documents ISO : SQL : Database Language SQL X3.135 ISO ) SQL : Database Language SQL with Integrity Enhancement X3.168 ISO SQL : Database Language SQL2 X3.135 ISO Arguments pour : Réduction des coûts d'apprentissage Portabilité des applications Longévité des applications Langage de communication inter-systèmes Arguments contre : Manque de rigueur théorique Affaiblit la créativité

G. Gardarin 28 SQL STANDARD SQL VENDEUR.2 SQL VENDEUR.3 SQL VENDEUR.1 POSITION DES VENDEURS Problèmes : SQLCODE (0 ou <0 si erreur) Requêtes imbriquées Dynamique SQL (Prepare, Execute) Méta-base normalisée Modèles internes (Index, Espaces,…)