Dimension: px
Commencer à balayer dès la page:

Download ""

Transcription

1 Introduction 1 1 Présentation SQL Normes SQL Utilitaires associés Connexion et déconnexion Objets manipulées par SQL Inticateurs Tables Colonnes Types données Types numériques Types chaîne caractères Types temporels Types binaires Valeur NULL Création d'une table Contrainte d'intégrité Types contraintes Exemples contraintes Sélection simple ngage manipulation s données 13 2 Insertion Modication Suppression TABLE DES MATIÈRES ii Table s matières Présentation du polycopié vi Université Nice Sophia-Antipolis ngage SQL version 2.3 Richard Grin 6 novembre Expressions Transactions : Commit/Rollback

2 Interrogations 17 3 Syntaxe générale Clause Clause FROM Clause Clause simple Opérateurs logiques Jointure Jointure d'une table à elle-même Jointure externe Jointure non équi Sous-interrogation Sous-interrogation à une ligne et une colonne Sous-interrogation ramenant plusieurs lignes Sous-interrogation synchronisée Sous-interrogation ramenant plusieurs colonnes Clause EXISTS Fonctions groupes Clause GROUP BY Clause HAVING Fonctions Fonctions arithmétiques Fonctions chaînes caractères Fonctions travail avec les dates Nom l'utilisateur Clause ORDER BY Opérateurs ensemblistes Opérateur UNION Opérateur INTERSECT Opérateur MINUS ngage dénition s données 39 4 Schéma Tables CREATE TABLE AS ALTER TABLE Ajout d'une colonne - ADD Modication d'une colonne - MODIFY DROP TABLE Vues CREATE VIEW DROP VIEW Utilisation s vues Utilité s vues Inx CREATE INDEX Utilisation s inx DROP INDEX Privilèges d'accès à la base GRANT REVOKE Changement mot passe Procédure stockée Trigger Dictionnaire données Gestion s accès concurrents 50 5 Niveaux d'isolation s transactions Traitement par défaut s accès concurrents par Oracle Autres possibilités blocages Verrouillage d'une table en mo exclusif (Exclusive) Verrouillage d'une table en mo Share Row Exclusive Verrouillage d'une table en mo partagé (Share) Verrouillage lignes pour les modier (mo Row Exclusive) Verrouillage lignes en mo Row Share cture consistante pendant une transaction Java et JDBC 56 6 Drivers et gestionnaire drivers Types drivers Types drivers et applet untrusted Servlets et pages JSP Modèles connexion à une base données Utilisation pratique JDBC Étapes du travail avec une base données avec JDBC Classes et interfaces JDBC Connexion à une base données Transactions Instruction SQL simple TABLE DES MATIÈRES iv iii TABLE DES MATIÈRES 5.10 Tableau récapitulatif Consultation s données ()

3 Modication s données (INSERT, UPDATE, DE ou ordre DDL) LETE, Ordre SQL quelconque Instruction SQL paramétrée Procédure stockée Syntaxe spéciale SQL (SQL Escape Syntax) exceptions liées à SQL avertissements liés à SQL Meta données ResultSetMetaData DatabaseMetaData ajouts JDBC ResultSet Regrouper s modications pour les envoyer au SGBD polycopié présente le langage SQL. Il ne suppose que quelques connaissances Ce base exposées dans le polycopié d'introduction aux bases données. exemples s'appuient sur la version du langage SQL implantée dans le Oracle, version 7. exemples et remarques sur la version 8i n'ont SGBD été testées (cette version n'est toujours pas installée...). pas remarques et les corrections d'erreurs peuvent êtreenvoyées par courrier électronique à l'adresse grin@unice.fr, en précisant le sujet Poly PRÉSENTATION DU POLYCOPIÉ vi v TABLE DES MATIÈRES Présentation du polycopié Nouveaux types supportés par JDBC SQL.

4 signie Structured Query nguage c'est-à-dire ngage d'interrogation SQL structuré. fait SQL est un langage complet gestion bases données relationnelles. En Il a été conçu par IBM dans les années 70. Il est venu le langage s systèmes gestion bases données (SGBD) relationnelles standard (SGBDR). à la fois : C'est un langage d'interrogation la base (ordre ) un langage manipulation s données (LMD ; ordres UPDATE, IN- DELETE) SERT, un langage dénition s données (LDD ; ordres CREATE, ALTER, DROP), un langage contrôle l'accès aux données (LCD ; ordres GRANT, REVOKE). langage SQL est utilisé par les principaux SGBDR : DB2, Oracle, Ingres, RDB,... Chacun ces SGBDR a cependant sa propre va- Informix, du langage. Ce support cours présente un noyau commans riante sur l'ensemble ces SGBDR, et leur implantation dans Oracle disponibles a éte normalisé dès 1986 mais les premières normes, trop incomplètes, SQL été ignorées par les éditeurs SGBD. ont norme actuelle SQL-2 (appelée aussi SQL-92) date Elle est par tous mais les SGBD relationnels qui dominent actuellement le acceptée (en particulier Oracle) ne sont toujours pas totalement adaptés à marché norme. cette dénit trois niveaux : SQL-2 Full SQL (ensemble la norme) Intermediate SQL Entry vel (ensemble minimum à respecter pour se dire à la norme SQL-2) est en cours d'homologation. SQL-3 Utilitaires associés 1.3 tous les autres SGBD, Oracle comprend plusieurs utilitaires qui Comme l'emploi du langage SQL et le développement d'applications gestion facilitent s'appuyant sur une base données relationnelle. En particulier SQL- facilite granment la réalisation s traitements eectués pendant FORMS saisie ou la modication s données en interactif par l'utilisateur. Il per- la ssiner les écrans saisie et d'indiquer les traitements associés met cette saisie. D'autres utilitaires permettent décrire les états sorties à sauvegarr les données, d'échanger s données avec d'autres imprimés, travailler en réseau ou constituer s bases données répar- logiciels, entre plusieurs sites. ties cours se limitant strictement à l'étu du langage SQL, nous n'étu- Ce pas tous ces utilitaires. Nous verrons les commans essentielles d'un dierons utilitaire, SQLPLUS, qui facilite l'utilisation interactive du langage SQL seul un utilisateur. Ces commans permettent modier les ordres SQL et par constituer s chiers commans SQL que l'on peut réutiliser ensuite. commans du langage SQL peuvent être tapées directement au clavier par l'utilisateur ou elles peuvent être incluses dans un programme écrit un langage troisième génération (Cobol, ngage C, Fortran, Ada,...) dans à un précompilateur fourni par Oracle. grâce Connexion et déconnexion 1.4 entre dans SQLPLUS par la comman : nom /mot--passe SQLPLUS ux paramètres, nom et mot--passe, sont facultatifs. Si on les omet 2 CHAPITRE 1. INTRODUCTION 1 Chapitre 1 Introduction 1.1 Présentation SQL Version Normes SQL sur la ligne comman, SQLPLUS les manra, ce qui est préférable

