Le langage de requêtes SQL

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Les Systèmes de Gestion de Bases de Données (SGBD) PL-SQL.
Benoît Piranda Équipe SISAR Université de Marne La Vallée Bases de données Algèbre relationnelle, opérations Requêtes SQL.
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Bases de données : modèlisation et SGBD
Fonctionnalités des SGBD

Optimisation de Requêtes
INTEGRITE ET BD ACTIVES
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
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
LMD: Langage de Manipulation de Données
Contrôles d'accès aux données
BASE DE DONNEES RELATIONNELLES
LE LANGAGE SQL Langage de manipulation de données (LMD)
Initiation aux bases de données et à la programmation événementielle
Les bases de données Cours assuré par: Mlle Smii imen
Chap 4 Les bases de données et le modèle relationnel
Bases de données et SGBD relationnels
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
Inventé par T. Codd (IBM Recherche)
Manipulation des données Requêtes simples
Maria Berger - Maîtrise d'AES
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
LE LANGAGE DE REQUETES SQL2
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
SQL Partie 1.
Algèbre Relationnelle : Implémentation
Traduction des opérations sous MySQL
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
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.
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Sélection de colonnes (la projection)
Le modèle relationnel Plan 1. Concepts descriptifs
Le Langage SQL Introduction. 2 Historique du Langage SQL E. F. CODD : premiers articles dans les années 70 IBM crée le langage SEQUEL (Structured English.
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.
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Les vues Une vue: c’est une relation virtuelle. Définie par:
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 SQL.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
Initiation aux bases de données et à la programmation événementielle
Cours n°2 Implémentation et exploitation
Bases de données – Cours 3
Le Langage de Manipulation de Données LMD Module 6.
Le langage SQL LA Plan 1. Introduction Rappels sur le modèle relationnel Les caractéristiques du langage SQL 2. Le Langage d'Interrogation des.
Bases de données : modèlisation et SGBD Séance 3.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
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)
Transcription de la présentation:

Le langage de requêtes SQL Origines et Evolutions SQL : Structured Query Langage SQL1 (86): la base SQL1 (89): gestion de l'intégrité SQL2 (92): une norme SQL3 (98): l'intégration des évolutions Objets

1. Origines et évolutions SQL - Structured Query Langage - est dérivé de l'algèbre relationnelle et de SEQUEL. Il a été intégré à SQL/DS, DB2, puis à ORACLE, INGRES… Il en existe trois versions normalisées, de la plus élémentaire à la plus complète et complexe : SQL1 (86) : la version minimale. SQL1 (89) : addendum de la précédente (contraintes d'intégrité). SQL2 (92) : langage complet à 3 niveaux. SQL3 : version étendue (objets, règles) et complète de ce langage, en cours de normalisation. La plupart des SGBD supportent des versions complètes de SQL1.

Opérations sur une bases de données Opérations de base select, insert, update, delete Opérations complémentaires définition et modification de schémas, définition de contraintes d'intégrité, définition de vues, accord des autorisations, gestion de transactions.

Organisation du langage SQL Le langage SQL est constitué de quatre sous ensembles : Le langage de définition de schémas (Tables, Vues, Droits). Le langage de manipulation de données (sélections et mises à jour). La spécification de modules (procédures). L'intégration aux langages de programmation (curseurs).

2. SQL1 - 86 Langage de définitions de données (LDD) CREATE TABLE CREATE VIEW Langage de manipulation de données (LMD) SELECT OPEN INSERT FETCH UPDATE CLOSE DELETE Langage de contrôle de données (LCD) couple d'instructions GRANT et REVOKE couple d'instructions BEGIN et END TRANSACTION couple d'instructions COMMIT et ROLLBACK

Base de données Rappel : une base de données est une collection de tables et de vues dans un schéma. Exemples 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)

