LE LANGAGE DE REQUETES SQL

Slides:



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

PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Programme Introduction aux BD et aux SGBD Le modèle relationnel
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:
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
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,
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Contrôles d'accès aux données
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
Inventé par T. Codd (IBM Recherche)
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Le langage de requêtes SQL
Module 4 : Implémentation de l'intégrité des données.
Le modèle relationnel Plan 1. Concepts descriptifs
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.
Définition des contraintes Vérification des contraintes Triggers
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.
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
Cours n°2 Implémentation et exploitation
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.
RAPPEL SUR LES BASES DE DONNÉES, LE SQL 1 er trimestre V1.0 06/01/2015.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
SQL partie 5 1 LMD create – update – primary key secondary key.
Le langage de définition de données B.T.S. S.I.O – SI3 –
SQL-MAJ, vues - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) SQL : création et mises-à-jour de schémas et de données ● Commandes de.
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
SQL query - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes.
1- phpMyAdmin 3ème partie : Manipulation des données Le langage SQL 2- Gérer les tables 3- Gérer les données.
Intégration web & Base de données 1 Intégration Web & Base de DonnéesMariem Farhat Intérêt des bases de données pour le Web Cours préparé par : Mariem.
Les Bases de données Définition Architecture d’un SGBD
ملخص Initiation à la sgbdr
Structured Query Language SQL DDL
Intégration du P7 dans l’épreuve E41
Initiation aux bases de données et à la programmation événementielle
Langage de manipulation de données (LMD)
Structured Query Language
Généralité sur les bases de données
Les bases de données et le modèle relationnel
Langage de Manipulation des Données LMD
SQL LID – INTERROGATIN DES DONNEES
Maria Berger - Maîtrise d'AES Algèbre relationnelle.
SQL LMD FICHE 4.6.
Manipulation D’Une Base De Données
Langage d’interrogation des Données LID
SQL Structured Query Language
Protection de l’information
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Préface Introduction Objectifs du chapitre I-2 Objectifs du cours I-3 Oracle10g I-4 Oracle Database 10g I-6 Oracle Application Server 10g I-7 Oracle Enterprise.
Remarque : Un nombre ou une lettre en gras fait référence à un chapitre entier ou à une annexe entière. A Affichage des dates par défaut 02-06, Ajouter.
3. LE LANGAGE SQL DML (2) Version 2 - Janvier 2012
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
7 Contraintes d’intégrité en SQL
Info Bases de données avancées
Définition des contraintes Vérification des contraintes Triggers
TP1 - DBMAIN BFSH Lausanne - Switzerland - Tel Université de Lausanne.
Langage SQL ENCG-Tanger Le Langage SQL (1) INTRODUCTION
SQL: Contraintes et Triggers
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
Systèmes d’Information et Application
Systèmes d’Information et Application
Transcription de la présentation:

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

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

Opérations Opérations de base Opérations additionnelles 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

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)

SQL1 - 86 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

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)

2. 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 <citère de restriction>] Restriction : arithmétique (=, <, >, ) textuelle (LIKE) sur intervalle (BETWEEN) sur liste (IN) Possibilité de blocs imbriqués par : IN, EXISTS, NOT EXISTS, ALL, SOME, ANY

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)

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 )

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) WHERE MILLESIME = 1994 HAVING MIN(DEGRE) > 12

Forme générale de la condition <search condition> ::= [NOT] <nom_colonne> q constante ½ <nom_colonne> <nom_colonne> LIKE <modèle_de_chaîne> <nom_colonne> IN <liste_de_valeurs> <nom_colonne> q (ALL ½ ANY ½ SOME) <liste_de_valeurs> EXISTS <liste_de_valeurs> UNIQUE <liste_de_valeurs> <tuple> MATCH [UNIQUE] <liste_de_tuples> <nom_colonne> BETWEEN constante AND constante <search condition> AND ½ OR <search condition> avec q ::= < ½ = ½ > ½ ³ ½£ ½ <> Remarque: <liste_de_valeurs> peut être dynamiquement déterminée par une requête

Requêtes imbriquées (1) Q7: Donner les crus des vins qui n'ont jamais été bus SELECT CRU FROM VINS V WHERE V.NV NOT IN ( SELECT A.NV FROM ABUS A ) SELECT CRU FROM VINS V WHERE V.NV <> ALL ( SELECT A.NV FROM ABUS A)

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

Requêtes imbriquées (3) Q9: Donner le numéro et le cru des vins commandés exactement une fois SELECT NV, CRU FROM VINS WHERE NV MATCH UNIQUE ( SELECT NV FROM ABUS )

Requête Union Q10 :Donner le numéro et le cru des vins bus plus de 100 fois ou bien jamais bu ( SELECT V.NV, V.CRU FROM VINS V, ABUS A WHERE V.NV = A.NV GROUP BY V.NV HAVING COUNT(A.NV) > 100 ) UNION ( SELECT NV, CRU FROM VINS WHERE NV NOT IN (SELECT NV FROM ABUS) )

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 SELECT SGBD Curseur

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

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

Commande 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

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

4. 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

SQL1 - 89 : INTEGRITE VALEURS PAR DEFAUT CONTRAINTES DE DOMAINES 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 100000

SQL1 - 89 : 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

SQL1 – 89 : Création de table CREATE TABLE <nom_table> (<def_colonne> * [<def_contrainte_table>*]) ; < def_colonne > ::= <nom_colonne> < type ½ nom_domaine > [CONSTRAINT nom_contrainte < NOT NULL ½ UNIQUE ½ PRIMARY KEY ½ CHECK (condition)½ REFERENCES nom_table (liste_colonnes) > ] < def_contrainte_table > ::= CONSTRAINT nom_contrainte < UNIQUE (liste_colonnes)½ PRIMARY KEY (liste_colonnes)½ CHECK (condition)½ FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes) > [NOT] DEFERRABLE 7

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). 8

5. 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

LA NORMALISATION DE 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é des applications Longévité des applications Langage de communication inter-systèmes Arguments contre : Manque de rigueur théorique Affaiblit la créativité

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,…) SQL STANDARD VENDEUR.2 VENDEUR.3 VENDEUR.1