Introduction Langage de requêtes Langage de Définition de Données Langage de Manipulation de Données Langages de manipulation formels algèbre relationnelle calcul relationnel (basé sur la logique des prédicats) Langages de requêtes orientés utilisateur Structured Query Language (SQL) QUEry Language (QUEL) Query By Example (QBE) Lien avec les langages de programmation immersion d'un langage de requêtes dans un langage de programmation : approche Embedded SQL (Pascal, C, ...) INT 2 Introduction Origine langage SEQUEL du prototype de SGBD relationnel SYSTEM/R (74-76) laboratoire de recherche IBM à San José Normalisation ISO norme SQL1 (1986, 1989) norme SQL2 (1992) nouvelle norme en préparation SQL3 Langage de requêtes des SGBD relationnels ORACLE (Oracle Corporation - 1977) INGRES (Ingres Technology - 1980) DB2 (IBM - 1984) MS SQLSERVER (Microsoft 1990) SYBASE (Sybase Inc - 1984) MySQL (1995) Fonctionnalités : définition et manipulation de données au format relationnel contrôle des données Le langage de manipulation non procédural emprunté à l'algèbre relationnelle et au calcul relationnel de tuples Puissance du langage de manipulation Algèbre Relationnelle + Fonctions-Agrégats + Tri Une requête SQL (sans fonctions et tri) Suite d'opérations de l'algèbre relationnelle 3 Bases de Données Introduction 4 SQL - 1 ! BD Exemple V R P B C L Vins(num, cru, annee, degre) Recoltes(nvin, nprod, quantite) Producteurs(num, nom, prenom, region) Buveurs(num, nom, prenom, ville) Commandes(ncde, date, nb, nvin, qte) Livraisons(ncde, no_ordre, qteLivree) " # $% ! Vins Buveurs num cru degré annee 0,n recoltes BD Exemple num nom prenom ville 0,n 0,n concerne Passer quantite 0,n 1,1 Producteurs 1,1 Commandes num nom prenom region ncde qté date 0,n Donner_lieu Livraisons (1,1) No_ordre qteLivrée date 5 & ' Définition des données Définition des données Numériques : définition des schémas des relations définition de vues relationnelles définition de contraintes d'intégrité définition de droits validation d'un traitement définition du placement et des index (non normalisé => SGBD dépendant !!) Entier : INTEGER, SMALLINT Décimal : DECIMAL (m,n), NUMBER(m,n) Réel flottant : FLOAT, REAL Chaîne de caractères : CHAR (n), VARCHAR(n) Temporel : DATE (dans la norme SQL2 !) chaque SGBD possède d'autres domaines qui lui sont propres Valeur NULL : absence de valeur 7 Bases de Données 6 8 SQL - 2 ( ) Définition des données ) Définition des données règle qui définit la cohérence d'une donnée ou d'un ensemble de données de la BD Contraintes définies en SQL non nullité des valeurs d'un attribut unicité de la valeur d'un attribut ou d'un groupe d'attributs valeur par défaut pour un attribut contrainte de domaine clé primaire (un attribut ou un groupe) intégrité référentielle "minimale" Création CREATE TABLE Vins ( num Integer, cru Char(20), annee Integer) Mise à jour Ajout d'un attribut (norme SQL2 !) ALTER TABLE Vins ADD COLUMN degre Integer CREATE TABLE Vins ( num integer PRIMARY KEY, cru char (40) NOT NULL, annee integer CONSTRAINT Cannee CHECK (annee between 1970 and 2010), degre number(4,2) CONSTRAINT Cdegre CHECK (degre between 9.0 and 15.0)) Suppression (norme SQL2 !) DROP TABLE Vins 9 ! +" * 10 # Domaines limités Clé facultative : Doublons Opérateur de projection différent ( Relation n’est plus un ensemble DISTINCT) 11 Bases de Données SQL - 3