Exemples de requêtes (sélection) Q1 : pour tous les vins, rechercher les crus, millésimes et quantité d'alcool contenus dans 1000 l, avec doubles éventuels. SELECT CRU, MILLESIME, (DEGRE/100)*1000 FROM VINS Q2 : recherche de tous les tuples de la table vin sans double. SELECT DISTINCT *

Exemples de questions (sélection) Q3: recherche de crus des vins sans doubles. SELECT DISTINCT CRU FROM VINS Q4: recherche des noms des buveurs ayant bu 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 MILLESIME IN (1987, 1988)

Exemples de questions (jointure) Q5 : 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) Q6 : noms des crus bus par un buveur au moins. SELECT DISTINCT CRU FROM VINS V WHERE EXISTS ( SELECT * FROM BUVEURS B, ABUS A WHERE B.NB = A.BNB AND A.NV = V.NV )

Exemples (calculs d'agrégats) Q7: calcul du degré moyen pour chaque cru. SELECT CRU, AVG(DEGRE) FROM VINS GROUP BY CRU Q8 : calcul du degré moyen et du degré minimum pour tous les crus de 94 dont le degré minimum est supérieur à 12. SELECT CRU, AVG(DEGRE), MIN(DEGRE) WHERE MILLESIME = 1994 HAVING MIN(DEGRE) > 12

Exemples (union) Q9 : crus de degré supérieur à 13 ou du millésime 77. SELECT CRU FROM VINS WHERE DEGRE > 13 UNION WHERE MILLESIME=1977

Exemple : question quantifiée Q10 : recherche des noms des buveurs n'ayant commis que des abus en quantité supérieures ou égales à toutes les quantités bues. SELECT NOM FROM BUVEURS B, ABUS A WHERE B.NB=A.NB AND A.QUANTITE  ALL SELECT QUANTITE FROM ABUS

Exemple : question quantifiée (suite) Q11 : recherche des buveurs ayant bu du Volnay. SELECT B.NOM FROM BUVEURS B WHERE EXISTS SELECT * FROM ABUS A, VINS V WHERE A.NV = V.NV AND A.NB = B.NB AND CRU="VOLNAY"

Exemple : question quantifiée (suite) Q12 : recherche des buveurs n'ayant bu que du Volnay. SELECT B.NOM FROM BUVEURS B WHERE NOT EXISTS SELECT * FROM ABUS A, VINS V WHERE A.NV = V.NV AND A.NB = B.NB AND CRU="VOLNAY"

Select : forme générale SELECT <liste de projection> FROM <liste de tables> [WHERE <critère de jointure> AND <critère de restriction>] [GROUP BY <attributs de partitionnement>] [HAVING <critère de restriction>] Restrictions arithmétique (=, <, >,   ) textuelle (LIKE) sur intervalle (BETWEEN) ou sur liste (IN) Possibilité de blocs imbriqués par : IN, EXISTS, NOT EXISTS, ALL, SOME, ANY

Insertion de tuple : INSERT INSERT INTO <relation name> [( attribute [,attribute] … )] {VALUES <value spec.> [, <value spec.>] …  | <query specification>} 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%'

Mise à jour d'un tuple : UPDATE UPDATE <relation name> SET <attribute = {value expression | NULL} [<attribute> = {value expression | NULL}] … [WHERE <search condition>] EXEMPLE UPDATE ABUS SET QTE = QTE * 1.1 WHERE ABUS.NV IN SELECT NV FROM VINS WHERE CRU = 'VOLNAY' AND MILLESIME = 1990

Suppression de tuple : DELETE DELETE FROM <relation name> [WHERE <search condition>] EXEMPLE DELETE FROM ABUS WHERE NV IN SELECT NV FROM VINS WHERE DEGRE IS NULL

Utilisation de SQL depuis un langage 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 SELECT SGBD Curseur

SQL1 - 89 : contraintes d'intégrité Définition de valeurs par défaut CREATE TABLE VINS ( NV INT UNIQUE, CRU CHAR(10), ANNEE INT, DEGRE FIXED (5,2) , NVT INT, PRIX FIXED(7,2) DEFAULT 40 ) Définition de contraintes de domaine SALAIRE INT CHECK BETWEEN 6000 AND 100000

SQL1 - 89 : intégrité 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 ici celle de VITICULTEURS.

La normalisation du langage SQL Groupe de travail ANSI/X3/H2 et ISO/IEC JTC1/SC2 Documents ISO SQL1 - 86 : Database Language SQL X3.135 ISO-9075-1987) SQL1 - 89 : Database Language SQL with Integrity Enhancement X3.168 ISO-9075-1989 SQL2 - 92 : Database Language SQL2 X3.135 ISO-9075-1992 Arguments pour : Réduction des coûts d'apprentissage. Portabilité et longévité des applications. Langage de communication normalisé entre les divers systèmes. Arguments contre : Manque de rigueur théorique. Affaiblit la créativité.