5 mot--passe car une comman ps sous Unix permet visualiser pour paramètres d'une ligne comman et donc lire le mot passe. les Unix, la variable d'environnement ORACLE_SID donne le nom la Sous sur laquelle on se connecte. base se déconnecter, l'ordre à taper est EXIT (ou exit car on peut taper Pour commans SQL en majuscules ou en minuscules). les utilise s inticateurs pour désigner les objets qu'il manipule : SQL tables, colonnes, inx, fonctions, etc. utilisateurs, inticateur est un mot formé d'au plus 30 caractères, commençant Un par une lettre l'alphabet. caractères suivants peuvent obligatoirement une lettre, un chire, ou l'un s symboles # $ et _. SQL ne fait pas la être entre les lettres minuscules et majuscules. voyelles accentuées diérence sont pas acceptées. ne inticateur ne doit pas gurer dans la liste s mot clés réservés (voir Un référence Oracle). Voici quelques mots clés que l'on risque d'utiliser manuel comme inticateurs : ASSERT, ASSIGN, AUDIT, COMMENT, DATE, DEFINITION, FILE, FORMAT, INDEX, LIST, MODE, OP- DECIMAL, PARTITION, PRIVILEGES, PUBLIC,, SESSION, SET, TION, relations (d'un schéma relationnel ; voir polycopié du cours sur le relationnel) sont stockées sous forme tables composées lignes modèle colonnes. et on veut utiliser la table créée par un autre utilisateur, il faut spécier Si nom cet utilisateur vant le nom la table : le BERNARD.DEPT 1.1 Remarques Selon la norme SQL-2, le nom d'une table vrait être précédé d'un (a) schéma (voir 4.1). nom Il est d'usage (mais non obligatoire évimment) mettre les noms (b) au singulier : plutôt EMPLOYE que EMPLOYES pour une table table d'employés. 1.1 Exemple DEPT s départements : Table NOMD LIEU DEPT FINANCES PARIS 10 RECHERCHE GRENOBLE 20 VENTE LYON 30 données contenues dans une colonne doivent être toutes d'un même données. Ce type est indiqué au moment la création la table type contient la colonne (voir 1.7). qui colonne est repérée par un inticateur unique à l'intérieur Chaque table. Deux colonnes ux tables diérentes peuvent porter le chaque nom. Il est ainsi fréquent donner le même nom à ux colonnes même ux tables diérentes lorsqu'elles corresponnt à une clé étrangère à la primaire référencée. Par exemple, la colonne Dept s tables DEPT et clé EMP. colonne peut porter le même nom que sa table. Une nom complet d'une colonne est en fait celui sa table, suivi d'un etdu nom la colonne. Par exemple, la colonne DEPT.LIEU point nom la table peut être omis quand il n'y a pas d'ambiguïté sur la à laquelle elle appartient, ce qui est généralement le cas. table Types données 1.6 types données d'oracle ne suivent pas la norme SQL-2. types numériques la norme SQL-2 sont: Nombres entiers : TINYINT (sur 1 octet, 0 à 255), SMALLINT (sur à ), INTEGER (sur 4 octets, octets, ). à 4 CHAPITRE 1. INTRODUCTION 1.5. OBJETS MANIPULÉES PAR SQL 3 40 FABRICATION ROUEN Colonnes 1.5 Objets manipulées par SQL Inticateurs TABLE Tables Types numériques Types numériques SQL-2 Nombres décimaux avec un nombre xe décimales : NUMERIC, DE- (la norme impose à NUMERIC d'être implanté avec exacte- CIMAL ment le nombre décimales indiqué alors que l'implantation DE-

6 peut avoir plus décimales) : DECIMAL(p, d) correspond à CIMAL nombres décimaux qui ont pchires signicatifs et d chires après s virgule ; NUMERIC a la même syntaxe. la Numériques non exacts à virgule ottante : REAL (simple précision, au moins 7 chires signicatifs), DOUBLE PRECISION ou FLOAT avec précision, avec au moins 15 chires signicatifs). (double dénition s types non entiers dépend du SGBD (le nombre chires varie). Reportez-vous au manuel du SGBD que vous utilisez pour signicatifs précisions. plus type BIT permet ranger une valeur booléenne (un bit) en SQL-2. n'a qu'un seul type numérique NUMBER. Par soucis compatibilité, Oracle Oracle permet d'utiliser les types SQL-2 mais ils sont ramenés au type NUMBER. la dénition d'une colonne type numérique, on peut préciser le Lors maximum chires et décimales qu'une valeur cette colonne nombre contenir : pourra NUMBER ) NUMBER(taille_maxi décimales ) NUMBER(taille_maxi, le paramètre décimales n'est pas spécié, 0 est pris par défaut. valeur Si du nombre doit être inférieure à NUMBER est un nombre à absolue ottante (on ne précise pas le nombre chifres après la virgule) qui virgule avoir jusqu'à 38 chires signicatifs. peut d'un nombre avec plus chires que taille_maxi sera refusée L'insertion ne prend en compte ni le signe ni le point décimal). décimales (taille_maxi seront éventuellement arrondies en fonction s valeurs données pour taille_maxi et décimales. 1.2 Exemple NUMBER(8,2) SALAIRE une colonne numérique SALAIRE. valeurs auront au maximum dénit 2 décimales et 8 chires au plus au total (donc 6 chires avant le constantes numériques ont le format habituel : -10, 2.5, 1.2E-8 (ce représentant 1.2 x 10,8 ). rnier constantes chaînes caractères sont entourées par s apostrophes Si la chaîne contient une apostrophe, celle-ci doit être doublée. Exemple : ('). 'aujourd''hui'. existe ux types pour les colonnes qui contiennent s chaînes Il : caractères le type CHAR pour les colonnes qui contiennent s chaînes longueur ne contenant pas plus 255 caractères (255 pour Oracle, constantes longueur maximum varie suivant les SGBD). cette déclaration type chaîne caractères longueur constante ale suivant: format ) CHAR(longueur longueur est la longueur maximale (en nombre caractères) qu'il où possible stocker dans le champ. longueur doit être obligatoirement sera spéciée. L'insertion d'une chaîne dont la longueur est supérieure longueur sera refusée. Une chaîne plus courte que longueur sera complétée à par s espaces (important pour les comparaisons chaînes). le type VARCHAR pour les colonnes qui contiennent s chaînes longueurs variables. Tous les SGBD ont une longueur maximum pour ces (plusieurs milliers caractères). chaînes déclare ces colonnes par : ) VARCHAR(longueur indique la longueur maximale s chaînes contenues dans la longueur types Oracle sont les types SQL-2 mais le type VARCHAR s'appelle dans Oracle (la taille maximum est 2000 caractères). VARCHAR2 types temporels SQL-2 sont: réserve 2chires pour le mois et le jour et 4 pour l'année ; DATE pour les heures, minutes et secons (les secons peuvent comporter TIME certain nombre décimales) ; un 6 CHAPITRE 1. INTRODUCTION 1.6. TYPES DE DONNÉES Types chaîne caractères Types chaîne caractères SQL-2 Type numérique d'oracle colonne Types chaîne caractères d'oracle Types temporels Types temporels SQL-2 point décimal).

7 permet d'indiquer un moment précis par une date avec TIMESTAMP minutes et secons (6 chires après la virgule ; c'est-à-dire heures, déclaration type date a le format suivant: DATE constante type date est une chaîne caractères entre apostrophes. Une format dépend s options que l'administrateur a choisies au la création la base. S'il a choisi franciser la base, le format moment d'une date est jour/mois/année, par exemple, '25/11/92' (le format par défaut donnerait '25-NOV-92'). L'utilisateur peut saisir s américain telles que '3/8/93' mais les dates enregistrées dans la base ont toujours dates type permet d'enregistrer s données telles que les images et les sons, Ce très gran taille et avec divers formats. n'a pas normalisé ce type données. diérents SGBD fournissent SQL-2 un type pour ces données mais les noms varient: LONG RAW pour mais IMAGE pour Sybase, BYTE pour Informix, etc. Oracle, n'utiliserons pas ce type données dans ce cours. Nous colonne qui n'est pas renseignée, et donc vi, est dite contenir la Une NULL. Cette valeur n'est pas zéro, c'est une absence valeur. valeur CREATE TABLE permet créer une table en dénissant le nom L'ordre le type (voir 1.6) chacune s colonnes la table. Nous ne verrons et que trois s types données utilisés dans SQL : numérique, chaîne ici et date. Nous nous limiterons dans cette section à une syntaxe caractères cet ordre (voir 1.8 et 4.2.1pour s compléments) : simpliée TABLE table CREATE type1, (colonne1 type2, colonne ) est le nom que l'on donne à la table ; colonne1, colonne2,.. sont table noms s colonnes ; type1, type2,.. sont les types s données qui seront les dans les colonnes. contenues peut ajouter après la scription d'une colonne l'option NOT NULL interdira que cette colonne contienne la valeur NULL. peut aussi qui s contraintes d'intégrité portant sur une ou plusieurs colonnes ajouter 1.3 Exemple TABLE article CREATE ref CHAR(10) NOT NULL, ( DECIMAL(9,2), prix la dénition d'une table, on peut indiquer s contraintes d'intégrité Dans sur une ou plusieurs colonnes. contraintes possibles sont: portant PRIMARY KEY, FOREIGN KEY...REFERENCES, CHECK UNIQUE, contrainte doit être nommée (ce qui permettra la désigner par Chaque ordre ALTER TABLE, et ce qui est requis par les nouvelles normes SQL) un la faisant précér : en une colonne : la contrainte porte sur une seule colonne. Elle suit la sur la colonne dans un ordre CREATE TABLE (pas possible dénition une table : la contrainte porte sur une ou plusieurs colonnes. Elles se sur au même niveau que les dénition s colonnes dans un ordre place 8 CHAPITRE 1. INTRODUCTION 1.7. CRÉATION D'UNE TABLE 7 en microsecons). Types temporels d'oracle la table (voir 1.8). chires pour chacun s nombres, par exemple, '03/08/93'. ux Oracle une donnée type DATE inclut un temps en heures, mi- Dans nutes et secons. datemaj DATE) Types binaires 1.8 Contrainte d'intégrité Valeur NULL CONSTRAINT nom-contrainte contrainte Il existe s contraintes : 1.7 Création d'une table dans un ordre ALTER TABLE). CREATE TABLE ou ALTER TABLE.