Position des éditeurs de logiciels Problèmes : SQLCODE (0 ou <0 si erreur). ALTER / DROP Table. Dynamique SQL (Prepare, Execute). Méta-base normalisée. Modèles internes (index, espace,…). SQL VENDEUR.1 SQL SQL SQL STANDARD VENDEUR.3 VENDEUR.2

3. SQL2 On distingue trois niveaux : SQL2 niveau entrée (entry) : SQL89 avec des manques. C'est le standard minimum à fournir par les éditeurs de logiciel. SQL2 niveau intermédiaire (intermediate) : intègre les compléments relationnels. SQL2 niveau complet (full level) : gadgets en suppléments.

SQL2 : niveau entrée (entry level) Les codes réponses sont normalisés par ajout de la variable de retour SQLSTATE qui permet de spécifier un code d'erreur composé de deux caractères. Le renommage de colonnes résultats est possible (clause AS) Exemple SELECT CRU, AVG(DEGRE) AS MOYENNE FROM VINS GROUP BY CRU Mots clés du langage utilisables entre " " comme nom de table ou d'attribut. Exemple : CREATE TABLE "SELECT" (QUESTION CHAR(100)) Métabase normalisée (schémas).

SQL2 intermédiaire (intermediate level) Définition de l'objet date avec les types : DATE (JJ/MM/AAAA), TIME (HH:MN:SS) et TIMESTAMP (concaténation des deux types précédents). Spécification d'intervalle de temps. Comparaison de dates possible Exemple SELECT * FROM ABUS WHERE DATE - 21/10/2002 < N