8 une contrainte sur une table :) (pour KEY (colonne1, colonne2,...) PRIMARY une contrainte sur une colonne :) (pour KEY PRIMARY la clé primaire la table (contrainte d'intégrité d'entité). Aucune indique colonnes qui composent cette clé ne doit avoir une valeur NULL. s une contrainte sur une table :) (pour (colonne1, colonne2,...) UNIQUE une contrainte sur une colonne :) (pour UNIQUE qu'une colonne (ou la concaténation plusieurs colonnes) contienne interdit valeurs intiques. ux une contrainte sur une table :) (pour KEY (colonne1, colonne2,...) FOREIGN tableref [(col1, col2,...)] REFERENCES DELETE CASCADE] [ON une contrainte sur une colonne :) (pour tableref [(col1 )] REFERENCES DELETE CASCADE] [ON que la concaténation colonne1, colonne2,... (ou la colonne que indique dénit pour une contrainte sur une colonne) est une clé étrangère qui l'on référence à la concaténation s colonnes col1, col2,... la table table- fait (contrainte d'intégrité référentielle). Si aucune colonne tableref n'est ref c'est la clé primaire tableref qui est prise par défaut. indiquée, contrainte ne permettra pas d'insérer une ligne la table si la Cette tableref ne contient aucune ligne dont la concaténation s valeurs table col2,... est égale à la concaténation s valeurs colonne1, colonne2,... col1, col2,... doivent avoir la contrainte PRIMARY KEY ou UNIQUE. col1, implique qu'une valeur colonne1, colonne2,... va référencer une et Ceci seule ligne tableref. une ON DELETE CASCADE indique que la suppression d'une L'option tableref va entrainer automatiquement la suppression s lignes qui ligne référencent dans la table. Si cette option n'est pas indiquée, il est impossible la supprimer s lignes tableref qui sont référencées par s lignes la table. ) CHECK(condition une condition que la ou les colonnes vront vérier (exemples dans donne section suivante). peut ainsi indiquer s contraintes d'intégrité la dont on a s exemples dans la section Cette contrainte peut domaines une contrainte colonne ou table. être contraintes d'intégrité peuvent être ajoutées ou supprimées par la Des ALTER TABLE (exemple à la n la section 1.8.2). Mais pour comman une contrainte, il faut la supprimer et ajouter ensuite la contrainte modier modiée. est parfois intéressant d'enlever temporairement s contraintes. Oracle Il permet par la comman ALTER TABLE... DISABLE/ENABLE mais le pas la comman la norme SQL-2 SET CONSTRAINTS... DE- n'utilise qui permet choisir si le moment oùsontvériées FERRED/IMMEDIATE contraintes (immédiatement après chaque instruction ou seulement à la les la transaction). n TABLE EMP ( CREATE NUMBER(5) CONSTRAINT KEMP PRIMARY KEY, MATR VARCHAR(10) CONSTRAINT NOM_UNIQUE UNIQUE NOME MAJ CHECK (NOME = UPPER(NOME)), CONSTRAINT... NUMBER(2) CONSTRAINT R_DEPT REFERENCES DEPT(DEPT) DEPT TABLE EMP ( CREATE NUMBER(5), MATR VARCHAR(10) CONSTRAINT NOM_UNIQUE UNIQUE NOME MAJ CHECK (NOME = UPPER(NOME)), CONSTRAINT... NDEPT DEPT NUMBER(2) CHECK (DEPT IN (10, 20, 30, 35, 40)), CONSTRAINT KEMP PRIMARY KEY (MATR), CONSTRAINT R_DEPT FOREIGN KEY (DEPT) REFERENCES DEPT(DEPT)) CONSTRAINT contraintes portent sur plusieurs colonnes et ne peuvent être Certaines que comme contraintes table : indiquées TABLE PARTICIPATION ( CREATE NUMBER(5) CONSTRAINT R_EMP REFERENCES EMP, MATR VARCHAR2(5) CONSTRAINT R_PROJET REFERENCES PROJET, CODEP..., 10 CHAPITRE 1. INTRODUCTION 1.8. CONTRAINTE D'INTÉGRITÉ Types contraintes Exemples contraintes Quelques contraintes sur s colonnes : CONSTRAINT NDEPT CHECK (DEPT IN (10, 20, 30, 35, 40))) Des contraintes colonne peuvent être mises au niveau la table : CONSTRAINT PKPART PRIMARY KEY(MATR, CODEP))

9 ALTER TABLE on peut ajouter, enlever ou modier s contraintes Avec colonnes ou tables : TABLE EMP ALTER CONSTRAINT NOM_UNIQUE DROP TABLE EMP ALTER NOME CONSTRAINT NOM_UNIQUE UNIQUE MODIFY peut aussi provisoirement supprimer et ensuite rétablir une contrainte les clauses DISABLE et ENABLE ALTER TABLE : par TABLE EMP ALTER CONSTRAINT NOM_UNIQUE UNIQUE DISABLE Sélection simple 1.9 pour retrouver s informations stockées dans la base est SE- L'ordre LECT. étudions dans ce chapitre une partie simpliée la syntaxe, suf- Nous néanmoins à la plupart s interrogations courantes. Une étu plus sant sera vue au chapitre 3. complète exp1, exp2,... table FROM prédicat est le nom la table sur laquelle porte la sélection. exp1, exp2,... table la liste s expressions (colonnes, constantes,... ; voir 1.10) que l'on veut est Cette liste peut être *, auquel cas toutes les colonnes la table obtenir. 1.4 Exemples * FROM DEPT (a) NOME, POSTE FROM EMP (b) NOME, SAL + NVL(COMM,0) FROM EMP (c) clause permet spécier quelles sont les lignes à sélectionner. prédicat peut prendre s formes assez complexes. forme la plus est exp1 op exp2, où exp1 et exp2 sont s expressions (voir 1.10) simple 1.5 Exemple MATR, NOME, SAL * 1.15 EMP FROM SAL + NVL(COMM,0) >= Expressions 1.10 expressions acceptées par SQL portent sur s colonnes, s constantes, fonctions. s trois types d'éléments peuvent être reliés par s opérateurs arith- Ces (+ - * /), maniant s chaînes caractères ( pour concaténer métiques chaînes), s dates (- donne le nombre jours entre ux dates). s priorités s opérateurs arithmétiques sont celles l'arithmétique (* et /, puis + et -). Il est possible d'ajouter s parenthèses dans classique expressions pour obtenir l'ordre calcul que l'on désire. les expressions peuvent gurer : en tant que colonne résultat d'un dans une clause dans une clause ORDER BY (étudiée en 3.11) dans les ordres manipulations données (INSERT, UPDATE, DE- étudiés au chapitre 2) LETE tableau qui suit donne le nom s principales fonctions (voir 3.10 pour détails). plus GROUPE ARITHMETIQUESDE CHAINES DE DATES DE NVL NVL NVL SUM TO_CHAR SUBSTR TO_CHAR COUNT SQRT LENGTH ADD_MONTHS VARIANCE ABS INSTR MONTHS_BETWEEN MAX 1.2 Remarque expression dont au moins un s termes a la valeur NULL donne Toute fonction NVL (Null VaLue) permet remplacer une valeur NULL une valeur par défaut : par (expr1, expr2 ) NVL la valeur expr1, sauf si expr1 alavaleur NULL, auquel cas NVL prend prend 12 CHAPITRE 1. INTRODUCTION 1.9. SÉLECTION SIMPLE 11 ADD (CONSTRAINT SAL_MIN CHECK(SAL + NVL(COMM,0) > 5000)) sont sélectionnées. MIN POWER TO_NUMBER NEXT_DAY comme résultat la valeur NULL. la valeur expr2. et op est un s opérateurs =,!= (diérent), >, >=, <, <=. Exemple 1.6 NVL(COMM, 0)

10 manipulation s ngage données langage manipulation données est le langage permettant modier les informations contenues dans la base. existe trois commans SQL permettant d'eectuer les trois types Il s données : modication trois commans travaillent sur la base telle qu'elle était au début Ces l'exécution la comman. modications eectuées par les autres entre le début et la n l'exécution ne sont pas prises en compte utilisateurs pour les transactions validées). (même INTO table (col1,..., coln ) INSERT (val1,...,valn ) VALUES... est le nom la table sur laquelle porte l'insertion. col1,..., coln est la table s noms s colonnes pour lesquelles on donne une valeur. Cette liste liste optionnelle. Si elle est omise, ORACLE prendra par défaut l'ensemble s est la table dans l'ordre où elles ont été données lors la création colonnes la table. Si une liste colonnes est spéciée, les colonnes ne gurant pas 2.1 Exemples INSERT INTO pt VALUES (10, 'FINANCES', 'PARIS') (a) INSERT INTO pt (lieu, nomd, pt) (b) ('GRENOBLE', 'RECHERCHE', 20) VALUES uxième forme avec la clause permet d'insérer dans une table lignes provenant d'une table la base. a la même syntaxe s 2.2 Exemple la participation MARTIN au groupe projet numéro Enregistrer : 10 INTO PARTICIPATION (MATR, CODEP) INSERT MATR, 10 EMP FROM Modication 2.2 comman UPDATE permet modier les valeurs d'un ou plusieurs dans une ou plusieurs lignes existantes d'une table. champs, table UPDATE col1 = exp1, col2 = exp2,... SET prédicat (col1, col2,...) = (...) SET prédicat est le nom la table mise à jour ; col1, col2,... sont les noms s colonnes table qui seront modiées ; exp1, exp2,... sont s expressions. Elles peuvent être un ordre renvoyant les valeurs attribuées aux colonnes aussi variante la syntaxe). (uxième valeurs col1, col2... sont mises à jour dans toutes les lignes satisfaisant le prédicat. clause est facultative. Si elle est absente, toutes lignes sont mises à jour. les prédicat peut contenir s sous-interrogations (voir 3.6). 2.3 Exemples Faire passer MARTIN dans le département 10 : (a) 14 CHAPITRE 2. LANGAGE DE MANIPULATION DES DONNÉES 13 dans la liste auront la valeur NULL. Chapitre 2 qu'un normal. NOME = 'MARTIN' INSERT ajout lignes UPDATE mise à jour lignes DELETE suppression lignes ou table UPDATE 2.1 Insertion ou INTO table (col1,..., coln ) INSERT UPDATE EMP SET DEPT = 10

11 Augmenter 10 % les commerciaux : (b) EMP UPDATE SAL = SAL * 1.1 SET POSTE = 'COMMERCIAL' Donner à CLEMENT un salaire 10 % au ssus la moyenne s (c) s secrétaires : salaires EMP UPDATE SAL = ( AVG(SAL) * 1.10 SET EMP FROM POSTE = 'SECRETAIRE') remarquera que la moyenne s salaires sera calculée pour les valeurs qu'avaient les salaires au début l'exécution la comman et que les modications eectuées sur la base pendant l'exécution UPDATE cette comman ne seront pas prises en compte. Enlever (plus exactement, mettre à la valeur NULL) la commission (d) MARTIN : EMP UPDATE COMM = NULL SET Suppression 2.3 DELETE permet supprimer s lignes d'une table. L'ordre FROM table DELETE prédicat clause indique quelles lignes doivent être supprimées. AT- : cette clause est facultative; si elle n'est pas précisée, TOUTES TENTION LIGNES DE LA TABLE SONT SUPPRIMEES (heureusement qu'il LES ROLLBACK!). existe Transactions : Commit/Rollback 2.4 transaction est un ensemble modications la base qui forment Une sous peine laisser la base dans un état incohérent. tout, transaction commence au début d'une session travail ou juste Une la n la transaction précénte. L'utilisateur peut à tout moment après (et terminer) la transaction en cours par la comman COMMIT. valir modications viennent alors dénitives et visibles à toutes les autres transactions. : tant que la transaction n'est pas validée, les insertions, IMPORTANT et suppressions qu'elle a exécutées n'apparaissent pas aux autres modications transactions. peut annuler (et terminer) la transaction en cours par la L'utilisateur ROLLBACK. Toutes les modications puis le début la comman sont annulées. transaction mécanisme est utilisé par Oracle pour assurer l'intégrité la base en Ce n anormale d'une tâche utilisateur : Oracle lance automatiquement cas ROLLBACK s transactions non terminées. un une erreur survient lors d'une transaction, un ROLLBACK est auto- Si eectué. Cela signie par exemple que, si une erreur survient au matiquement d'une instruction UPDATE qui modie plusieurs lignes, aucune ligne cours 2.1 Remarque ordres SQL, notamment ceux dénitions données, pro- Certains une validation automatique la transaction en cours. fait voquent quitter SQLPLUS par EXIT provoque également uncommit. peut indiquer si la transaction écrira ou non dans la base : TRANSACTION {READ ONLY READ WRITE SET peut aussi indiquer le gré concurrence que l'on accepte pour transaction par rapport aux autres transactions (voir chapitre 5). cette instructions SQL sont atomiques : quand une instruction provoque erreur (par exemple si une contrainte d'intégrité n'est pas vériée), toutes une modications déjà eectuées par cette instruction sont annulées. Mais les erreur ne provoque pas rollback automatique la transaction. cette 16 CHAPITRE 2. LANGAGE DE MANIPULATION DES DONNÉES 2.3. SUPPRESSION 15 NOME = 'MARTIN' NOME = 'CLEMENT' ne sera modiée. NOME = 'MARTIN' prédicat peut contenir s sous-interrogations (voir 3.6). Exemple 2.4 DELETE FROM pt pt = 10 un tout indivisible : il faut eectuer ces modications entièrement ou pas du

12 FROM... BY... GROUP... HAVING BY... ORDER clause permet d'indiquer quelles colonnes, ou quelles expressions Cette être retournées par l'interrogation. doivent [DISTINCT] * ou [DISTINCT] exp1 [[AS] nom1 ], exp2 [[AS] nom2 ],... exp2,... sont s expressions, nom1, nom2,... sont s noms facultatifs exp1, 30 caractères maximum donnés aux expressions. Chacun ces noms est rrière l'expression, séparé cette rnière par un blanc ; il consti- inséré le titre la colonne dans l'achage du résultat la sélection. mot tuera AS est optionnel. clé 3.1 Exemples * FROM DEPT (a) DISTINCT POSTE FROM EMP (b) NOME, SAL + NVL(COMM,0) AS Salaire (c) le nom contient s séparateurs (espace, caractère spécial), ou s'il est Si à un mot réservé SQL (exemple : DATE), il doit être mis entre intique 3.2 Exemple NOME, SAL + NVL(COMM,0) "Salaire Total" nom complet d'une colonne d'une table est le nom la table suivi d'un et du nom la colonne. Par exemple : EMP.MATR, EMP.DEPT, point DEPT.DEPT nom la table peut être omis quand il n'y a pas d'ambiguïté. Il être précisé s'il y a une ambiguïté, ce qui peut arriver quand on fait une doit sur plusieurs tables à la fois et que celles-ci contiennent s colonnes sélection clause FROM donne la liste s tables participant à l'interrogation. Il possible lancer s interrogations utilisant plusieurs tables à la fois. est table1 [synonyme1 ], table2 [synonyme2 ],... FROM synonyme2,... sont s synonymes attribués facultativementaux synonyme1, 18 CHAPITRE 3. INTERROGATIONS 17 mot clé facultatif DISTINCT ajouté rrière l'ordre permet les duplications : si, dans le résultat, plusieurs lignes sont in- d'éliminer tiques, une seule sera conservée. Chapitre 3 FROM EMP Interrogations guillemets. 3.1 Syntaxe générale FROM EMP possè six clauses diérentes, dont seules les ux premières L'ordre sont obligatoires. Elles sont données ci-ssous, dans l'ordre dans lequel elles doivent apparaître, quand elles sont utilisées : qui ont le même nom (voir en particulier 3.5). 3.1 Remarque norme SQL-2, mais pas Oracle, permet d'avoir s emboî- tés parmi les expressions. 3.2 Clause 3.3 Clause FROM pour le temps la sélection. utilise cette possibilité pour lever tables ambiguïtés, quand la même table est utilisée plusieurs façons dif- certaines dans une même interrogation (voir ou pour s exemples férentes Quand on a donné un synonyme à une table dans une re- caractéristiques). quête, elle n'est plus reconnue sous son nom d'origine dans cette requête. * signie que toutes les colonnes la table sont sélectionnées.

13 nom complet d'une table est celui son créateur (celui du nom du selon la norme SQL-2 : voir 4.1), suivi d'un point et du nom la table. shéma défaut, le nom du créateur est celui l'utilisateur en cours. Ainsi, on Par se dispenser préciser ce nom quand on travaille sur ses propres tables. peut il faut le préciser dès que l'on se sert la table d'un autre utilisateur. Mais on précise plusieurs tables dans la clause FROM, on obtient le Quand cartésien s tables. verra en étudiant les jointures (voir 3.5) que produit peut se restreindre à un sous-ensemble ce produit cartésien grâce à la l'on 3.3 Exemple cartésien s noms s départements par les numéros s dé- Produit : partements B.pt, A.nomd SQL> NOMD DEPT FINANCES 10 FINANCES 20 FINANCES 30 RECHERCHE 10 RECHERCHE 20 RECHERCHE 30 VENTES 10 VENTES 20 norme SQL-2 (et les rnières versions d'oracle) permet d'avoir un à la place d'un nom table. 3.4 Exemples Pour obtenir la liste s employés avec le pourcentage leur salaire (a) rapport au total s salaires, il fallait auparavant utiliser une vue par 4.3). Il est maintenant possible d'avoir cette liste avec une seule (voir : instruction nome, sal, sal/total*100 select emp, from sum(sal) as total from emp) (select peut même donner un synonyme comme nom table au select : (b) nome, sal, sal/total*100 select emp, (select pt, sum(sal) as total from emp from by pt) TOTALDEPT group 3.2 Remarque select n'est pas une sous-interrogation ; on ne peut synchroniser le Ce Clause 3.4 clause permet spécier quelles sont les lignes à sélection- dans une table ou dans le produit cartésien plusieurs tables. Elle est ner d'un prédicat (expression logique ayant lavaleur vrai ou faux) qui sera suivie pour chaque ligne. lignes pour lesquelles le prédicat est vrai seront évalué sélectionnées. clause where est étudiée ici pour la comman. Elle peut se aussi dans les commans UPDATE et DELETE avec la même rencontrer prédicat prédicat simple est la comparaison ux expressions ou plus au Un d'un opérateur logique : moyen exp1 = exp2 exp1!= exp2 exp1 < exp2 exp1 BETWEEN exp2 AND exp3 exp1 LIKE exp2 trois types d'expressions (arithmétiques, caractères, ou dates) peuvent comparées au moyen s opérateurs d'égalité ou d'ordre (=,!=, <, >, <=, >=): être les types date, la relation d'ordre est l'ordre chronologique ; pour les pour caractères, la relation d'ordre est l'ordre lexicographique. types 20 CHAPITRE 3. INTERROGATIONS 3.3. CLAUSE FROM 19 where emp.pt = TOTALDEPT.pt select avec les autres tables du from (voir 3.6.3). clause. 2 FROM pt A,pt B; syntaxe Clause simple 30 VENTES exp1 > exp2 <= exp2 exp1 exp1 >= exp2 exp1 NOT LIKE exp2 exp1 IN (exp2, exp3,...) NOT IN (exp2, exp3,...) exp1 IS NULL exp IS NOT NULL exp

14 faut ajouter à ces opérateurs classiques les opérateurs suivants BET- Il IN, LIKE, IS NULL : WEEN, vrai si exp1 est compris entre exp2 et exp3, bornes incluses. est IN (exp2, exp3...) exp1 vrai si exp1 est égale à l'une s expressions la liste entre parenthèses. est LIKE exp2 exp1 l'égalité ux chaînes en tenant compte s caractères jokers dans teste 2ème chaîne : la _ remplace 1 caractère exactement % remplace une chaîne caractères longueur quelconque, y com- longueur nulle pris fonctionnement est le même que celui s caractères joker? et * pour le sous Unix. Ainsi l'expression 'MARTIN' LIKE '_AR%' sera vraie. shell IS NULL permet tester la valeur NULL : L'opérateur [NOT] NULL IS vrai si l'expression alavaleur NULL (ou l'inverse avec NOT). est 3.3 Remarque prédicat expr = NULL est toujours faux, et ne permet donc pas opérateurs logiques AND et OR peuvent être utilisés pour combiner prédicats (l'opérateur AND est prioritaire par rapport à l'opérateur plusieurs Des parenthèses peuvent être utilisées pour imposer une priorité dans OR). du prédicat, ou simplement pour rendre plus claire l'expression l'évaluation logique. NOT placé vant un prédicat en inverse le sens. L'opérateur 3.5 Exemples Sélectionner les employés du département 30ayant un salaire supérieur (a) 1500 frs. à NOME FROM EMP Acher une liste comprenant les employés du département 30 dont le (b) est supérieur à Frs et (attention, à la traduction par OR) salaire employés qui ne touchent pas commission. les nome emp FROM pt = 30 AND sal > OR comm IS NULL * FROM EMP (c) (POSTE = 'DIRECTEUR' OR POSTE = 'SECRETAIRE') clause peut aussi être utilisée pour faire s jointures (vues le cours sur le modèle relationnel) et s sous-interrogations (une s dans utilisées dans un provient d'une requête emboîtée) valeurs nous allons le voir dans les sections suivantes. comme Jointure 3.5 on précise plusieurs tables dans la clause FROM, on obtient le pro- Quand cartésien s tables. produit cartésien ux tables ore en général duit d'intérêt. Ce qui est normalement souhaité, c'est joindre les informa- peu diverses tables, en précisant quelles relations les relient entre elles. tions la clause qui permet d'obtenir ce résultat. Elle vient limiter C'est sélection en ne conservant que le sous-ensemble du produit cartésien cette satisfait le prédicat. qui 3.6 Exemple s employés avec le nom du département où ils travaillent: Liste NOME, NOMD EMP, DEPT FROM clause indique ne conserver dans le produit cartésien tables EMP et DEPT que les éléments pour lesquels le numéro s département provenant la table DEPT est le même que le numéro département provenant la table EMP. Ainsi, on obtiendra une jointure entre les tables EMP et DEPT d'après le numéro bien département. 3.6 est un exemple d'équi-jointure. peut aussi faire s L'exemple non-équi en remplaçant le signe = par un s opérateurs jointures 3.4 Remarque norme SQL-2 a introduit une nouvelle syntaxe pour la jointure qui 22 CHAPITRE 3. INTERROGATIONS 3.4. CLAUSE 21 exp1 BETWEEN exp2 AND exp3 AND DEPT = 10 exp retrouve l'opération jointure du modèle relationnel. tester si l'expression est NULL Opérateurs logiques EMP.DEPT = DEPT.DEPT DEPT = 30 AND SAL > 1500 comparaison (< <= > >=). permet séparer les conditions jointure s conditions sélection

15 lignes. L'exemple 3.6 vient: s nome, nomd select peut être utile rassembler s informations venant d'une ligne d'une Il avec s informations venant d'une autre ligne la même table. table ce cas il faut renommer au moins l'une s ux tables en lui donnant Dans un synonyme (voir 3.3), an pouvoir préxer sans ambiguïté chaque 3.7 Exemple les employés qui ont un supéreur, en indiquant pour chacun le Lister son supérieur : nom EMP.NOME EMPLOYE, SUPE.NOME SUPERIEUR EMP, EMP SUPE FROM EMP.SUP = SUPE.MATR suivant donnera la liste s employés et leur département: DEPT.DEPT, NOMD, NOME DEPT, EMP FROM DEPT.DEPT = EMP.DEPT cette sélection, un département qui n'a pas d'employé n'apparaîtra Dans dans la liste, puisqu'il n'y aura dans le produit cartésien s ux jamais aucun élément où l'on trouve une égalité s colonnes DEPT. tables pourrait pourtant désirer une liste s divers départements, avec leurs s'ils en ont, sans omettre les départements vis. écrira alors : employés DEPT.DEPT, NOMD, NOME DEPT, EMP FROM DEPT.DEPT = EMP.DEPT (+) (+) ajouté après un nom colonne peut s'interpréter comme l'ajout, la table à laquelle la colonne appartient, d'une ligne ctive qui réalise la dans avec les lignes l'autre table, qui n'ont pas correspondant correspondance réel. dans l'ordre ci-ssus, le (+) après la colonne EMP.DEPT provoque Ainsi, d'une ligne nulle virtuelle à la table EMP, pour laquelle le prédicat l'ajout = EMP.DEPT sera vrai pour tout département sans employé. DEPT.DEPT sans employé feront maintenant partie cette sélection. départements 3.5 Remarque syntaxe est particulière à Oracle. norme SQL2 spécie une Cette diérente (non admise par Oracle). L'exemple précént s'écrirait syntaxe : DEPT.DEPT, NOMD, NOME emp RIGHT OUTER JOIN pt ON emp.pt = pt.pt FROM même, il existe LEFT OUTER JOIN qui correspond à l'ajout d'une De ctive dans la table gauche (avant le LEFT OUTER JOIN) et ligne FULL OUTER JOIN pour l'ajout lignes ctives dans les ux tables. jointures autres que les équi-jointures peuvent être représentées en en utilisant les opérateurs comparaison =, >, <, >=, <=, et aussi SQL Exemples Si la table tranche contient les informations sur les tranches d'impôts, (a) peut obtenir le taux la tranche maximum liée à un salaire par la on suivante : requête nome, sal, pourcentage select emp, join tranche on sal between min and max from Sous Oracle, on écrit : (b) nome, sal, pourcentage select emp, tranche from sal between min and max where Sous-interrogation 3.6 caractéristique puissante SQL est la possibilité qu'un prédicat Une dans une clause (expression à droite d'un opérateur employé comporte un emboîté. comparaison) exemple, la sélection s employés ayant même poste que MARTIN Par s'écrire en joignant la table EMP avec elle-même : peut NOME EMP, EMP MARTIN FROM POSTE = MARTIN.POSTE MARTIN.NOME = 'MARTIN' AND 24 CHAPITRE 3. INTERROGATIONS 3.5. JOINTURE 23 from emp join pt on pt.pt = emp.pt Oracle n'admet pas cette syntaxe Jointure d'une table à elle-même nom colonne Jointure non équi between et in Jointure externe

16 on peut aussi la formuler au moyen d'une sous-interrogation : mais NOME EMP FROM POSTE = ( POSTE EMP FROM NOME = 'MARTIN') ce cas, le imbriqué équivaut à une valeur. Dans exp op (...) 3.9 Exemple s employés travaillant dans le même département que MER- Liste : CIER NOME FROM EMP DEPT = ( DEPT FROM EMP NOME = 'MERCIER') peut comporter plusieurs sous-interrogations, soit imbriquées, Un soit au même niveau dans diérents prédicats combinés par s AND 3.10 Exemples Liste s employés du département 10ayant même poste que quelqu'un (a) département VENTES : du NOME, POSTE EMP FROM DEPT = 10 POSTE IN AND POSTE ( EMP FROM DEPT = ( DEPT DEPT FROM NOMD = 'VENTES')) Liste s employés ayant même poste que MERCIER ou un salaire (b) à CHATEL : supérieur EMP FROM POSTE = ( POSTE FROM EMP NOME = 'MERCIER') SAL > ( SAL FROM EMP NOME = 'CHATEL') OR 3.11 Exemple s employés travaillantàlyon et ayant même poste que FRE- Liste MONT. NOME, POSTE EMP, DEPT FROM LIEU = 'LYON' EMP.DEPT = DEPT.DEPT AND POSTE = ( POSTE FROM EMP AND sous-interrogation peut ramener plusieurs lignes à condition que Une comparaison admette à sa droite un ensemble valeurs. l'opérateur opérateurs permettant comparer une valeur à un ensemble sont: valeurs l'opérateur IN les opérateurs obtenus en ajoutant ANY ou ALL à la suite s opéra- comparaison classique =,!=, <, >, <=, >=. teurs : la comparaison sera vraie si elle est vraie pour au moins un ANY l'ensemble (elle est donc fausse si l'ensemble est vi). élément : la comparaison sera vraie si elle est vraie pour tous les éléments ALL l'ensemble (elle est vraie si l'ensemble est vi). exp op ANY (...) exp op ALL (...) exp IN (...) exp NOT IN (...) op est un s opérateurs =,!=, <, >, <=, >=. où 3.12 Exemple s employés gagnant plus que tous les employés du département Liste 26 CHAPITRE 3. INTERROGATIONS 3.6. SOUS-INTERROGATION 25 Jointures et sous-interrogations peuvent se combiner. sections suivantes exposent les divers aspects ces sous-interrogations Sous-interrogation à une ligne et une colonne où op est un s opérateurs =!= < > <= >= exp est toute expression légale. NOME = 'FREMONT') : une sous-interrogation à une seule ligne doit ramener une seule Attention ; dans le cas où plusieurs lignes, ou pas ligne du tout seraient rame- ligne nées, un message d'erreur sera aché et l'interrogation sera abandonnée Sous-interrogation ramenant plusieurs lignes ou s OR. NOME, POSTE, SAL

17 : 30 NOME, SAL FROM EMP SAL > ALL ( SAL FROM EMP DEPT=30) 3.6 Remarque IN est équivalent à = ANY, et l'opérateur NOT IN est L'opérateur est possible synchroniser une sous-interrogation avec l'interrogation Il principale. les exemples précénts, la sous-interrogation pouvait être évaluée Dans puis le résultat utilisé pour exécuter l'interrogation principale. SQL d'abord, également traiter une sous-interrogation faisant référence à une colonne sait la table l'interrogation principale. traitement dans ce cas est plus complexe car il faut évaluer la sousinterrogation pour chaque ligne l'interrogation principale Exemple s employés ne travaillant pas dans le même département que Liste supérieur. leur NOME FROM EMP E DEPT!= ( DEPT FROM EMP MATR = E.SUP) a fallu renommer la table EMP l'interrogation principale pour Il la référencer dans la sous-interrogation. pouvoir est possible comparer le résultat d'un ramenant plusieurs Il à une liste colonnes. liste colonnes gurera entre paren- colonnes à gauche l'opérateur comparaison. thèses une seule ligne sélectionnée : Avec (exp, exp,...) op (...) plusieurs lignes sélectionnées : Avec (exp, exp,...) op ANY (...) (exp, exp,...) op ALL (...) (exp, exp,...) IN (...) (exp, exp,...) NOT IN (...) op est un s opérateurs = ou!= où expressions gurant dans la liste entre parenthèses seront comparées 3.14 Exemple ayant même poste et même salaire que MERCIER : Employés NOME, POSTE, SAL FROM EMP (POSTE, SAL) = POSTE, SAL FROM EMP ( NOME = 'MERCIER') peut utiliser ce type sous-interrogation pour retrouver les lignes corresponnt à s optima sur certains critères pour s regroupements qui clause EXISTS est suivie d'une sous-interrogation entre parenthèses, prend la valeur vrai s'il existe au moins une ligne satisfaisant les conditions et 3.15 Exemple NOMD FROM DEPT EXISTS ( NULL FROM EMP DEPT = DEPT.DEPT AND SAL > 10000); interrogation liste le nom s départements qui ont au moins Cette employé ayant plus comme salaire ; pour chaque ligne un la sous-interrogation synchronisée est exécutée et si au moins DEPT ligne est trouvée dans la table EMP, EXISTS prend la valeur vrai une on peut utiliser IN à la place la clause EXISTS. Essayez sur Souvent précént. l'exemple 3.7 Remarque faut se méer lorsque l'on utilise EXISTS en présence valeurs Il Si on veut par exemple les employés qui ont la plus gran NULL. par la requête suivante, commission nome from emp e1 select not exists where matr from emp (select comm > e1.comm) where 28 CHAPITRE 3. INTERROGATIONS 3.6. SOUS-INTERROGATION 27 à celles qui sont ramenées par le. équivalent à!= ALL Sous-interrogation synchronisée lignes (voir un exemple dans 3.8) Clause EXISTS la sous-interrogation Sous-interrogation ramenant plusieurs colonnes et la ligne DEPT satisfait les critères l'interrogation. (exp, exp,...)

18 aura en plus dans la liste tous les employés qui ont une commission on NULL. EXISTS permet spécier s prédicats où le mot tous intervient NOT un sens comparable à celui l'exemple suivant. Elle permet d'obtenir dans division ux relations. la rappelle que la division R par S sur l'attribut B (notée R B S, R S s'il n'y a pas d'ambiguïté sur l'attribut B) est la relation D dénie ou : par R[A] / 8 b 2 S, (a,b) 2 R = {a 2 R[A] / 69b 2 S, (a,b) 62 R D={a2 une traduction mot à mot cette rnière dénition en langage Faisons : SQL A from R select not exists where C from S (select not exists where A, B from R (select fait, on peut remplacer les colonnes s select placés rrière s not En par ce que l'on veut puisque seule l'existence ou non d'une ligne exists peut écrire par exemple : compte. A from R R1 select not exists where null from S (select not exists where null from R (select arrive souvent à optimiser ce type select en utilisant les spécicités cas. Voyons un exemple concret : la réponse à la question Quels sont les du qui participent à tous les projets? est fourni par R Dept Soù départements = (PARTICIPATION J{Matr EMP) [Dept, CoP] (J{Matr indique R jointure sur l'attribut Matr) et S = PROJET [CoP] une traduction donne (en remplaçant presque mot à mot R par PARTI- EMP et par la condition jointure PARTICIPATION.Matr = CIPATION, S par PROJET, A par EMP.Dept, B par PARTICIPATION.CoP EMP.Matr, C par PROJET.CoP) : et DEPT FROM PARTICIPATION, EMP E1 NOT EXISTS AND CODEP FROM PROJET ( NOT EXISTS DEPT, CODEP FROM PARTICIPATION, EMP ( PARTICIPATION.MATR = EMP.MATR DEPT = E1.DEPT AND CODEP = PROJET.CODEP)) AND ce cas particulier on voit qu'il est inutile travailler sur la jointure Sur et EMP pour le externe. peut travailler PARTICIPATION la table DEPT. Il en est même sur tous les cas où la table R est une sur D'après cette remarque, le précént vient: jointure. DEPT FROM DEPT NOT EXISTS CODEP FROM PROJET ( NOT EXISTS DEPT, CODEP FROM PARTICIPATION, EMP ( PARTICIPATION.MATR = EMP.MATR Fonctions groupes 3.7 fonctions groupes peuvent apparaître dans le Select ou le Having 3.9) ; ce sont les fonctions suivantes : (voir moyenne AVG 3.16 Exemples COUNT(*) FROM EMP (a) SUM(COMM) FROM EMP (b) DEPT = 10 valeurs NULL sont ignorées par les fonctions groupe. Ainsi, SUM(col) la somme s valeurs qui ne sont pas égales à NULL la colonne 'col'. est même, AVG est la somme s valeurs non NULL divisée par le nombre De valeurs non NULL. 30 CHAPITRE 3. INTERROGATIONS 3.6. SOUS-INTERROGATION 29 Division avec la clause EXISTS R1 AND DEPT = DEPT.DEPT AND CODEP = PROJET.CODEP)) where A = R1.A and B = S.C)) somme SUM MIN plus petite s valeurs plus gran s valeurs MAX VARIANCE variance écart type (déviation standard) STDDEV COUNT(*) nombre lignes where A = R1.A and B = S.C)) nombre valeurs non nulles la colonne COUNT(col) COUNT(DISTINCT col) nombre valeurs non nulles diérentes PARTICIPATION.MATR = EMP.MATR

19 faut remarquer qu'à un niveau profonur (relativement aux sousinterrogations), Il d'un, les fonctions groupe et les colonnes doivent toutes du même niveau regroupement. Par exemple, si on veut le nom être le salaire s employés qui gagnent le plus dans l'entreprise, la requête et provoquera une erreur : suivante NOME, SAL FROM EMP faut une sous-interrogation car MAX(SAL) n'est pas au même niveau Il que le simple SAL : regroupement NOME, SAL FROM EMP SAL = ( MAX(SAL) FROM EMP) Clause GROUP BY 3.8 est possible subdiviser la table en groupes, chaque groupe étant Il s lignes ayant une valeur commune. l'ensemble BY exp1, exp2,... GROUP en une seule ligne toutes les lignes pour lesquelles exp1, exp2,... ont la groupe valeur. Cette clause se place juste après la clause, ou après même clause FROM si la clause n'existe pas. la lignes peuvent être éliminées avant que le groupe ne soit formé grâce Des 3.17 Exemples DEPT, COUNT(*) FROM EMP (a) BY DEPT GROUP DEPT, COUNT(*) FROM EMP (b) POSTE = 'SECRETAIRE' BY DEPT GROUP DEPT, POSTE, COUNT(*) FROM EMP (c) BY DEPT, POSTE GROUP NOME, DEPT FROM EMP (d) (DEPT, SAL) = DEPT, MAX(SAL) FROM EMP ( BY DEPT) GROUP : RESTRICTION la liste s colonnes résultat d'un groupe ne peuvent Dans que s caractéristiques groupe, c'est-à-dire : gurer soit s fonctions groupe, soit s expressions gurant dans le GROUP BY. exemple l'ordre suivant est invali : Par NOMD, SUM(SAL) FROM EMP, DEPT EMP.DEPT = DEPT.DEPT NOMD, SUM(SAL) FROM EMP, DEPT EMP.DEPT = DEPT.DEPT Clause HAVING 3.9 prédicat HAVING à préciser quels groupes doivent être sélectionnés. sert se place après la clause GROUP BY. Elle prédicat suit la même syntaxe que celui la clause. Cependant, il ne peut porter que sur s caractéristiques groupe : fonction 3.18 Exemple DEPT, COUNT(*) FROM EMP POSTE = 'SECRETAIRE' BY DEPT GROUP peut évimment combiner toutes les clauses, s jointures et s requête suivante donne le nom du département (et sous-interrogations. NOMD Departement, COUNT(*) "Nombre secretaires" EMP, DEPT FROM EMP.DEPT = DEPT.DEPT AND POSTE = 'SECRETAIRE' BY NOMD GROUP COUNT(*) = HAVING MAX(COUNT(*)) FROM EMP ( POSTE = 'SECRETAIRE' BY DEPT) GROUP remarquera que la rnière sous-interrogation est indispensable car n'est pas au même niveau regroupement que les autres MAX(COUNT(*)) 32 CHAPITRE 3. INTERROGATIONS 3.8. CLAUSE GROUP BY 31 GROUP BY DEPT.DEPT Il aurait fallu écrire : SAL = MAX(SAL) GROUP BY NOMD groupe ou expression gurant dans la clause GROUP BY. à la clause. HAVING COUNT(*) > 1 son nombre secrétaires) qui a le plus secrétaires : expressions du premier.

20 Fonctions 3.10 allons décrire ci-ssous les principales fonctions disponibles dans Nous Il faut remarquer que ces fonctions ne sont pas standardisées et ne Oracle. pas toutes disponibles dans les autres SGBD. sont -1 si n<0, 0sin=0, 1sin>0 SIGN(n) racine carrée n SQRT(n) format) convertit n en chaîne caractères (voir ) TO_CHAR(n, convertit la chaîne caractères en numérique TO_NUMBER(chaîne) 3.19 Exemple du salaire journalier : Calcul val1, res1 [,val2, res2,...], faut) DECODE(crit, choisir une valeur parmi une liste d'expressions, en fonction la permet prise par une expression servant critère sélection : elle prend la valeur res1 si l'expression crit a la valeur val1, prend la valeur res2 si crit valeur la valeur val2,... ; si l'expression crit n'est égale à aucune s expressions a val2..., DECODE prend la valeur faut par défaut. val1, expressions résultat (res1, res2, faut) peuvent être types diérents : caractère et numérique, ou caractère et date (le résultat est du type la première expression rencontrée dans le DECODE). expression val et res peuvent être soit s constantes, soit s 3.20 Exemple s employés avec leur catégorie (présint = 1, directeur = 2, Liste = 3) : autre NOME, DECODE(POSTE, 'PRESIDENT', 1, 'DIRECTEUR', 2, 3) LENGTH(chaîne) comme valeur la longueur la chaîne. prend position [,longueur]) SUBSTR(chaîne, la chaîne chaîne une sous-chaîne longueur longueur commençant extrait position position la chaîne. en paramètre longueur est facultatif : par défaut, la sous-chaîne va jusqu'à la chaîne. l'extrémité sous-chaîne [,pos [,n]]) INSTR(chaîne, comme valeur la position la sous-chaîne dans la chaîne (les positions prend à partir 1). 0 signie que la sous-chaîne n'a pas été trouvée sontnumérotées la chaîne. dans recherche commence à la position pos la chaîne (paramètre facultatif vaut 1 par défaut). Une valeur négative pos signie une position par qui à la n la chaîne. rapport rnier paramètre n permet rechercher la nième occurrence la dans la chaîne. Ce paramètre facultatif vaut 1pardéfaut. sous-chaîne 3.21 Exemple du uxième 'A' dans les postes : Position convertit les minuscules en majuscules UPPER(chaîne) convertit les majuscules en minuscules LOWER(chaîne) long [,car]) LPAD(chaîne, (ou tronque) chaîne à la longueur long. chaîne est complétée à complète par le caractère (ou la chaîne caractères) car. gauche paramètre car est optionnel. Par défaut, chaîne est complétée par s espaces. long [,car]) a une fonction analogue, chaîne étant com- RPAD(chaîne, à droite. plétée : LPAD (NOME, 10, '.') FROM EMP Exemple car) LTRIM(chaîne, les caractères à l'extrémité gauche la chaîne chaîne tant qu'ils supprime à l'ensemble caractères car. appartiennent car) RTRIM(chaîne, une fonction analogue, les caractères étant supprimés à l'extrémité droite a la chaîne. : supprimer les A et les M en tête s noms : Exemple LTRIM(NOME,'AM') FROM EMP car_source, car_cible) TRANSLATE(chaîne, et car_cible sont s chaînes caractères considérées comme car_source 34 CHAPITRE 3. INTERROGATIONS FONCTIONS Fonctions arithmétiques valeur absolue n ABS(n) MOD(n1, n2 ) n1 modulo n2 n à la puissance e POWER(n, e) arrondit n à la précision p (0 par défaut) ROUND(n[, p]) tronque n à la précision p (0 par défaut) TRUNC(n[, p]) maximum n1, n2,... GREATEST(n1, n2,...) LEAST(n1, n2,...) minimum n1, n2,... INSTR (POSTE, 'A', 1, 2) FROM EMP NOME, ROUND(SAL/22, 2) FROM EMP Fonctions chaînes caractères colonnes ou même s expressions résultats fonctions.

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin Université de Nice Sophia-Antipolis Langage SQL version 5.7 du polycopié Richard Grin 4 janvier 2008 Table des matières Présentation du polycopié vi 1 Introduction 1 1.1 Présentation de SQL.......................

Plus en détail

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

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

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

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

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

Pour les débutants. langage de définition des données Pour les débutants SQL : langage de définition des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

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

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble. Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables

Plus en détail

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

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

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

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

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

TP3 : Creation de tables 1 seance

TP3 : Creation de tables 1 seance Universite de Versailles IUT de Velizy - Algorithmique 2005/2006 TP3 : Creation de tables 1 seance Objectif : Creation et modication de tables dans une base de donnees. Avant de commencer ce TP, terminer

Plus en détail

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

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

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

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 Plan Bases de Données L3 Info Céline Rouveirol 2010-2011 Bases de Données 1 / 77 Sources des transparents Bases de Données 2 / 77 Bases de SQL - M.P. Dorville/F. Goasdoué, LRI, Université Paris Sud - V.

Plus en détail

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Un modèle de données définit un mode de représentation de l information selon trois composantes : 1. Des structures de données. 2. Des contraintes qui permettent

Plus en détail

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

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

MySQL / SQL EXEMPLES

MySQL / SQL EXEMPLES MySQL_exemples_janv04_mpT EXEMPLES 1 MySQL / SQL EXEMPLES Typologie du langage Il est possible d'inclure des requêtes SQL dans un programme écrit dans un autre langage (en langage C par exemple), ainsi

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

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

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Bases de données Cours 4 : Le langage SQL pour ORACLE

Bases de données Cours 4 : Le langage SQL pour ORACLE Cours 4 : Le langage SQL pour ORACLE POLYTECH Université d Aix-Marseille odile.papini@univ-amu.fr http://odile.papini.perso.esil.univmed.fr/sources/bd.html Plan du cours 1 Introduction 2 Identificateurs

Plus en détail

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

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF 2008-2009 TD : Requêtes SQL (BDR.TD2-1) INSA 3IF 2008-2009 Loïc Maisonnasse 1 Objectif Ce TD a pour objectif de vous familiariser avec le langage de requêtes SQL. Et de vous apprendre à écrire des requêtes SQL pour

Plus en détail

Bases de données et sites WEB

Bases de données et sites WEB Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

FileMaker 13. Guide de référence SQL

FileMaker 13. Guide de référence SQL FileMaker 13 Guide de référence SQL 2013 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker et Bento sont des marques commerciales de

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

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

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

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

Partie 0 : Gestion des tablespace et des utilisateurs... 3 Sommaire Partie 0 : Gestion des tablespace et des utilisateurs... 3 1- Créer deux TableSpaces votre_nom-tbs et Votre_nom-TempTBS :... 3 2. Créer un utilisateur qui porte votre nom :... 3 3. Attribuer à

Plus en détail

MODE OPERATOIRE OPENOFFICE BASE

MODE OPERATOIRE OPENOFFICE BASE MODE OPERATOIRE OPENOFFICE BASE Openoffice Base est un SGBDR : Système de Gestion de Base de Données Relationnelle. L un des principaux atouts de ce logiciel est de pouvoir gérer de façon efficace et rapide

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours Bilan : Des vues à PL/SQL corrigé Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Cas exemple 2 Les tables... 3 Vues et index 4 Privilèges 5 Fonctions

Plus en détail

I. MySQL : Serveur et SGBD

I. MySQL : Serveur et SGBD Le Système de Gestion de Base de Données MySQL I. MySQL : Serveur et SGBD Menu I. MySQL : Serveur et SGBG II. Création d'une base de données avec MySQL MySQL est un système de gestion et conception de

Plus en détail

SOMMAIRE. Travailler avec les requêtes... 3

SOMMAIRE. Travailler avec les requêtes... 3 Access Les requêtes SOMMAIRE Travailler avec les requêtes... 3 A) Créer une requête sélection en mode QBE... 3 B) Exécuter une requête à partir du mode Modifier (QBE)... 3 C) Passer du mode Feuille de

Plus en détail

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

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

Les BASES de DONNEES dans WampServer

Les BASES de DONNEES dans WampServer Les BASES de DONNEES dans WampServer 1 Définitions Générales Une base de données (BDD) permet d'enregistrer, de stocker, de ranger des données de façon organisée et hiérarchisée. SQL est le langage qui

Plus en détail

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

Gestion des transactions et accès concurrents dans les bases de données relationnelles Gestion des transactions et accès concurrents dans les bases de données relationnelles Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Fev.

Plus en détail

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 2013 SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 Table des matières Signalétique... 2 1 Les bases du SQL... 3 2 SQL server... 6 2 Références des exercices...21 DEHECQ Olivier

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Gestion des utilisateurs et de leurs droits

Gestion des utilisateurs et de leurs droits Gestion des utilisateurs et de leurs droits Chap. 12, page 323 à 360 Lors de la création d'un utilisateur vous devez indiquer son nom, ses attributs, son profil, la méthode d'authentification (par le SE

Plus en détail

Optimisation SQL. Quelques règles de bases

Optimisation SQL. Quelques règles de bases Optimisation SQL Quelques règles de bases Optimisation des ordres SQL Page 2 1. QUELQUES RÈGLES DE BASE POUR DES ORDRES SQL OPTIMISÉS...3 1.1 INTRODUCTION...3 1.2 L OPTIMISEUR ORACLE...3 1.3 OPTIMISEUR

Plus en détail

Compétences Business Objects - 2014

Compétences Business Objects - 2014 Compétences Business Objects - 2014 «Mars-Juin 2014. Réf : Version 1 Page 1 sur 34 Sommaire CONTEXTE DE LA REMISE A NIVEAU EN AUTOFORMATION... 3 1. MODELISATION... 4 1.1 DESCRIPTION FONCTIONNEL DE L'APPLICATION

Plus en détail

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

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

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

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

I4 : Bases de Données

I4 : Bases de Données I4 : Bases de Données Passage de UML au modèle relationnel Georges LOUIS Département Réseaux et Télécommunications Université de La Rochelle Module I4 2008-2009 1 G.Louis Sommaire 1 Des classes aux tables

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

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

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres. INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES Durée : 1h30 Date : 17/05/2006 Coordonnateurs : Amel Bouzeghoub et Bruno Defude Documents autorisés : ceux distribués en cours Avertissements

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée: MySQL avec Mac OS X MySQL est un moteur de bases de données relationnelles (SGBDR système de gestion de bases de données relationnelles) basé sur le langage SQL. Il s'agit d'un langage normalisé de requêtes

Plus en détail

Exercices sur SQL server 2000

Exercices sur SQL server 2000 Exercices sur SQL server 2000 La diagramme de classe : Exercices sur SQL server 2000 Le modèle relationnel correspondant : 1 Créer les tables Clic-droit on Tables et choisir «New Table» Créer la table

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Introduction aux bases de données. Généralités sur les bases de données. Fonctions d'un SGBD. Définitions. Indépendance par rapport aux traitements

Introduction aux bases de données. Généralités sur les bases de données. Fonctions d'un SGBD. Définitions. Indépendance par rapport aux traitements Introduction aux bases de données Université de Nice Sophia-Antipolis Version 2.1-5/12/2000 Richard Grin Généralités sur les bases de données R. Grin SGBD 2 Définitions Une base de données est un ensemble

Plus en détail

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes. Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger

Plus en détail

Cours: Administration d'une Base de Données

Cours: Administration d'une Base de Données Bases de Données Avancées Module A IUT Lumière, License CE-STAT 2006-2007 Pierre Parrend Cours: Administration d'une Base de Données Table of Contents Principes...1 Structure d'un Base de Données...1 Architecture...1

Plus en détail

Compte-rendu de projet de Système de gestion de base de données

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/62 Bases de Données Avancées Introduction & Rappel Conception et Modélisation Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

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

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste Christian Soutou Avec la participation d Olivier Teste SQL pour Oracle 4 e édition Groupe eyrolles, 2004, 2005, 2008, 2010, is BN : 978-2-212-12794-2 Partie III SQL avancé La table suivante organisée en

Plus en détail

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

Bases de données et sites WEB Licence d informatique LI345 Bases de données et sites WEB Licence d informatique LI345 Anne Doucet Anne.Doucet@lip6.fr http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet

Plus en détail

Présentation du module Base de données spatio-temporelles

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

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

INTRODUCTION : Données structurées et accès simplifié INTRODUCTION : Données structurées et accès simplifié À l'origine de l'informatique, le stockage d'information se faisait sur cartes perforées. Ces supports pauvres ne permettaient pas de définir la structuration

Plus en détail

16H Cours / 18H TD / 20H TP

16H Cours / 18H TD / 20H TP INTRODUCTION AUX BASES DE DONNEES 16H Cours / 18H TD / 20H TP 1. INTRODUCTION Des Fichiers aux Bases de Données 2. SYSTEME DE GESTION DE BASE DE DONNEES 2.1. INTRODUCTION AUX SYSTEMES DE GESTION DE BASES

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

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

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012 Initiation à SQL Le langage de communication avec une base de données relationnelles Application avec PostgreSQL Nathalie Camelin 2011/2012 Université du Maine Institut Claude Chappe D'après Levy Estève

Plus en détail

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche (sebastien@nameche.fr)

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche (sebastien@nameche.fr) Support de cours Introduction à SQL et MySQL 2003, Sébastien Namèche (sebastien@nameche.fr) Licence de Libre Diffusion des Documents -- LLDD version 1 (Par Bernard Lang, http://pauillac.inria.fr/~lang/licence/lldd.html)

Plus en détail

Intégrité des données

Intégrité des données . Contraintes d intégrité : Définition et objectif Intégrité des données Définition des contraintes Vérification des contraintes Contrainte d'intégrité : propriété sémantique que doivent respecter les

Plus en détail

Mejdi BLAGHGI & Anis ASSÈS

Mejdi BLAGHGI & Anis ASSÈS Ministère de l Enseignement Supérieur, de la Recherche Scientifique et de la Technologie Direction Générale des Etudes Technologiques Institut Supérieur des Etudes Technologiques de Djerba Support de Cours

Plus en détail

Optimisations des SGBDR. Étude de cas : MySQL

Optimisations des SGBDR. Étude de cas : MySQL Optimisations des SGBDR Étude de cas : MySQL Introduction Pourquoi optimiser son application? Introduction Pourquoi optimiser son application? 1. Gestion de gros volumes de données 2. Application critique

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

Historisation des données

Historisation des données Historisation des données Partie 1 : mode colonne par Frédéric Brouard, alias SQLpro MVP SQL Server Expert langage SQL, SGBDR, modélisation de données Auteur de : SQLpro http://sqlpro.developpez.com/ "SQL",

Plus en détail

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

Cours SQL. Base du langage SQL et des bases de données Cours SQL Base du langage SQL et des bases de données Auteur Tony Archambeau Site web http://sql.sh Date 24 mai 2014 Licence Mis à disposition selon les termes de la licence Creative Commons Attribution

Plus en détail

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

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

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

Partie II Cours 3 (suite) : Sécurité de bases de données Partie II Cours 3 (suite) : Sécurité de bases de données ESIL Université de la méditerranée Odile.Papini@esil.univ-mrs.fr http://odile.papini.perso.esil.univmed.fr/sources/ssi.html Plan du cours 1 Introduction

Plus en détail

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

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Transactions Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Cours Internet et Outils: [1/12] Intro, Internet, Web, XHTML (2H) [2/12] XHTML(2H) [3/12]

Plus en détail

TD n 10 : Ma première Base de Données

TD n 10 : Ma première Base de Données TD n 10 : Ma première Base de Données 4 heures Rédigé par Pascal Delahaye 11 mars 2015 Le but de ce TD est de découvrirles principales fonctions d OpenOffice Base, le systèmede gestion de bases de données

Plus en détail

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

Intégrité sémantique dans les bases de données relationnelles Intégrité sémantique dans les bases de données relationnelles 1 - Intégrité sémantique Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU Ecole Polytechnique Universitaire de Marseille Fev. 2013

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

Support de cours «SGBD»

Support de cours «SGBD» Direction Générale Institut Supérieur des Des Etudes Technologiques Etudes ******** DGET ******* Technologiques du Kef Support de cours «SGBD» Réalisé par : BOUKCHIM Mosaab (AT-Iset de Kef) HOSNI Anis

Plus en détail

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

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry Cours 3 Développement d une application BD 1 Plan du cours Gestion de la sécurité des données Optimisation des schémas de bases via la dénormalisation Utilisation de vues Placement du code applicatif dans

Plus en détail

Créer une base de données

Créer une base de données Access Créer une base de données SOMMAIRE Généralités sur les bases de données... 3 Création de la base de données... 4 A) Lancement d'access... 4 B) Enregistrement de la base de données vide... 4 Création

Plus en détail

1. Base de données SQLite

1. Base de données SQLite Dans ce TP, nous allons voir comment créer et utiliser une base de données SQL locale pour stocker les informations. La semaine prochaine, ça sera avec un WebService. On repart de l application AvosAvis

Plus en détail

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

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN Département Informatique Laboratoires de bases de données Laboratoire n 6 Programmation SQL par Danièle BAYERS et Louis SWINNEN Ce document est disponible sous licence Creative Commons indiquant qu il

Plus en détail

Vincent Augusto 2010-2011

Vincent Augusto 2010-2011 le des Systèmes Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne 2010-2011 Un 1/73 le des Un 2/73 1 2 3 4 le 5 6 7 8 Un le des Un 3/73 Contenu du cours : Techniques pour l analyse

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage

Plus en détail

Les Utilisateurs dans SharePoint

Les Utilisateurs dans SharePoint Les Utilisateurs dans SharePoint La gestion des utilisateurs dans SharePoint SharePoint dont le cœur est l'outil collaboratif, Windows SharePoint Services. Chaque utilisateur (ou collaborateur) peut créer

Plus en détail

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

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées ANNEE 2014 / 2015 Désignation de l enseignement : Bases de données Nom du document : TP SQL sous PostgreSQL Rédacteur :

Plus en détail

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f PGDay Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f Réplication Réplications, disponibilités, durabilités Evolution dans la base de données : Postgres 8.2 : warm standby Postgres 9.0 : hot

Plus en détail

LE LANGAGE SQL2 1. INTRODUCTION

LE LANGAGE SQL2 1. INTRODUCTION LE LANGAGE SQL2 1. INTRODUCTION Les serveurs de données relationnels présentent aujourd hui une interface externe sous forme d un langage de recherche et mise à jour, permettant de spécifier les ensembles

Plus en détail

Master Exploration Informatique des données DataWareHouse

Master Exploration Informatique des données DataWareHouse Master Exploration Informatique des données DataWareHouse Binôme Ahmed BENSI Enseignant tahar ARIB SOMMAIRE I. Conception...1 1. Contexte des contrats...1 2. Contexte des factures...1 II. Modèle physique...2

Plus en détail