SQL2 intermédiaire (suite) Possibilité de créer des domaines CREATE DOMAINE MONNAIE IS DECIMAL (5,2) DEFAULT (-1) CHECK (VALUE = -1 OR VALUE > 0) NOT NULL Exemple CREATE TABLE FACTURE (NOM CHAR(5), MONTANT MONNAIE

SQL2 intermédiaire (suite) Support d'alphabets multiples et de différents jeux de caractères. Support de différents ordres de lettres (instruction Collate). Concaténation et extraction de chaînes de caractères. Facilité de conversion de types de données (cast). Supports de chaînes de caractères de longueur variable et calcul de la longueur d'une chaîne.

SQL2 intermédiaire : intégrité référentielle Meilleur support de l'intégrité référentielle par des opérations correctives réalisées en cascade lors de mises à jour, selon les options : cascader les suppressions, rendre nul l'attribut référençant (NULLIFY). Syntaxe ON DELETE CASCADE ON DELETE SET NULL. Syntaxe de nommage de contraintes d'intégrité SET CONSTRAINTS NOM_DE_LA_CONTRAINTE { DEFERRED | IMMEDIATE} La contrainte ALL indique que toutes les contraintes sont concernées.

SQL2 intermédiaire : intégrité référentielle Le niveau d'isolation d'une transaction peut être défini à partir de la variable mode 0 lecture non protégée (aucune isolation) 1 écriture protégée 2 lecture et écriture protégées 3 lectures et écriture exclusives Syntaxe SET TRANSACTION MODE

SQL2 intermédiaire : extension de l'algèbre relationnelle Des opérations de l'algèbre relationnelles absentes de SQL1 sont introduites dans SQL2. Les expressions de la clause SELECT sont généralisées par introduction des opérations ensemblistes d'intersection (INTERSECT) et de différence (EXCEPT), union externe [OUTER] UNION avec complément des schémas de relation au même schéma par ajout de valeurs nulles aux tuples. Syntaxe de la jointure externe SELECT … FROM R1 [NATURAL] [{LEFT | RIGHT}] JOIN R2 [ON (A=B)], … WHERE …

SQL2 intermédiaire : extension de l'algèbre relationnelle (2) Exemple : au départ, deux tables complémentaires NONBUVEURS (NB, NOM, PRENOM, ADRESSE) BUVEURS (NB, NOM, PRENOM, ADRESSE, TYPE) La requête suivante construit une table contenant buveur et non buveurs avec un type nul, à l'exception des gros buveurs. SELECT * FROM NONBUVEURS OUTER UNION (SELECT * FROM BUVEURS EXCEPT SELECT * FROM BUVEURS WHERE TYPE="GROS"

SQL2 intermédiaire : modification de schéma Le langage SQL2 permet de modifier un schéma de table à partir de la commande ALTER. Syntaxe : ALTER TABLE <nom_table> <altération> Les diverses altérations autorisées sont les suivantes : ajout d'une colonne (ADD COLUMN) modification de la définition d'une colonne (ALTER COLOMN) suppression d'une colonne (DROP COLUMN) ajout d'une contrainte (ADD CONTRAINT) suppression d'une contrainte (DROP CONTRAINT) Exemple ALTER TABLES VINS ADD COLUMN REGION CHAR VARYING

SQL2 complet (full) Extension des outils de gestion des dates et du temps (possibilité de définir des zones d'heures, des intervalles de temps d'échelles variées). Expression de requêtes SELECT étendues avec correspondance de colonnes possibles (2 colonnes de noms différents peuvent être réunies en une seule unique). Possibilité d'utiliser la clause SELECT en argument d'une clause FROM pour construction de tables temporaires. Possibilité de vues concrètes permettant l'interrogation de vues peu modifiées. Contraintes d'intégrité multi-tables (clause CHECK). Contrôles d'intégrité différés.

4. SQL3 - apports Composants multiples Interface client Framework, Foundation, Binding CLI, PSM Transactions, temporel, temps réel Interface client SQL/CLI du SAG (X/OPEN) Procédures stockées Persistent Stored Modules (PSM) Objets Gestion de la récursion Déclencheurs

Un standard en évolution Proposition concurrente de l'ODMG Accord entre constructeurs de SGBD Objets. Support du modèle pur objet de l'OMG (Object Management Group). Variation de SQL traitant des collections imbriquées. Accord ANSI X3 H2 et ODMG Définition d'un langage d'interrogation intégrant modèle relationnel et modèle objet. Convergence relationnel-objet vers SQL3. SQL3 (version 1997) intègre L4G. modèle Objet. Gestion des règles (BD actives).

5. CONCLUSION Le langage SQL est un standard de plus en plus complet et de plus en plus utilisé. C'est la référence pour implémenter et utiliser chaque aspect des SGBD. Tout existant dans les propositions SQL2 ou SQL3, certains éditeurs de logiciels se permettent des fantaisies. Il existe donc encore des approximations et imitations incomplètes. C'est aujourd'hui le langage de communication inter-systèmes RDA, TP, SQL ACCESS GROUP (CLI, FAP). C'est le langage universel sur lequel s'appuient les progiciels. La question est de savoir si SQL réussira à intégrer l'objet.